From f1f0407460e6a098f37793dbeda76984e445289a Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 14 Oct 2024 02:34:16 +0000 Subject: [PATCH] GitHub Actions Build: 979 [ci skip] --- docs/search-index.js | 2 +- docs/sitemap.xml | 516 +++++++++++++++++++++---------------------- 2 files changed, 259 insertions(+), 259 deletions(-) diff --git a/docs/search-index.js b/docs/search-index.js index 7fb67f76..7e8e1acf 100644 --- a/docs/search-index.js +++ b/docs/search-index.js @@ -1 +1 @@ -antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1-1",[0,39.238,1,51.636]],["name/1-1",[]],["text/1-1",[]],["component/1-1",[]],["title/1",[2,44.313,3,31.597]],["name/1",[2,0.789,3,0.563]],["text/1",[0,2.842,1,6.745,2,1.976,3,4.127,4,1.924,5,1.42,6,1.66,7,0.849,8,1.724,9,3.707,10,2.216,11,6.166,12,4.598,13,1.126,14,1.431,15,1.772,16,3.644,17,4.289,18,4.857,19,2.06,20,1.924,21,3.064,22,2.735,23,1.549,24,2.992,25,2.504,26,1.388,27,3.064,28,2.906,29,2.159,30,3.048,31,1.859,32,2.248,33,3.574,34,2.408,35,2.978,36,1.504,37,2.022,38,1.886,39,3.064,40,1.143,41,3.064,42,1.513,43,2.786,44,3.064,45,2.501,46,2.419,47,3.064,48,4.43,49,2.394,50,5.958,51,3.064,52,1.594,53,3.064,54,3.048,55,3.064,56,3.356,57,3.109,58,3.41,59,3.064,60,3.41,61,3.064,62,2.843,63,2.159,64,4.018,65,2.263,66,3.064,67,3.064,68,2.01,69,2.504,70,2.607,71,1.794,72,3.064,73,3.064,74,2.735,75,2.607,76,2.086,77,1.934]],["component/1",[7,0.401]],["title/2-1",[78,56.976]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[45,41.22]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[79,41.345]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2-4",[80,62.807]],["name/2-4",[]],["text/2-4",[]],["component/2-4",[]],["title/2-5",[81,84.764]],["name/2-5",[]],["text/2-5",[]],["component/2-5",[]],["title/2-6",[11,37.709,12,34.172,82,44.029]],["name/2-6",[]],["text/2-6",[]],["component/2-6",[]],["title/2-7",[83,47.73,84,18.35,85,52.752]],["name/2-7",[]],["text/2-7",[]],["component/2-7",[]],["title/2-8",[9,61.1]],["name/2-8",[]],["text/2-8",[]],["component/2-8",[]],["title/2-9",[3,27.183,32,26.708,42,29.179]],["name/2-9",[]],["text/2-9",[]],["component/2-9",[]],["title/2-10",[86,46.845]],["name/2-10",[]],["text/2-10",[]],["component/2-10",[]],["title/2-11",[2,44.313,87,48.06]],["name/2-11",[]],["text/2-11",[]],["component/2-11",[]],["title/2-12",[11,37.709,12,34.172,88,20.111]],["name/2-12",[]],["text/2-12",[]],["component/2-12",[]],["title/2-13",[11,43.832,48,42.087]],["name/2-13",[]],["text/2-13",[]],["component/2-13",[]],["title/2-14",[29,25.643,88,20.111,89,52.752]],["name/2-14",[]],["text/2-14",[]],["component/2-14",[]],["title/2-15",[82,38.632,90,26.141,91,33.087,92,34.857]],["name/2-15",[]],["text/2-15",[]],["component/2-15",[]],["title/2-16",[10,23.093,48,31.77,90,26.141,93,32.738]],["name/2-16",[]],["text/2-16",[]],["component/2-16",[]],["title/2-17",[76,35.306,88,17.646,90,26.141,94,34.226]],["name/2-17",[]],["text/2-17",[]],["component/2-17",[]],["title/2-18",[90,29.793,95,42.597,96,31.151]],["name/2-18",[]],["text/2-18",[]],["component/2-18",[]],["title/2-19",[90,26.141,97,37.981,98,36.81,99,28.096]],["name/2-19",[]],["text/2-19",[]],["component/2-19",[]],["title/2-20",[90,26.141,100,47.149,101,27.899,102,31.619]],["name/2-20",[]],["text/2-20",[]],["component/2-20",[]],["title/2-21",[90,26.141,103,42.927,104,28.716,105,24.225]],["name/2-21",[]],["text/2-21",[]],["component/2-21",[]],["title/2-22",[48,28.301,90,23.287,106,32.55,107,35.376,108,35.376]],["name/2-22",[]],["text/2-22",[]],["component/2-22",[]],["title/2-23",[48,42.087,88,23.377]],["name/2-23",[]],["text/2-23",[]],["component/2-23",[]],["title/2-24",[88,23.377,109,62.461]],["name/2-24",[]],["text/2-24",[]],["component/2-24",[]],["title/2-25",[7,16.382,110,30.353,111,36.036]],["name/2-25",[]],["text/2-25",[]],["component/2-25",[]],["title/2-26",[110,30.353,112,30.163,113,28.207]],["name/2-26",[]],["text/2-26",[]],["component/2-26",[]],["title/2-27",[102,36.036,110,30.353,111,36.036]],["name/2-27",[]],["text/2-27",[]],["component/2-27",[]],["title/2-28",[48,36.208,105,27.609,110,30.353]],["name/2-28",[]],["text/2-28",[]],["component/2-28",[]],["title/2-29",[52,35.736,114,77.717]],["name/2-29",[]],["text/2-29",[]],["component/2-29",[]],["title/2-30",[29,25.643,88,20.111,89,52.752]],["name/2-30",[]],["text/2-30",[]],["component/2-30",[]],["title/2-31",[48,36.208,88,20.111,115,37.709]],["name/2-31",[]],["text/2-31",[]],["component/2-31",[]],["title/2-32",[110,35.281,116,41.887]],["name/2-32",[]],["text/2-32",[]],["component/2-32",[]],["title/2-33",[7,14.374,52,26.976,117,23.67,118,19.133]],["name/2-33",[]],["text/2-33",[]],["component/2-33",[]],["title/2-34",[52,21.665,92,27.995,110,21.389,112,21.255,113,19.877,119,31.893]],["name/2-34",[]],["text/2-34",[]],["component/2-34",[]],["title/2-35",[11,43.832,54,42.087]],["name/2-35",[]],["text/2-35",[]],["component/2-35",[]],["title/2-36",[29,25.643,88,20.111,89,52.752]],["name/2-36",[]],["text/2-36",[]],["component/2-36",[]],["title/2-37",[3,21.247,90,23.287,91,29.474,105,21.58,120,30.31]],["name/2-37",[]],["text/2-37",[]],["component/2-37",[]],["title/2-38",[82,34.414,90,23.287,92,31.051,93,29.164,121,28.72]],["name/2-38",[]],["text/2-38",[]],["component/2-38",[]],["title/2-39",[17,19.106,18,20.931,90,20.995,94,27.488,102,25.393,122,30.76]],["name/2-39",[]],["text/2-39",[]],["component/2-39",[]],["title/2-40",[17,19.106,18,20.931,90,20.995,95,30.017,123,31.893,124,34.475]],["name/2-40",[]],["text/2-40",[]],["component/2-40",[]],["title/2-41",[56,27.706,88,17.646,90,26.141,97,37.981]],["name/2-41",[]],["text/2-41",[]],["component/2-41",[]],["title/2-42",[88,20.111,99,32.021,113,28.207]],["name/2-42",[]],["text/2-42",[]],["component/2-42",[]],["title/2-43",[110,35.281,116,41.887]],["name/2-43",[]],["text/2-43",[]],["component/2-43",[]],["title/2-44",[105,27.609,110,30.353,115,37.709]],["name/2-44",[]],["text/2-44",[]],["component/2-44",[]],["title/2-45",[11,43.832,60,47.08]],["name/2-45",[]],["text/2-45",[]],["component/2-45",[]],["title/2-46",[29,25.643,88,20.111,89,52.752]],["name/2-46",[]],["text/2-46",[]],["component/2-46",[]],["title/2-47",[17,21.192,18,23.217,60,31.658,90,23.287,91,29.474]],["name/2-47",[]],["text/2-47",[]],["component/2-47",[]],["title/2-48",[90,26.141,93,32.738,110,26.632,125,26.717]],["name/2-48",[]],["text/2-48",[]],["component/2-48",[]],["title/2-49",[82,38.632,90,26.141,92,34.857,94,34.226]],["name/2-49",[]],["text/2-49",[]],["component/2-49",[]],["title/2-50",[76,31.451,88,15.719,90,23.287,95,33.294,126,36.88]],["name/2-50",[]],["text/2-50",[]],["component/2-50",[]],["title/2-51",[76,35.306,88,17.646,90,26.141,97,37.981]],["name/2-51",[]],["text/2-51",[]],["component/2-51",[]],["title/2-52",[90,26.141,100,47.149,127,36.81,128,32.911]],["name/2-52",[]],["text/2-52",[]],["component/2-52",[]],["title/2-53",[88,15.719,90,23.287,103,38.239,113,22.047,129,24.03]],["name/2-53",[]],["text/2-53",[]],["component/2-53",[]],["title/2-54",[88,14.172,90,20.995,102,25.393,106,29.346,122,30.76,130,27.821]],["name/2-54",[]],["text/2-54",[]],["component/2-54",[]],["title/2-55",[88,20.111,99,32.021,113,28.207]],["name/2-55",[]],["text/2-55",[]],["component/2-55",[]],["title/2-56",[110,35.281,116,41.887]],["name/2-56",[]],["text/2-56",[]],["component/2-56",[]],["title/2-57",[7,14.374,32,23.434,42,25.602,87,36.279]],["name/2-57",[]],["text/2-57",[]],["component/2-57",[]],["title/2-58",[131,84.764]],["name/2-58",[]],["text/2-58",[]],["component/2-58",[]],["title/2-59",[132,71,133,46.178]],["name/2-59",[]],["text/2-59",[]],["component/2-59",[]],["title/2-60",[134,33.036]],["name/2-60",[]],["text/2-60",[]],["component/2-60",[]],["title/2-61",[33,39.082,113,32.787]],["name/2-61",[]],["text/2-61",[]],["component/2-61",[]],["title/2-62",[135,37.916]],["name/2-62",[]],["text/2-62",[]],["component/2-62",[]],["title/2-63",[87,32.317,136,13.368,137,24.766,138,23.078,139,18.53]],["name/2-63",[]],["text/2-63",[]],["component/2-63",[]],["title/2-64",[16,50.316,88,23.377]],["name/2-64",[]],["text/2-64",[]],["component/2-64",[]],["title/2-65",[88,17.646,140,58.665,141,40.946,142,30.762]],["name/2-65",[]],["text/2-65",[]],["component/2-65",[]],["title/2-66",[13,25.254,105,32.092]],["name/2-66",[]],["text/2-66",[]],["component/2-66",[]],["title/2-67",[29,29.806,143,41.69]],["name/2-67",[]],["text/2-67",[]],["component/2-67",[]],["title/2-68",[110,30.353,139,23.708,144,28.362]],["name/2-68",[]],["text/2-68",[]],["component/2-68",[]],["title/2-69",[7,16.382,145,42.597,146,34.906]],["name/2-69",[]],["text/2-69",[]],["component/2-69",[]],["title/2",[147,48.764,148,25.631]],["name/2",[10,0.545,42,0.604]],["text/2",[2,0.799,3,1.439,4,0.168,6,1.863,7,1.916,8,1.269,9,0.923,10,2.43,11,2.874,12,1.809,13,1.029,14,0.361,15,0.155,16,2.173,17,1.436,18,0.507,19,0.18,20,0.33,28,0.254,29,0.983,32,1.265,33,0.83,34,1.436,36,0.379,37,0.177,38,0.323,40,0.544,42,1.976,43,0.477,45,0.507,48,3.564,50,0.498,52,2.15,54,2.61,56,0.28,57,0.482,58,0.183,60,2.252,63,1.028,68,0.957,69,0.219,70,1.764,71,0.854,74,0.689,75,0.859,76,1.277,77,0.782,79,0.389,80,1.117,81,0.542,82,2.561,83,0.815,84,0.644,85,0.468,86,0.441,87,1.713,88,1.757,89,0.689,90,1.412,92,1.522,96,0.769,98,1.472,99,2.905,101,1.596,102,2.673,104,0.559,105,2.505,107,0.948,108,0.591,109,0.477,110,2.803,111,4.529,112,0.137,113,3.269,115,2.467,116,2.358,117,2.213,118,1.477,119,0.402,122,1.077,125,0.27,126,3.87,128,0.641,129,0.644,130,0.827,131,1.508,132,0.277,133,0.353,134,1.766,135,0.773,136,0.223,137,0.281,139,0.497,141,0.211,142,0.735,143,1.138,144,0.7,146,0.31,148,0.462,149,0.303,150,0.126,151,0.394,152,0.597,153,0.222,154,0.424,155,0.839,156,0.303,157,3.953,158,0.454,159,0.303,160,0.745,161,1.348,162,0.211,163,0.15,164,0.683,165,1.224,166,2.195,167,0.477,168,0.837,169,0.644,170,0.832,171,1.295,172,1.711,173,0.303,174,0.231,175,0.303,176,0.303,177,0.268,178,1.416,179,0.203,180,0.679,181,0.216,182,0.268,183,0.12,184,0.498,185,0.586,186,0.31,187,0.958,188,0.507,189,0.778,190,0.179,191,0.803,192,0.951,193,0.303,194,1.879,195,0.36,196,0.685,197,1.891,198,0.303,199,1.959,200,0.739,201,0.209,202,0.225,203,0.509,204,0.243,205,0.231,206,1.152,207,0.239,208,0.254,209,0.205,210,0.303,211,1.299,212,0.303,213,0.303,214,1.119,215,0.603,216,0.303,217,0.303,218,0.303,219,0.303,220,0.603,221,0.199,222,0.689,223,0.239,224,0.291,225,0.216,226,0.717,227,0.196,228,0.152,229,0.303,230,0.26,231,1.117,232,0.468,233,0.732,234,0.778,235,0.268,236,0.128,237,0.594,238,0.424,239,0.141,240,0.623,241,0.468,242,0.216,243,1.894,244,0.303,245,0.402,246,0.248,247,2.778,248,0.565,249,0.307,250,0.207,251,0.146,252,0.626,253,0.384,254,0.201,255,0.941,256,0.254,257,0.26,258,0.225,259,0.268,260,0.219,261,0.248,262,1.461,263,0.415,264,1.183,265,0.199,266,0.222,267,0.644,268,0.186,269,0.303,270,0.886,271,0.141,272,0.475,273,0.239,274,0.594,275,0.429,276,0.303,277,0.805,278,0.969,279,0.63,280,0.845,281,0.873,282,0.177,283,0.176,284,1.65,285,0.44,286,0.172,287,0.211,288,0.239,289,0.225,290,0.594,291,1.142,292,1.692,293,0.362,294,4.003,295,0.303,296,0.355,297,1.161,298,0.594,299,0.303,300,0.199,301,1.496,302,0.303,303,0.303,304,0.616,305,0.303,306,0.303,307,0.303,308,0.24,309,0.498,310,1.142,311,0.596,312,0.303,313,2.02,314,0.268,315,1.068,316,0.666,317,0.205,318,0.873,319,0.678,320,1.686,321,1.671,322,0.789,323,1.65,324,0.214,325,0.187,326,1.142,327,1.069,328,0.225,329,0.303,330,0.9,331,0.591,332,0.235,333,0.176,334,0.303,335,1.078,336,1.671,337,0.248,338,0.222,339,0.303,340,1.646,341,0.339,342,1.28,343,0.789,344,0.239,345,0.901,346,0.836,347,1.069,348,0.9,349,2.364,350,0.473,351,0.262,352,0.214,353,0.254,354,0.178,355,0.893,356,0.458,357,0.49,358,0.303,359,1.891,360,0.825,361,1.262,362,0.303,363,0.303,364,0.594,365,1.142,366,0.594,367,0.873,368,0.594,369,0.303,370,0.303,371,0.594,372,1.142,373,0.303,374,0.216,375,0.193,376,0.303,377,0.725,378,0.205,379,1.105,380,0.873,381,0.772,382,0.772,383,1.65,384,0.716,385,1.142,386,0.628,387,0.873,388,0.666,389,0.268,390,0.772,391,0.439,392,0.772,393,0.277,394,0.19,395,0.189,396,0.26,397,0.859,398,0.219,399,0.303,400,0.303,401,0.136,402,0.131,403,0.214,404,0.239,405,0.26,406,0.705,407,0.303,408,0.309,409,0.303,410,0.303,411,0.228,412,0.398,413,0.248,414,0.225,415,0.199,416,0.303,417,0.303,418,0.453,419,0.594,420,0.41,421,0.162,422,0.594,423,1.142,424,0.211,425,0.268,426,0.277,427,0.303,428,0.468,429,0.201,430,0.205,431,0.342,432,0.231,433,0.303,434,0.268,435,0.303,436,0.487,437,0.594,438,0.211,439,0.49,440,0.373,441,0.357,442,0.211,443,0.46,444,0.303,445,0.186,446,0.151,447,0.277,448,0.303,449,0.326,450,0.198,451,0.296,452,0.207,453,0.542,454,0.303,455,0.292,456,0.303,457,0.211,458,0.186,459,0.362,460,0.128,461,0.468,462,0.303,463,0.303,464,0.186,465,0.126,466,0.171,467,1.671,468,0.89,469,0.303,470,1.921,471,0.303,472,0.873,473,0.303,474,0.205,475,0.26,476,0.677,477,0.303,478,0.44,479,1.401,480,0.248,481,2.801,482,1.522,483,1.824,484,0.384,485,0.303,486,0.362,487,1.018,488,0.303,489,0.303,490,0.303,491,0.303,492,0.205,493,0.468,494,0.303,495,1.401,496,0.303,497,0.303,498,0.303,499,0.303,500,1.332,501,0.303,502,0.617,503,0.51,504,1.65,505,0.189,506,0.623,507,0.594,508,0.174,509,0.701,510,0.277,511,0.239,512,0.303,513,0.239,514,0.401,515,0.303,516,0.248,517,0.175,518,0.402,519,0.591,520,0.209,521,0.196,522,0.277,523,0.178,524,0.303,525,0.262,526,0.239,527,0.303,528,0.169,529,0.303,530,0.303,531,0.146,532,0.398,533,0.303,534,0.303,535,0.303,536,0.225,537,0.303,538,0.228,539,0.222,540,0.303,541,0.231,542,0.268,543,0.303,544,1.043,545,0.58,546,0.222,547,0.253,548,0.195,549,0.151,550,0.303,551,0.303,552,0.122,553,0.18,554,0.303,555,0.303,556,0.18,557,0.174,558,0.205]],["component/2",[7,0.401]],["title/3",[32,26.708,45,29.703,130,39.481]],["name/3",[45,0.615,559,1.223]],["text/3",[11,7.147,16,5.09,26,3.148,45,3.492,48,4.257,52,3.615,54,4.257,60,4.762,77,5.752,91,4.434,155,4.112,191,2.974,232,6.202,560,6.95,561,6.95,562,6.95,563,6.95,564,7.182,565,7.861,566,6.95,567,5.374,568,6.95]],["component/3",[7,0.401]],["title/4-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/4-1",[]],["text/4-1",[]],["component/4-1",[]],["title/4-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/4-2",[]],["text/4-2",[]],["component/4-2",[]],["title/4-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/4-3",[]],["text/4-3",[]],["component/4-3",[]],["title/4-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/4-4",[]],["text/4-4",[]],["component/4-4",[]],["title/4-5",[148,25.631,582,61.318]],["name/4-5",[]],["text/4-5",[]],["component/4-5",[]],["title/4-6",[84,9.983,136,9.304,137,17.238,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156]],["name/4-6",[]],["text/4-6",[]],["component/4-6",[]],["title/4-7",[586,53.814]],["name/4-7",[]],["text/4-7",[]],["component/4-7",[]],["title/4",[587,73.205]],["name/4",[587,1.949]],["text/4",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,137,1.771,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303]],["component/4",[7,0.401]],["title/5-1",[7,22.734]],["name/5-1",[]],["text/5-1",[]],["component/5-1",[]],["title/5-2",[4,43.146,7,19.043]],["name/5-2",[]],["text/5-2",[]],["component/5-2",[]],["title/5-3",[239,31.151,308,27.045,629,59.109]],["name/5-3",[]],["text/5-3",[]],["component/5-3",[]],["title/5-4",[7,19.043,8,18.856]],["name/5-4",[]],["text/5-4",[]],["component/5-4",[]],["title/5-5",[7,14.374,104,28.716,117,23.67,118,19.133]],["name/5-5",[]],["text/5-5",[]],["component/5-5",[]],["title/5-6",[118,21.806,402,14.783,583,37.119]],["name/5-6",[]],["text/5-6",[]],["component/5-6",[]],["title/5-7",[402,17.184,630,46.471]],["name/5-7",[]],["text/5-7",[]],["component/5-7",[]],["title/5-8",[14,27.609,183,26.577,349,34.906]],["name/5-8",[]],["text/5-8",[]],["component/5-8",[]],["title/5",[7,19.043,78,47.724]],["name/5",[631,1.45]],["text/5",[2,1.51,5,1.085,7,0.649,8,1.092,9,1.745,11,1.494,13,2.52,14,3.202,17,1.825,24,1.408,29,1.726,32,1.058,34,2.511,52,2.07,57,1.463,71,1.371,84,0.727,86,1.337,104,1.297,105,2.858,112,2.031,117,3.129,118,3.331,125,2.05,126,1.869,129,1.218,134,1.603,136,1.984,138,1.17,139,1.596,144,1.909,148,1.936,150,1.1,153,1.938,155,1.609,160,2.392,161,3.211,163,1.312,178,1.354,181,1.891,186,2.35,196,1.869,214,0.998,224,1.297,226,1.662,234,1.471,247,2.675,264,0.885,275,1.302,280,2.012,282,1.546,286,2.552,292,1.414,296,2.386,301,1.066,308,3.136,315,1.715,316,1.26,320,1.502,338,1.938,401,2.018,402,1.53,421,1.421,445,1.627,455,2.884,458,1.627,460,1.118,514,1.58,523,1.555,525,1.17,526,3.551,552,1.063,557,2.581,580,1.51,604,1.435,632,2.518,633,2.342,634,2.342,635,2.277,636,3.691,637,2.055,638,2.342,639,2.518,640,2.09,641,2.172,642,2.055,643,2.09,644,2.129,645,2.172,646,2.277,647,2.709,648,2.342,649,2.022,650,2.342,651,3.979,652,2.172,653,2.649,654,1.83,655,2.518,656,2.462,657,2.342,658,2.277,659,1.938,660,2.277,661,2.09,662,2.129,663,2.939,664,2.055,665,2.301,666,1.564,667,3.979,668,1.354,669,2.42,670,2.371,671,2.342,672,1.73,673,1.292,674,3.8,675,1.73,676,1.73,677,1.616,678,2.567,679,1.048,680,1.322,681,1.745,682,1.365,683,1.389,684,1.322,685,2.649,686,1.023]],["component/5",[7,0.401]],["title/6-1",[136,19.88,684,38.775]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[88,23.377,142,40.753]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[6,32.021,687,44.832,688,51.858]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[411,58.446,689,52.112]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[136,19.88,137,36.831]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6-6",[487,33.721,680,38.775]],["name/6-6",[]],["text/6-6",[]],["component/6-6",[]],["title/6-7",[236,39.251]],["name/6-7",[]],["text/6-7",[]],["component/6-7",[]],["title/6-8",[3,37.722]],["name/6-8",[]],["text/6-8",[]],["component/6-8",[]],["title/6",[136,23.734]],["name/6",[631,1.45]],["text/6",[0,1.019,3,1.446,4,1.12,5,0.827,6,2.283,7,0.494,8,0.863,12,1.031,15,1.031,17,2.657,18,0.896,29,1.364,30,0.865,32,0.806,34,1.521,35,1.067,36,2.493,38,1.935,40,0.665,52,1.635,54,1.093,57,1.964,68,1.17,69,1.458,77,3.206,84,0.554,86,1.795,88,1.728,91,1.138,93,1.126,99,2.283,110,0.916,112,0.91,113,1.5,117,2.318,121,1.109,123,1.366,125,0.919,133,2.113,134,1.266,135,2.678,136,2.563,137,3.106,138,1.57,139,2.768,142,1.864,148,0.665,155,2.343,157,1.565,160,1.072,166,1.191,171,2.228,172,2.765,178,1.031,179,1.353,183,0.802,192,1.015,196,1.476,211,1.023,214,3.289,226,2.231,248,0.999,249,1.044,252,0.902,264,0.674,272,1.098,283,1.17,286,1.144,294,1.784,297,1.103,301,0.812,308,1.928,309,1.692,319,0.829,327,1.54,331,1.84,333,1.17,335,1.15,340,1.199,377,1.84,381,1.784,391,1.015,402,0.446,411,1.517,412,1.353,421,1.082,443,1.063,446,1.003,455,1.747,458,1.239,487,2.843,505,1.257,509,2.927,536,3.535,547,0.861,548,2.283,549,2.369,552,0.81,556,1.199,557,1.157,583,1.974,593,0.95,608,1.027,612,1.592,622,2.538,636,1.654,663,2.321,665,1.031,668,1.817,673,1.734,674,1.306,679,1.886,680,3.607,682,1.04,683,1.058,684,1.774,689,1.353,690,1.214,691,1.654,692,2.017,693,2.017,694,1.191,695,2.792,696,1.565,697,1.163,698,1.053,699,1.784,700,1.784,701,2.017,702,1.784,703,1.784,704,1.784,705,1.34,706,2.199,707,1.784,708,2.534,709,1.784,710,2.017,711,2.154,712,1.257,713,1.784,714,1.784,715,2.017,716,1.592,717,1.44,718,1.784,719,1.114,720,1.734,721,2.017,722,4.214,723,0.767,724,1.621,725,1.784,726,1.214,727,1.692,728,1.103,729,1.248,730,1.44,731,1.54,732,3.037,733,1.34,734,1.393,735,3.061,736,2.113,737,1.692,738,1.592,739,1.918,740,1.565,741,1.23,742,1.379,743,1.126,744,1.353]],["component/6",[7,0.401]],["title/7-1",[78,56.976]],["name/7-1",[]],["text/7-1",[]],["component/7-1",[]],["title/7-2",[84,18.35,142,35.06,745,32.486]],["name/7-2",[]],["text/7-2",[]],["component/7-2",[]],["title/7",[136,15.007,137,27.802,214,22.092,264,19.605]],["name/7",[137,0.656,214,0.521]],["text/7",[8,2.362,30,2.459,34,2.452,86,2.894,105,2.367,117,3.344,118,1.869,129,2.635,135,3.387,136,2.12,137,3.928,142,5.105,144,2.431,155,2.963,168,2.905,183,2.278,214,2.158,249,2.966,264,1.915,278,3.364,391,2.882,487,2.487,514,2.012,536,4.25,630,3.427,666,3.384,717,4.091,719,3.166,720,4.926,726,3.449,743,3.198,746,2.33,747,5.731,748,5.731,749,5.731,750,5.731,751,4.375,752,4.876,753,5.731,754,2.452,755,4.375,756,3.808,757,5.067,758,4.194,759,5.731,760,3.843,761,5.731,762,4.141,763,4.194,764,3.918,765,3.958,766,3.711]],["component/7",[7,0.401]],["title/8-1",[52,30.744,350,36.208,680,33.358]],["name/8-1",[]],["text/8-1",[]],["component/8-1",[]],["title/8-2",[3,19.155,84,12.931,112,21.255,487,20.443,673,22.977,680,23.507]],["name/8-2",[]],["text/8-2",[]],["component/8-2",[]],["title/8-3",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/8-3",[]],["text/8-3",[]],["component/8-3",[]],["title/8-4",[502,40.851]],["name/8-4",[]],["text/8-4",[]],["component/8-4",[]],["title/8",[136,17.103,487,29.01,680,33.358]],["name/8",[487,0.6,680,0.69]],["text/8",[3,1.813,5,1.074,8,0.636,13,1.449,14,1.082,17,2.361,18,1.164,20,1.455,29,2.233,32,1.047,34,1.121,35,4.076,38,2.427,52,2.051,84,3.014,86,1.323,101,3.268,112,2.012,117,3.108,118,1.899,125,2.651,134,2.446,136,2.144,157,2.032,168,1.328,170,1.557,171,2.721,172,2.456,178,1.339,180,1.557,195,1.587,196,2.852,214,1.679,226,2.798,248,2.208,252,1.993,255,1.494,263,2.121,277,1.278,279,1.178,286,1.486,294,2.316,297,2.439,301,1.795,309,2.197,319,1.076,327,2,331,2.308,340,1.557,381,2.316,391,2.927,402,0.986,443,1.38,446,1.302,455,4.118,458,1.609,487,2.526,505,1.632,508,1.502,547,1.118,548,1.683,549,1.302,552,1.052,583,2.476,604,3.153,608,1.334,622,3.183,665,1.339,666,1.547,673,2.839,678,1.494,679,3.047,680,3.844,682,1.35,683,1.374,686,2.654,708,2.37,712,1.632,729,1.62,730,1.87,731,2,732,3.709,733,1.741,734,1.81,735,3.738,736,2.65,737,2.197,738,2.067,739,2.491,740,2.032,741,1.598,742,1.791,743,1.462,744,1.757,745,1.273,768,1.893,769,2.491,770,2.316,771,2.032,772,1.557,773,1.669,774,1.725,775,1.943,776,2.316,777,2.316,778,2.316,779,3.527,780,2.149,781,2.149,782,2.197,783,1.943,784,2.149,785,2.197,786,1.38,787,2.316,788,1.52,789,2.252,790,1.426]],["component/8",[7,0.401]],["title/9",[468,43.669]],["name/9",[631,1.45]],["text/9",[]],["component/9",[7,0.401]],["title/10",[139,27.557,144,32.968]],["name/10",[631,1.45]],["text/10",[791,10.218,792,10.218,793,12.497,794,9.034,795,10.218,796,7.487,797,7.487,798,7.487,799,10.218,800,10.218,801,7.487,802,7.487,803,7.487,804,7.487,805,7.487,806,7.487,807,12.497,808,7.487,809,7.487,810,7.487,811,7.487,812,7.487,813,7.487,814,7.487,815,7.487,816,7.487,817,7.487,818,7.487,819,7.487,820,7.487,821,7.487,822,7.487,823,7.487,824,7.487,825,7.487,826,7.487]],["component/10",[7,0.401]],["title/11-1",[32,31.045,35,41.118]],["name/11-1",[]],["text/11-1",[]],["component/11-1",[]],["title/11",[48,31.77,487,25.454,711,35.539,827,31.324]],["name/11",[48,0.52,544,0.878,545,0.639]],["text/11",[0,2.057,6,1.952,8,1.92,17,2.598,32,1.628,34,1.743,35,2.156,36,1.768,45,2.846,48,4.858,57,4.371,58,3.88,88,1.226,101,4.266,105,2.645,127,2.557,138,2.829,164,3.83,171,1.905,196,2.659,211,3.247,214,1.535,243,2.437,252,3.537,264,1.362,296,3.218,301,2.578,356,2.137,406,2.128,451,2.033,460,1.719,482,2.421,487,2.779,545,5.96,546,4.687,547,3.376,549,2.025,586,2.364,697,3.694,698,2.128,711,2.469,720,3.503,827,3.42,828,4.075,829,5.371,830,2.469,831,4.381,832,4.381,833,5.791,834,4.336,835,2.156,836,6.089,837,6.406,838,4.075,839,6.406,840,3.603,841,2.557,842,4.075,843,4.075,844,3.342,845,4.381,846,3.723,847,3.723,848,3.873,849,4.381,850,2.814,851,3.723,852,4.381,853,3.215,854,2.638,855,4.381,856,4.381,857,4.381,858,4.381]],["component/11",[7,0.401]],["title/12-1",[545,51.636,830,47.08]],["name/12-1",[]],["text/12-1",[]],["component/12-1",[]],["title/12-2",[546,56.867,830,47.08]],["name/12-2",[]],["text/12-2",[]],["component/12-2",[]],["title/12-3",[191,35.099]],["name/12-3",[]],["text/12-3",[]],["component/12-3",[]],["title/12-4",[161,19.905,439,29.317,545,34.721,847,47.743,859,31.451]],["name/12-4",[]],["text/12-4",[]],["component/12-4",[]],["title/12",[84,15.136,139,11.986,214,12.73,545,22.46,546,24.735,828,33.804,829,28.343,836,32.132,847,30.882]],["name/12",[545,0.919,829,1.16]],["text/12",[0,1.569,6,1.488,8,1.858,17,2.087,20,1.725,23,2.3,26,1.244,31,1.667,32,2.631,35,3.484,36,1.348,48,3.566,57,4.23,58,1.882,88,0.935,101,4.349,104,1.521,118,1.013,125,1.415,127,3.228,129,1.429,139,1.102,144,1.318,178,1.588,191,1.946,195,1.882,196,2.734,211,2.608,214,1.938,236,1.314,252,2.3,271,1.443,277,2.509,296,2.092,319,1.276,322,2.146,349,1.622,351,1.372,386,1.707,401,1.393,406,1.71,439,1.743,451,1.55,460,1.311,482,3.913,544,2.838,545,5.638,546,5.603,549,3.806,553,3.913,590,2.336,635,2.67,695,1.51,697,2.967,698,1.622,711,3.117,720,4.422,772,1.846,827,4.531,829,2.605,830,3.99,833,2.273,834,4.458,836,8.066,837,5.145,838,3.107,839,5.145,840,5.822,841,1.949,842,3.107,843,3.107,844,2.548,847,2.838,859,1.87,860,3.34,861,1.752,862,2.218,863,2.451,864,7.294,865,1.629,866,3.34,867,2.011,868,2.67,869,2.273,870,3.34,871,2.064,872,2.497,873,1.995,874,3.34,875,3.34,876,3.34,877,3.34,878,3.34,879,3.34,880,3.34,881,3.34,882,3.34,883,3.34,884,3.34,885,2.953,886,3.34,887,3.34,888,3.34]],["component/12",[7,0.401]],["title/13-1",[3,37.722]],["name/13-1",[]],["text/13-1",[]],["component/13-1",[]],["title/13-2",[102,50.007]],["name/13-2",[]],["text/13-2",[]],["component/13-2",[]],["title/13-3",[139,23.708,296,27.183,514,23.467]],["name/13-3",[]],["text/13-3",[]],["component/13-3",[]],["title/13-4",[90,23.287,391,26.28,859,31.451,889,30.859,890,32.091]],["name/13-4",[]],["text/13-4",[]],["component/13-4",[]],["title/13",[135,37.916]],["name/13",[631,1.45]],["text/13",[3,1.389,5,1.4,8,0.829,10,2.19,14,2.297,17,1.386,29,1.31,31,1.833,37,1.993,38,1.859,40,1.127,79,1.523,84,2.77,86,2.809,88,1.673,107,3.766,112,2.51,113,2.969,117,1.379,118,1.114,122,2.231,134,1.981,135,3.649,136,0.874,142,2.917,148,1.127,152,2.336,155,1.222,178,1.746,183,2.797,196,1.418,243,4.208,248,1.692,249,1.769,251,1.648,252,3.145,253,2.212,254,2.27,263,1.625,275,1.679,296,2.262,313,4.235,319,2.891,320,1.938,328,2.534,342,3.122,351,1.509,356,1.792,377,1.769,391,2.798,439,3.948,443,1.8,451,1.705,502,1.504,509,4.321,514,2.47,548,4.519,549,3.497,552,1.372,556,4.819,593,1.608,597,1.897,619,2.25,668,2.843,683,1.792,689,2.291,711,3.37,712,3.465,719,1.887,743,1.907,764,2.336,833,2.5,859,2.056,891,3.021,892,3.021,893,2.194,894,2.212,895,2.5,896,2.144,897,2.865,898,2.608,899,3.021,900,2.177,901,2.865,902,2.865,903,1.897,904,2.534,905,3.417,906,3.021,907,2.411,908,3.021,909,2.336,910,2.043,911,3.122,912,5.563,913,2.65,914,3.417,915,3.417,916,3.417]],["component/13",[7,0.401]],["title/14-1",[236,39.251]],["name/14-1",[]],["text/14-1",[]],["component/14-1",[]],["title/14-2",[34,33.244,754,33.244]],["name/14-2",[]],["text/14-2",[]],["component/14-2",[]],["title/14-3",[917,67.039]],["name/14-3",[]],["text/14-3",[]],["component/14-3",[]],["title/14-4",[918,67.892]],["name/14-4",[]],["text/14-4",[]],["component/14-4",[]],["title/14-5",[919,77.795]],["name/14-5",[]],["text/14-5",[]],["component/14-5",[]],["title/14-6",[351,40.973]],["name/14-6",[]],["text/14-6",[]],["component/14-6",[]],["title/14-7",[394,48.764,754,33.244]],["name/14-7",[]],["text/14-7",[]],["component/14-7",[]],["title/14-8",[36,33.721,137,36.831]],["name/14-8",[]],["text/14-8",[]],["component/14-8",[]],["title/14-9",[191,35.099]],["name/14-9",[]],["text/14-9",[]],["component/14-9",[]],["title/14-10",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/14-10",[]],["text/14-10",[]],["component/14-10",[]],["title/14-11",[110,23.724,118,17.044,264,17.464,752,26.176,762,37.759]],["name/14-11",[]],["text/14-11",[]],["component/14-11",[]],["title/14-12",[754,39.689]],["name/14-12",[]],["text/14-12",[]],["component/14-12",[]],["title/14-13",[264,25.971,679,30.741]],["name/14-13",[]],["text/14-13",[]],["component/14-13",[]],["title/14-14",[752,33.489,754,28.6,762,48.309]],["name/14-14",[]],["text/14-14",[]],["component/14-14",[]],["title/14-15",[148,19.348,155,20.975,514,20.59,754,25.095]],["name/14-15",[]],["text/14-15",[]],["component/14-15",[]],["title/14-16",[135,27.323,752,33.489,754,28.6]],["name/14-16",[]],["text/14-16",[]],["component/14-16",[]],["title/14-17",[502,40.851]],["name/14-17",[]],["text/14-17",[]],["component/14-17",[]],["title/14-18",[923,82.026]],["name/14-18",[]],["text/14-18",[]],["component/14-18",[]],["title/14",[136,17.103,144,28.362,401,29.976]],["name/14",[631,1.45]],["text/14",[3,0.238,4,0.326,5,2.015,6,0.54,8,1.486,14,0.242,15,0.834,17,1.629,18,0.932,19,0.969,20,1.165,23,0.262,24,1.564,25,0.815,26,0.452,29,1.275,30,0.7,31,0.315,32,3.133,34,0.698,35,1.556,36,1.1,37,0.342,38,0.319,40,0.193,42,0.256,52,0.519,57,0.623,68,0.655,69,0.424,71,1.086,76,0.679,79,2.73,82,0.743,84,2.886,88,1.209,90,0.727,93,0.327,96,1.181,101,1.399,106,0.365,107,0.397,110,0.953,111,0.608,112,0.947,113,0.247,115,0.92,117,1.621,118,1.774,120,1.217,121,0.62,122,1.065,123,0.397,124,0.429,125,1.154,127,0.368,134,1.183,135,0.667,136,0.85,137,0.535,139,1.425,142,0.592,143,1.36,144,1.562,145,0.719,148,0.538,155,1.052,160,0.312,161,0.43,163,1.039,166,0.666,168,0.297,169,0.92,171,0.528,172,1.241,178,0.3,181,0.419,183,1.007,186,0.589,191,0.427,192,0.295,194,0.371,196,1.052,200,0.731,201,0.405,214,0.614,224,0.287,226,1.024,239,1.548,243,0.975,251,0.283,252,1.133,255,0.334,256,1.368,262,0.643,263,2.914,264,0.701,266,0.429,267,1.43,271,0.272,272,0.614,275,1.245,277,1.795,278,0.344,280,0.504,282,0.658,283,0.34,285,0.435,286,0.333,287,0.409,292,0.603,296,0.238,300,1.074,301,1.617,304,0.796,308,1.19,316,0.998,317,0.397,319,0.241,331,0.304,332,0.455,333,0.34,341,0.334,349,0.589,350,0.318,351,1.299,354,0.662,355,0.374,375,0.374,377,0.584,388,0.342,394,1.024,398,0.424,401,2.204,402,0.361,406,1.104,412,0.393,415,0.386,420,0.405,421,1.783,424,0.409,439,0.329,440,0.368,441,0.679,442,0.409,445,0.36,446,0.811,451,0.293,455,3.392,468,1.193,470,0.495,482,0.671,492,0.397,502,0.718,505,0.365,508,1.203,509,0.693,514,2.484,517,0.941,521,0.731,523,0.662,525,0.72,531,0.282,547,0.696,548,1.048,549,1.043,552,0.235,553,0.348,570,0.952,577,0.34,580,0.643,581,0.435,583,0.326,586,0.34,593,0.768,596,0.365,597,0.326,602,0.424,603,0.351,615,1.148,617,1.817,621,0.806,625,0.875,630,0.351,641,0.481,665,0.577,670,2.865,675,0.383,676,1.065,679,1.003,682,0.582,684,1.837,686,1.552,688,0.455,689,0.393,698,0.589,705,0.39,711,0.684,717,0.419,719,0.623,723,0.429,732,1.039,733,0.75,734,1.75,741,0.358,745,0.793,752,1.051,754,1.719,760,0.393,762,2.126,763,0.826,764,1.733,766,0.731,775,1.21,790,0.888,835,0.31,850,0.405,854,0.731,865,0.307,867,0.731,873,0.377,894,2.383,896,0.708,904,0.837,917,1.179,918,2.432,919,2.786,920,1.578,921,1.602,924,0.441,925,0.441,926,0.455,927,0.435,928,0.455,929,0.424,930,0.414,931,0.419,932,1.921,933,1.048,934,2.282,935,0.586,936,1.578,937,0.38,938,1.556,939,1.442,940,0.97,941,0.586,942,0.504,943,1.065,944,1.129,945,0.518,946,0.518,947,1.935,948,0.481,949,1.535,950,0.463,951,0.925,952,0.586,953,0.586,954,1.129,955,1.442,956,0.518,957,0.586,958,1.368,959,0.518,960,0.518,961,2.053,962,1.628,963,0.577,964,2.768,965,2.938,966,0.38,967,1.28,968,0.855,969,0.518,970,0.757,971,0.518,972,0.572,973,1.536,974,0.481,975,1.338,976,1.935,977,0.518,978,0.492,979,0.518,980,0.435,981,0.455,982,0.383,983,0.806,984,1.002,985,0.684,986,0.557,987,1.855,988,0.998,989,0.481,990,0.448,991,0.455,992,0.586,993,0.327,994,0.481,995,0.481,996,0.481,997,0.481,998,1.139,999,0.481,1000,0.481,1001,0.435,1002,0.481,1003,0.481,1004,0.393,1005,0.199,1006,1.338,1007,0.481,1008,1.373,1009,0.481,1010,0.397,1011,0.435,1012,0.429,1013,0.435,1014,0.925,1015,1.227,1016,1.129,1017,0.393,1018,0.481,1019,0.455,1020,0.998,1021,0.481,1022,1.227,1023,0.518,1024,0.441,1025,0.481,1026,0.518,1027,0.518,1028,0.518,1029,0.518,1030,0.557,1031,1.151,1032,0.518,1033,0.771,1034,0.518,1035,0.518,1036,0.518,1037,0.518,1038,0.518,1039,0.518,1040,0.336,1041,0.518,1042,0.518,1043,0.518,1044,0.518,1045,0.481,1046,0.946,1047,0.455,1048,0.861,1049,0.463,1050,0.586,1051,0.518,1052,0.518,1053,1.084,1054,0.518,1055,0.518,1056,0.455,1057,0.586,1058,0.586,1059,0.518,1060,0.586,1061,0.481,1062,0.401,1063,0.925,1064,0.414,1065,1.073,1066,0.313,1067,0.586,1068,0.771,1069,0.518,1070,0.504,1071,0.518,1072,0.518,1073,0.448,1074,0.455,1075,0.331,1076,0.524,1077,0.448,1078,0.693,1079,1.245,1080,1.442,1081,0.586,1082,0.455,1083,0.424,1084,1.031,1085,0.586,1086,0.492,1087,0.414,1088,0.481,1089,0.409,1090,0.743,1091,0.331,1092,0.371,1093,0.946,1094,0.492,1095,0.463,1096,0.806,1097,0.393,1098,0.492,1099,0.837,1100,0.536,1101,0.419,1102,0.492,1103,0.492,1104,0.536,1105,0.492,1106,0.841,1107,0.594,1108,0.405,1109,0.401,1110,0.386,1111,0.492,1112,0.441,1113,0.536,1114,0.448,1115,0.586,1116,0.518,1117,0.518,1118,0.946,1119,0.481,1120,0.518,1121,0.518,1122,0.429,1123,0.409,1124,0.518,1125,0.377,1126,0.401,1127,0.414]],["component/14",[7,0.401]],["title/15",[]],["name/15",[947,1.886]],["text/15",[26,3.409,68,4.937,69,6.151,117,3.435,148,2.807,155,3.044,183,4.313,282,4.966,308,3.443,402,1.882,468,4.007,514,3.809,665,4.351,679,3.367,705,5.656,904,6.312,947,6.498,1089,5.941,1090,5.606,1091,4.801]],["component/15",[7,0.401]],["title/16",[]],["name/16",[1086,2.071]],["text/16",[15,4.212,29,2.181,30,3.535,32,3.292,35,5.128,76,3.422,82,5.426,88,1.71,93,3.173,118,3.466,120,3.298,123,3.849,136,1.454,191,2.151,196,2.36,255,3.242,296,2.312,308,2.3,316,2.704,439,3.19,482,3.378,502,2.503,514,2.892,570,4.808,577,3.298,682,2.93,719,3.141,745,2.763,752,2.848,754,3.525,762,7.003,763,6.03,764,7.265,766,5.335,904,4.216,985,3.444,1046,4.767,1076,2.64,1084,5.195,1090,3.744,1092,3.595,1093,6.909,1094,4.767,1095,4.486]],["component/16",[7,0.401]],["title/17",[]],["name/17",[755,1.886]],["text/17",[17,2.961,79,3.254,84,2.004,88,2.197,121,4.013,134,2.6,135,4.011,148,2.408,183,2.903,272,3.974,406,2.426,525,3.225,593,3.437,596,4.548,717,5.213,719,4.033,723,2.775,752,4.916,754,3.124,867,4.728,896,4.582,1022,5.492,1048,5.574,1068,4.992,1106,5.714,1107,5.17,1108,5.043,1109,4.992,1110,4.809,1111,6.123,1112,5.492]],["component/17",[7,0.401]],["title/18",[]],["name/18",[1096,1.764]],["text/18",[18,2.892,40,2.147,68,3.775,84,2.866,90,2.901,96,3.033,125,4.131,134,2.318,139,3.217,155,2.327,262,3.712,275,4.457,301,3.651,351,4.006,421,4.866,514,2.285,665,3.327,723,2.474,741,3.97,775,4.827,867,4.214,873,4.18,958,7.606,963,3.327,968,3.413,1008,4.913,1096,6.476,1097,4.365,1098,5.458,1099,6.727,1100,5.947,1101,4.647,1102,5.458,1103,5.458,1104,5.947,1105,5.458]],["component/18",[7,0.401]],["title/19-1",[42,33.917,502,34.217]],["name/19-1",[]],["text/19-1",[]],["component/19-1",[]],["title/19-2",[183,30.892,1128,43.146]],["name/19-2",[]],["text/19-2",[]],["component/19-2",[]],["title/19-3",[183,30.892,1129,38.042]],["name/19-3",[]],["text/19-3",[]],["component/19-3",[]],["title/19-4",[356,40.753,835,41.118]],["name/19-4",[]],["text/19-4",[]],["component/19-4",[]],["title/19-5",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/19-5",[]],["text/19-5",[]],["component/19-5",[]],["title/19-6",[293,47.398,1004,52.112]],["name/19-6",[]],["text/19-6",[]],["component/19-6",[]],["title/19",[98,48.764,1132,35.506]],["name/19",[1132,1.129]],["text/19",[0,0.81,5,0.657,6,0.768,7,0.393,8,1.98,10,0.631,11,2.738,12,1.481,13,1.824,14,1.636,16,1.875,18,0.712,19,0.953,29,1.519,30,0.688,32,1.157,34,1.239,35,1.533,37,0.936,38,0.873,40,1.601,42,1.729,46,2.022,48,3.393,52,1.332,54,1.569,60,1.755,77,0.895,79,1.291,84,2.94,88,2.205,96,0.747,99,0.768,105,1.636,106,0.999,112,0.723,117,1.958,118,1.292,120,3.633,128,0.9,146,2.068,147,1.006,148,0.955,151,1.065,154,0.779,155,0.573,161,0.611,164,1.732,168,0.813,172,1.222,179,1.075,183,1.151,186,2.068,188,0.93,192,0.806,211,1.468,214,1.828,224,1.418,225,1.145,228,2.431,236,0.678,240,2.068,252,2.169,264,0.968,265,1.056,267,1.634,268,0.985,279,0.721,280,1.295,293,2.96,296,0.652,300,3.196,308,0.649,319,0.659,325,0.992,330,2.544,333,0.93,350,0.868,351,1.749,356,2.077,421,0.86,439,0.9,446,0.797,457,1.119,464,0.985,465,0.669,468,1.865,478,1.189,482,0.953,502,1.275,514,1.704,521,1.038,525,1.279,532,1.942,539,1.173,541,1.224,547,0.684,548,1.03,549,0.797,558,1.086,570,0.936,596,1.804,597,0.89,608,0.816,618,1.132,647,0.965,666,1.711,668,1.481,689,1.075,698,0.837,706,0.992,728,3.069,729,0.992,736,0.953,758,1.173,786,0.845,827,0.856,835,1.533,861,4.802,868,1.378,890,2.433,963,0.82,972,1.468,993,0.895,1004,1.075,1087,1.132,1128,2.199,1129,1.939,1130,1.755,1131,1.804,1133,3.092,1134,1.159,1135,1.244,1136,0.999,1137,1.145,1138,1.98,1139,1.047,1140,1.418,1141,2.093,1142,2.178,1143,2.178,1144,1.173,1145,0.936,1146,1.244,1147,1.418,1148,1.418,1149,2.561,1150,0.845,1151,1.132,1152,1.418,1153,2.376,1154,1.173,1155,1.145,1156,1.418,1157,1.244,1158,1.132,1159,1.418,1160,2.561,1161,1.418,1162,2.286,1163,1.418,1164,2.286,1165,1.418,1166,1.244,1167,1.418,1168,1.173,1169,1.107,1170,2.561,1171,1.418,1172,2.899,1173,1.418,1174,1.038,1175,1.418,1176,1.418,1177,1.418,1178,1.418,1179,1.418,1180,2.561,1181,1.418,1182,1.418,1183,2.561,1184,2.561,1185,2.561,1186,1.418,1187,2.044,1188,2.561,1189,1.418,1190,1.418,1191,1.418,1192,1.418,1193,1.418,1194,1.418,1195,0.941,1196,1.265,1197,3.126,1198,1.418,1199,1.418,1200,1.244,1201,2.708,1202,1.418,1203,2.561,1204,1.315,1205,2.561,1206,1.418,1207,1.418,1208,1.418,1209,1.418,1210,1.345,1211,1.03,1212,1.418]],["component/19",[7,0.401]],["title/20-1",[88,23.377,356,40.753]],["name/20-1",[]],["text/20-1",[]],["component/20-1",[]],["title/20-2",[48,36.208,88,20.111,356,35.06]],["name/20-2",[]],["text/20-2",[]],["component/20-2",[]],["title/20-3",[88,20.111,356,35.06,1172,48.923]],["name/20-3",[]],["text/20-3",[]],["component/20-3",[]],["title/20-4",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/20-4",[]],["text/20-4",[]],["component/20-4",[]],["title/20",[88,23.377,158,40.398]],["name/20",[88,0.743]],["text/20",[7,1,8,2.178,10,1.607,11,0.938,12,0.85,13,1.87,14,2.648,15,1.53,16,3.23,17,0.674,23,1.338,31,0.892,32,1.196,33,1.505,34,2.134,42,1.306,48,3.782,52,1.877,54,2.21,56,0.785,60,3.022,77,0.928,80,1.126,84,1.369,88,3.061,91,2.813,93,2.784,94,1.746,95,1.907,96,0.775,97,1.938,100,2.406,101,2.737,105,2.884,107,2.026,113,3.507,115,0.938,120,4.822,128,0.933,143,1.606,146,0.868,166,2.946,170,0.988,171,0.777,186,1.563,188,0.964,199,0.97,204,1.337,221,1.971,234,0.923,243,0.994,252,1.824,277,0.811,293,1.014,301,2.008,316,2.372,325,2.524,341,1.707,344,1.312,351,1.802,356,5.231,403,1.174,406,0.553,421,0.892,429,1.105,443,1.577,446,1.488,505,3.107,509,1.838,525,3.304,531,0.799,553,1.778,570,0.97,712,1.864,732,1.059,765,2.067,766,1.938,768,2.163,772,0.988,827,0.888,835,3.393,861,1.688,869,1.217,890,3.063,910,0.994,937,1.938,972,0.843,985,1.007,1062,1.137,1076,1.39,1089,1.161,1131,1.864,1133,3.178,1154,2.19,1162,1.312,1164,1.312,1172,6.968,1197,1.312,1213,4.342,1214,4.261,1215,1.663,1216,1.47,1217,1.47,1218,1.47,1219,1.095,1220,3.608,1221,3.347,1222,1.47,1223,1.47,1224,1.47,1225,2.646,1226,1.47,1227,1.47,1228,1.47,1229,1.47,1230,1.47,1231,1.47,1232,1.47,1233,1.47,1234,1.47,1235,1.47,1236,1.47,1237,1.47,1238,3.608,1239,1.47,1240,2.646,1241,1.47,1242,1.47,1243,1.47,1244,1.47,1245,1.47,1246,2.22,1247,1.47,1248,2.646,1249,1.29,1250,1.187,1251,1.47,1252,1.364,1253,1.028,1254,1.47,1255,0.692,1256,2.362,1257,1.47,1258,2.51,1259,1.663,1260,1.663,1261,1.47,1262,1.47,1263,1.663,1264,1.663,1265,1.47,1266,1.47,1267,1.47,1268,1.47,1269,1.47,1270,1.47,1271,1.47,1272,1.47,1273,1.47,1274,1.47,1275,1.47]],["component/20",[7,0.401]],["title/21",[1276,68.801]],["name/21",[1276,1.832]],["text/21",[3,1.263,8,1.248,13,3.292,14,2.719,16,3.331,20,1.725,26,1.244,30,1.333,32,1.241,71,1.608,84,2.102,88,1.981,105,3.777,107,2.103,112,1.402,117,3.424,118,3.532,125,2.999,136,1.959,137,1.472,139,1.102,144,1.318,155,2.355,161,2.917,168,2.608,169,1.752,171,1.452,183,1.235,191,1.175,214,1.17,239,1.448,249,1.608,263,1.478,264,1.038,272,1.691,280,1.389,296,2.092,301,2.65,308,3.699,316,1.478,319,2.114,357,1.743,391,1.562,401,1.393,421,1.667,443,1.636,451,1.55,455,1.527,458,1.908,470,1.364,487,1.348,502,1.368,519,2.103,526,2.451,531,1.493,549,1.544,570,1.813,602,2.245,617,2.814,659,2.273,661,2.451,664,2.41,665,2.63,666,1.835,670,3.469,673,2.509,680,1.55,708,1.651,723,1.955,746,1.263,963,1.588,966,2.011,972,2.608,985,1.882,993,1.734,1132,1.419,1136,1.935,1154,2.273,1277,6.058,1278,2.747,1279,1.87,1280,2.497,1281,2.747,1282,2.336,1283,2.747,1284,2.372,1285,2.245,1286,2.451,1287,1.964,1288,2.747,1289,2.497,1290,2.747,1291,2.245,1292,3.107,1293,2.67,1294,2.548,1295,2.304,1296,2.548,1297,2.747,1298,2.747,1299,2.747,1300,2.41,1301,2.451,1302,2.747]],["component/21",[7,0.401]],["title/22-1",[56,27.706,84,16.101,236,24.817,691,48.109]],["name/22-1",[]],["text/22-1",[]],["component/22-1",[]],["title/22-2",[52,30.744,104,32.728,680,33.358]],["name/22-2",[]],["text/22-2",[]],["component/22-2",[]],["title/22-3",[116,50.007]],["name/22-3",[]],["text/22-3",[]],["component/22-3",[]],["title/22-4",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/22-4",[]],["text/22-4",[]],["component/22-4",[]],["title/22-5",[8,8.202,13,10.985,84,9.278,105,13.959,186,17.648,457,23.594,525,14.928,666,19.961,861,19.065,1131,21.055]],["name/22-5",[]],["text/22-5",[]],["component/22-5",[]],["title/22-6",[528,37.312,531,32.135,596,41.644]],["name/22-6",[]],["text/22-6",[]],["component/22-6",[]],["title/22",[13,21.726,105,27.609,343,46.175]],["name/22",[631,1.45]],["text/22",[3,0.45,4,0.614,7,0.271,8,0.268,13,2.032,14,0.457,15,0.565,16,2.344,17,2.174,18,1.284,26,1.45,33,1.035,34,0.473,40,0.953,45,0.915,48,0.599,52,2.681,54,2.311,56,0.522,58,0.67,60,2.585,65,1.887,70,1.549,77,0.617,84,3.443,88,0.619,91,0.624,92,3.945,96,0.515,98,1.292,101,1.722,102,0.596,104,0.541,105,0.85,106,0.689,107,0.748,110,1.312,111,2.89,112,0.929,113,2.262,116,1.951,117,2.822,118,3.206,120,2.1,121,0.608,123,0.748,128,1.621,130,1.216,134,1.725,143,0.593,145,0.704,148,0.365,155,1.526,160,1.094,161,0.421,163,0.547,168,1.044,171,0.517,178,0.565,179,0.741,185,0.741,186,2.228,196,0.855,199,0.645,214,2.355,215,1.422,227,1.333,236,0.468,243,0.661,248,2.112,252,0.494,255,1.174,263,0.526,264,0.688,279,0.497,280,0.494,293,0.674,296,2.843,297,0.605,301,2.517,304,0.78,313,2.568,316,2.029,332,0.858,335,1.648,360,0.799,361,1.943,378,0.748,394,1.292,397,0.831,402,0.8,406,0.367,408,0.575,421,0.593,438,3.381,439,0.62,440,0.694,443,1.085,446,0.549,457,0.772,465,1.206,487,0.48,505,1.8,506,0.789,508,1.181,514,0.388,519,1.394,525,0.488,528,1.613,531,2.051,547,0.472,549,1.799,552,0.444,556,0.657,575,1.408,577,0.641,580,2.433,596,1.283,604,0.599,618,0.78,619,0.728,620,0.638,622,1.47,642,0.858,665,1.052,666,2.138,669,2.64,670,0.582,674,1.333,678,1.174,679,0.437,680,1.806,691,0.907,706,1.787,743,0.617,773,1.312,786,0.582,861,2.407,865,0.58,885,1.957,889,0.653,900,0.704,907,0.78,910,1.231,963,0.565,966,1.333,1031,2.039,1047,0.858,1049,0.872,1091,1.161,1092,0.699,1110,1.356,1131,1.8,1139,0.722,1157,0.858,1282,1.549,1287,0.699,1303,0.872,1304,1.106,1305,0.844,1306,0.872,1307,1.881,1308,2.115,1309,1.051,1310,0.82,1311,0.977,1312,1.01,1313,1.106,1314,1.106,1315,1.106,1316,1.106,1317,1.106,1318,1.106,1319,0.977,1320,0.977,1321,0.907,1322,0.977,1323,1.82,1324,0.977,1325,1.82,1326,0.977,1327,1.82,1328,0.977,1329,0.977,1330,1.051,1331,1.82,1332,0.977,1333,0.977,1334,1.82,1335,0.977,1336,1.82,1337,0.977,1338,0.977,1339,1.82,1340,1.82,1341,0.977,1342,0.977,1343,0.907,1344,0.977,1345,0.977,1346,0.977,1347,0.977,1348,4.6,1349,3.2,1350,1.82,1351,1.106,1352,0.927,1353,1.106,1354,1.106,1355,2.059,1356,1.726,1357,1.106,1358,2.89,1359,1.106,1360,1.106,1361,0.872,1362,0.977,1363,1.106,1364,4.267,1365,1.106,1366,1.106,1367,3.2,1368,2.059,1369,2.059,1370,1.106,1371,1.106,1372,1.106,1373,1.106,1374,1.106,1375,1.106,1376,1.106,1377,1.106,1378,1.106,1379,0.977,1380,1.106,1381,0.831,1382,0.977,1383,0.977,1384,0.977,1385,0.977,1386,0.977,1387,0.977,1388,1.726,1389,0.872,1390,0.661,1391,0.927,1392,0.977,1393,0.977]],["component/22",[7,0.401]],["title/23-1",[260,42.387,297,32.081,470,25.753,1394,51.864]],["name/23-1",[]],["text/23-1",[]],["component/23-1",[]],["title/23",[871,51.636,1076,36.09]],["name/23",[1395,2.471]],["text/23",[8,2.168,118,2.914,296,3.633,620,5.153,644,7.182,861,6.311,867,5.785,903,4.961,1130,5.413,1174,5.785,1256,7.05,1396,8.936,1397,9.892,1398,7.492,1399,7.68,1400,4.706]],["component/23",[7,0.401]],["title/24-1",[3,37.722]],["name/24-1",[]],["text/24-1",[]],["component/24-1",[]],["title/24-2",[128,52.051]],["name/24-2",[]],["text/24-2",[]],["component/24-2",[]],["title/24-3",[155,27.786,465,32.434]],["name/24-3",[]],["text/24-3",[]],["component/24-3",[]],["title/24-4",[34,25.095,134,20.888,406,19.493,694,34.642]],["name/24-4",[]],["text/24-4",[]],["component/24-4",[]],["title/24-5",[351,40.973]],["name/24-5",[]],["text/24-5",[]],["component/24-5",[]],["title/24-6",[745,45.082]],["name/24-6",[]],["text/24-6",[]],["component/24-6",[]],["title/24-7",[455,38.185,1293,66.798]],["name/24-7",[]],["text/24-7",[]],["component/24-7",[]],["title/24-8",[656,50.738]],["name/24-8",[]],["text/24-8",[]],["component/24-8",[]],["title/24-9",[1401,71,1402,56.867]],["name/24-9",[]],["text/24-9",[]],["component/24-9",[]],["title/24-10",[88,23.377,1403,52.609]],["name/24-10",[]],["text/24-10",[]],["component/24-10",[]],["title/24",[155,20.975,249,30.364,678,33.45,1403,39.712]],["name/24",[1403,1.672]],["text/24",[3,1.134,5,1.568,6,2.61,8,1.616,10,0.606,20,0.854,23,1.247,24,0.818,26,0.616,29,1.07,30,1.642,32,0.615,34,1.193,38,0.837,43,3.077,57,0.85,76,2.304,84,3.716,88,0.839,90,1.243,92,0.914,98,0.965,104,1.874,107,2.591,117,2.687,118,0.502,122,1.822,133,0.914,134,0.993,136,0.394,138,1.232,139,1.933,144,1.624,155,1.681,158,0.8,161,3.043,164,0.92,166,1.648,172,0.649,179,1.032,183,0.612,196,1.158,211,1.941,214,1.051,220,1.062,228,0.771,239,1.3,249,1.981,262,0.877,265,1.837,268,1.713,271,2.831,275,0.756,279,1.255,301,0.619,308,2.205,316,1.327,325,0.951,351,3.16,354,0.903,391,0.774,402,0.34,406,1.272,421,0.825,428,1.214,430,1.041,439,0.863,441,0.926,455,0.756,465,1.598,502,2.071,514,0.979,547,1.633,549,1.903,553,0.914,557,2.195,570,2.233,593,1.313,615,0.841,617,0.841,656,0.841,673,0.75,678,1.591,679,1.514,686,1.078,694,0.908,695,0.748,708,0.818,712,0.958,735,0.988,790,0.837,1008,1.511,1064,1.969,1092,0.973,1106,0.793,1107,0.81,1123,1.074,1138,1.052,1310,1.141,1401,8.421,1403,7.786,1404,1.538,1405,1.538,1406,1.538,1407,6.096,1408,1.538,1409,5.45,1410,1.538,1411,1.538,1412,1.654,1413,2.201,1414,3,1415,3,1416,0.926,1417,2.339,1418,1.405,1419,1.538,1420,2.79,1421,1.052,1422,1.538,1423,1.538,1424,1.405,1425,3.828,1426,3.828,1427,1.538,1428,1.538,1429,1.538,1430,1.538,1431,0.821,1432,2.79,1433,3.828,1434,0.859,1435,1.538,1436,3.077,1437,1.538,1438,1.538,1439,1.538,1440,1.538,1441,1.098,1442,1.538,1443,1.538,1444,1.405,1445,1.538,1446,1.538,1447,1.262,1448,1.157,1449,1.36,1450,1.538,1451,1.193,1452,1.538,1453,1.36,1454,1.538,1455,1.36]],["component/24",[7,0.401]],["title/25-1",[402,17.184,1456,33.432]],["name/25-1",[]],["text/25-1",[]],["component/25-1",[]],["title/25-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/25-2",[]],["text/25-2",[]],["component/25-2",[]],["title/25-3",[8,18.856,150,32.262]],["name/25-3",[]],["text/25-3",[]],["component/25-3",[]],["title/25-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/25-4",[]],["text/25-4",[]],["component/25-4",[]],["title/25-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/25-5",[]],["text/25-5",[]],["component/25-5",[]],["title/25-6",[8,16.222,137,31.686,746,27.183]],["name/25-6",[]],["text/25-6",[]],["component/25-6",[]],["title/25-7",[1255,32.348,1457,33.624]],["name/25-7",[]],["text/25-7",[]],["component/25-7",[]],["title/25",[138,34.207,139,18.53,677,47.243]],["name/25",[138,0.611,677,0.844]],["text/25",[5,2.624,7,0.998,8,1.554,17,1.653,29,2.457,40,1.344,84,3.576,88,1.927,110,1.85,113,1.719,135,1.665,136,1.639,138,4.306,144,2.717,148,2.113,150,1.692,161,3.014,196,3.724,199,3.737,264,1.362,271,1.892,279,1.833,280,3.537,401,2.872,402,0.901,408,2.118,459,2.485,484,4.147,508,3.673,514,3.149,521,2.638,531,1.959,556,2.421,570,2.377,657,3.603,677,2.485,686,1.574,695,4.738,745,1.98,760,2.732,932,4.182,949,5.434,950,3.215,1091,2.298,1106,2.1,1107,2.146,1114,3.111,1390,2.437,1391,3.417,1458,3.342,1459,3.603,1460,3.603,1461,2.196,1462,3.603,1463,3.342,1464,4.075,1465,3.111,1466,3.603,1467,3.161,1468,2.502,1469,2.596,1470,3.603,1471,3.603,1472,2.364]],["component/25",[7,0.401]],["title/26-1",[402,17.184,1456,33.432]],["name/26-1",[]],["text/26-1",[]],["component/26-1",[]],["title/26-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/26-2",[]],["text/26-2",[]],["component/26-2",[]],["title/26-3",[8,18.856,150,32.262]],["name/26-3",[]],["text/26-3",[]],["component/26-3",[]],["title/26-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/26-4",[]],["text/26-4",[]],["component/26-4",[]],["title/26-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/26-5",[]],["text/26-5",[]],["component/26-5",[]],["title/26-6",[8,16.222,137,31.686,746,27.183]],["name/26-6",[]],["text/26-6",[]],["component/26-6",[]],["title/26-7",[1255,32.348,1457,33.624]],["name/26-7",[]],["text/26-7",[]],["component/26-7",[]],["title/26",[178,34.172,1129,32.728,1473,43.651]],["name/26",[1473,1.613]],["text/26",[5,3.513,8,2.329,12,2.364,29,2.71,84,3.113,88,2.126,90,2.061,99,2.215,135,2.888,136,1.808,137,2.192,138,3.12,139,1.64,144,1.962,148,1.525,161,1.762,178,5.572,183,1.839,228,2.317,231,3.131,263,2.2,264,1.546,280,3.158,308,1.871,349,2.415,351,2.043,394,2.902,395,2.881,401,2.074,402,1.562,406,2.348,445,2.84,446,2.299,451,2.308,459,2.821,484,2.995,514,3.369,654,3.194,686,1.786,687,3.102,695,3.433,726,2.784,746,1.881,788,2.683,830,2.802,873,2.97,896,2.902,983,3.302,1068,3.162,1106,2.384,1107,2.436,1187,3.264,1461,2.493,1472,2.683,1473,3.02,1474,4.089,1475,3.194,1476,6.247,1477,2.529,1478,3.717,1479,3.793,1480,4.089,1481,4.089,1482,3.976]],["component/26",[7,0.401]],["title/27-1",[402,17.184,1456,33.432]],["name/27-1",[]],["text/27-1",[]],["component/27-1",[]],["title/27-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/27-2",[]],["text/27-2",[]],["component/27-2",[]],["title/27-3",[118,25.347,694,45.892]],["name/27-3",[]],["text/27-3",[]],["component/27-3",[]],["title/27-4",[1145,45.341,1483,35.06]],["name/27-4",[]],["text/27-4",[]],["component/27-4",[]],["title/27-5",[1091,43.832,1145,45.341]],["name/27-5",[]],["text/27-5",[]],["component/27-5",[]],["title/27-6",[88,20.111,468,31.469,532,44.832]],["name/27-6",[]],["text/27-6",[]],["component/27-6",[]],["title/27-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/27-7",[]],["text/27-7",[]],["component/27-7",[]],["title/27-8",[8,16.222,30,28.681,150,27.755]],["name/27-8",[]],["text/27-8",[]],["component/27-8",[]],["title/27-9",[104,32.728,264,22.343,686,25.822]],["name/27-9",[]],["text/27-9",[]],["component/27-9",[]],["title/27-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/27-10",[]],["text/27-10",[]],["component/27-10",[]],["title/27-11",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/27-11",[]],["text/27-11",[]],["component/27-11",[]],["title/27-12",[8,16.222,137,31.686,746,27.183]],["name/27-12",[]],["text/27-12",[]],["component/27-12",[]],["title/27-13",[1255,32.348,1457,33.624]],["name/27-13",[]],["text/27-13",[]],["component/27-13",[]],["title/27",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/27",[728,0.757,1484,1]],["text/27",[2,0.805,5,1.057,6,1.706,7,0.346,8,1.757,10,1.016,12,0.721,13,1.43,14,1.065,15,2.619,17,0.572,29,1.965,30,1.528,32,1.423,34,1.524,35,0.747,36,0.612,37,0.824,38,0.768,40,2.635,42,0.616,45,1.583,56,1.218,57,1.425,65,0.922,79,2.564,87,1.595,88,1.072,90,1.15,96,0.658,97,0.914,98,1.619,101,2.093,104,1.263,106,2.219,110,1.171,117,1.041,118,3.119,120,2.066,134,2.247,135,0.577,136,1.472,137,1.223,138,2.263,139,1.817,142,0.74,144,1.867,148,0.466,155,0.922,160,0.75,161,0.538,171,0.66,172,1.857,183,1.025,184,1.184,186,1.86,189,0.784,190,0.834,191,1.665,192,0.71,196,1.479,214,0.972,234,0.784,251,0.681,252,0.631,267,2.009,271,2.38,272,0.768,275,0.694,278,0.828,279,1.979,280,0.631,292,1.377,300,0.93,308,1.441,315,1.67,316,2.093,320,1.463,330,1.657,333,0.819,340,0.839,341,0.805,401,2.297,402,1.504,406,1.462,408,0.734,412,0.947,443,1.359,451,0.704,455,0.694,468,2.709,470,1.132,482,1.533,492,4.271,502,0.622,514,2.679,525,2.263,532,2.389,539,1.033,620,0.814,656,2.407,666,0.834,679,1.409,683,1.868,686,2.223,687,0.947,694,1.523,695,0.686,698,0.737,723,0.98,726,1.553,728,3.45,746,1.049,755,1.078,765,0.975,766,0.914,835,2.328,850,1.782,890,3.875,894,0.914,896,0.886,903,0.784,972,0.716,985,2.158,1076,0.656,1083,1.02,1087,1.821,1089,4.017,1090,1.699,1091,3.246,1092,0.892,1096,1.008,1133,4.02,1141,1.02,1142,1.062,1143,1.062,1145,3.968,1150,0.744,1151,4.061,1381,1.062,1400,0.744,1402,2.607,1416,0.85,1434,0.788,1456,0.607,1485,2.281,1486,1.248,1487,2.001,1488,3.472,1489,2.116,1490,0.879,1491,2.922,1492,1.008,1493,1.158,1494,1.158,1495,1.158,1496,1.158,1497,1.248,1498,0.938,1499,0.975,1500,1.248,1501,3.891,1502,2.281,1503,2.281,1504,2.987,1505,1.248,1506,2.281,1507,1.248,1508,1.02,1509,1.114,1510,1.342,1511,1.342,1512,1.342,1513,0.985,1514,2.607,1515,1.047,1516,1.095,1517,1.008,1518,2.116,1519,1.078,1520,0.906,1521,1.158,1522,1.248,1523,1.184,1524,0.947]],["component/27",[7,0.401]],["title/28-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/28-1",[]],["text/28-1",[]],["component/28-1",[]],["title/28-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/28-2",[]],["text/28-2",[]],["component/28-2",[]],["title/28-3",[8,18.856,150,32.262]],["name/28-3",[]],["text/28-3",[]],["component/28-3",[]],["title/28-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/28-4",[]],["text/28-4",[]],["component/28-4",[]],["title/28-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/28-5",[]],["text/28-5",[]],["component/28-5",[]],["title/28-6",[8,16.222,137,31.686,746,27.183]],["name/28-6",[]],["text/28-6",[]],["component/28-6",[]],["title/28-7",[1255,32.348,1457,33.624]],["name/28-7",[]],["text/28-7",[]],["component/28-7",[]],["title/28",[615,46.09,937,37.981,1129,28.716]],["name/28",[615,0.757,937,0.896]],["text/28",[3,1.073,5,2.829,8,1.42,10,1.766,15,2.293,29,3.227,30,2.511,40,2.277,56,1.247,82,1.738,84,3.537,88,2.077,95,1.682,99,1.264,105,1.09,108,1.787,118,1.909,135,1.834,136,1.766,137,2.127,138,1.982,148,0.87,155,0.944,161,3.419,183,1.049,211,2.275,228,1.322,239,1.23,262,1.505,265,1.738,271,1.226,279,2.632,316,1.255,378,3.038,402,0.584,406,2.796,408,1.372,446,1.312,486,5.474,514,3.316,552,1.06,575,1.804,608,2.284,615,2.454,630,1.578,631,1.549,676,1.723,679,1.775,686,1.733,695,2.18,708,2.385,719,1.458,746,1.824,754,1.129,924,1.985,937,4.47,1075,1.489,1106,1.36,1107,1.39,1126,1.804,1127,1.863,1130,1.599,1134,1.907,1150,3.083,1286,2.082,1305,2.015,1390,4.128,1434,1.473,1461,1.423,1469,1.682,1472,1.531,1525,2.639,1526,1.823,1527,1.823,1528,5.051,1529,2.015,1530,2.082,1531,2.164,1532,2.333,1533,1.884,1534,2.333,1535,2.639,1536,2.639,1537,2.015,1538,1.754,1539,2.639,1540,2.082,1541,2.639,1542,2.639,1543,3.54,1544,1.787,1545,1.957,1546,2.121,1547,2.411,1548,2.639,1549,2.411,1550,2.411,1551,1.738,1552,2.164,1553,2.639,1554,2.121,1555,2.905,1556,1.61,1557,2.164,1558,1.481]],["component/28",[7,0.401]],["title/29-1",[402,17.184,1456,33.432]],["name/29-1",[]],["text/29-1",[]],["component/29-1",[]],["title/29-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/29-2",[]],["text/29-2",[]],["component/29-2",[]],["title/29-3",[8,18.856,150,32.262]],["name/29-3",[]],["text/29-3",[]],["component/29-3",[]],["title/29-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/29-4",[]],["text/29-4",[]],["component/29-4",[]],["title/29-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/29-5",[]],["text/29-5",[]],["component/29-5",[]],["title/29-6",[8,16.222,137,31.686,746,27.183]],["name/29-6",[]],["text/29-6",[]],["component/29-6",[]],["title/29-7",[1255,32.348,1457,33.624]],["name/29-7",[]],["text/29-7",[]],["component/29-7",[]],["title/29",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/29",[1431,0.739,1559,0.928]],["text/29",[0,0.957,3,0.771,5,3.088,6,0.908,8,1.526,10,2.967,13,0.616,17,2.228,29,3.397,30,0.813,32,2.194,40,0.625,42,0.827,45,2.015,56,0.895,84,3.649,88,1.365,104,0.928,105,2.597,106,1.18,108,1.283,112,0.855,113,0.8,116,1.021,117,0.765,118,2.621,121,1.042,135,1.375,136,1.16,137,1.594,138,2.003,148,1.496,150,1.397,154,0.921,155,1.622,160,1.007,161,2.092,189,1.052,211,1.705,220,1.309,223,1.495,228,2.272,248,0.938,251,0.914,255,1.918,262,1.081,271,2.551,275,0.931,279,0.852,292,1.796,297,1.84,322,1.309,352,2.374,354,1.112,377,0.981,402,0.744,406,2.313,408,0.985,464,1.164,482,1.126,506,1.353,514,1.928,531,0.911,557,1.087,575,1.296,586,1.099,593,1.583,656,1.036,663,1.237,668,0.969,678,1.081,679,0.75,682,2.338,686,1.752,695,0.921,746,1.368,754,0.811,772,1.126,779,1.148,830,3.328,863,3.579,895,1.387,1075,1.069,1106,0.977,1107,0.998,1108,3.133,1109,2.3,1150,3.313,1195,1.112,1214,1.259,1381,1.425,1390,1.133,1431,4.729,1434,1.058,1436,1.523,1441,3.238,1456,0.815,1461,1.021,1468,2.066,1469,1.207,1483,0.855,1487,1.47,1490,1.18,1524,1.271,1526,2.323,1527,1.309,1556,1.156,1559,3.683,1560,1.801,1561,1.369,1562,1.495,1563,1.675,1564,4.536,1565,1.447,1566,1.675,1567,1.731,1568,1.895,1569,1.895,1570,1.895,1571,1.731,1572,1.895,1573,1.895,1574,1.895,1575,3.364,1576,1.895,1577,1.895,1578,3.319,1579,1.895,1580,4.722,1581,3.72,1582,1.895,1583,1.895,1584,1.895,1585,1.227,1586,3.364,1587,1.895,1588,1.895,1589,1.895,1590,1.447]],["component/29",[7,0.401]],["title/30-1",[402,17.184,1456,33.432]],["name/30-1",[]],["text/30-1",[]],["component/30-1",[]],["title/30-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/30-2",[]],["text/30-2",[]],["component/30-2",[]],["title/30-3",[8,18.856,150,32.262]],["name/30-3",[]],["text/30-3",[]],["component/30-3",[]],["title/30-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/30-4",[]],["text/30-4",[]],["component/30-4",[]],["title/30-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/30-5",[]],["text/30-5",[]],["component/30-5",[]],["title/30-6",[8,16.222,137,31.686,746,27.183]],["name/30-6",[]],["text/30-6",[]],["component/30-6",[]],["title/30-7",[1255,32.348,1457,33.624]],["name/30-7",[]],["text/30-7",[]],["component/30-7",[]],["title/30",[402,9.484,827,22.902,1129,20.996,1591,42.477,1592,57.305]],["name/30",[1591,0.882,1592,1.189]],["text/30",[3,1.338,8,2.124,13,1.07,29,3.358,30,1.412,37,1.92,40,2.262,42,1.437,56,1.555,84,3.659,99,2.584,104,1.611,105,2.228,106,2.05,113,1.389,118,2.587,135,1.345,136,1.38,137,1.56,138,1.454,148,1.086,154,1.599,155,1.177,161,3.582,191,1.245,204,2.646,211,3.476,214,2.032,248,2.672,273,4.258,280,1.471,296,1.338,351,3.028,402,1.754,406,1.793,420,2.273,464,2.021,493,7.836,514,1.894,525,1.454,590,2.475,608,1.675,656,1.8,686,2.084,690,1.981,708,1.75,716,2.597,754,1.408,827,4.235,835,1.742,929,2.378,990,2.513,1075,1.857,1150,1.734,1195,1.932,1413,2.597,1434,1.837,1504,2.76,1517,2.35,1524,2.207,1591,5.053,1592,5.894,1593,3.292,1594,3.292,1595,2.91,1596,2.646,1597,2.91,1598,3.292,1599,4.771,1600,2.91,1601,2.91,1602,4.771,1603,3.292,1604,3.292,1605,3.292,1606,3.292,1607,3.292,1608,2.829]],["component/30",[7,0.401]],["title/31-1",[402,17.184,1456,33.432]],["name/31-1",[]],["text/31-1",[]],["component/31-1",[]],["title/31-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/31-2",[]],["text/31-2",[]],["component/31-2",[]],["title/31-3",[8,18.856,150,32.262]],["name/31-3",[]],["text/31-3",[]],["component/31-3",[]],["title/31-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/31-4",[]],["text/31-4",[]],["component/31-4",[]],["title/31-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/31-5",[]],["text/31-5",[]],["component/31-5",[]],["title/31-6",[8,16.222,137,31.686,746,27.183]],["name/31-6",[]],["text/31-6",[]],["component/31-6",[]],["title/31-7",[1255,32.348,1457,33.624]],["name/31-7",[]],["text/31-7",[]],["component/31-7",[]],["title/31",[311,30.628,1609,35.079,1610,36.54,1611,38.977]],["name/31",[1610,0.599,1611,0.639,1612,0.551]],["text/31",[8,1.949,10,2.567,13,1.355,17,1.691,18,1.852,30,1.789,34,1.784,45,1.852,48,3.532,79,1.858,84,3.425,99,1.997,105,1.722,117,1.682,118,1.36,121,2.291,134,1.485,136,1.067,137,1.976,138,1.841,139,1.478,144,1.769,148,1.375,155,3.525,166,2.462,168,2.114,170,2.477,174,3.183,183,1.657,214,1.57,249,2.158,251,2.011,266,3.051,296,1.695,308,1.687,311,2.177,316,1.983,356,2.186,402,0.922,442,2.91,460,1.759,465,1.74,468,3.07,487,1.809,500,3.963,514,2.819,549,2.072,608,2.122,617,2.28,679,2.58,686,2.519,695,2.026,708,2.216,754,1.784,758,3.051,963,2.131,1015,3.136,1062,2.85,1075,2.352,1431,4.289,1434,2.327,1441,4.656,1487,3.234,1562,3.29,1609,2.493,1610,5.003,1611,4.333,1613,3.686,1614,3.686,1615,3.686,1616,3.963,1617,3.584,1618,4.483,1619,3.234,1620,4.333,1621,3.351,1622,3.092,1623,3.419]],["component/31",[7,0.401]],["title/32-1",[3,31.597,56,36.704]],["name/32-1",[]],["text/32-1",[]],["component/32-1",[]],["title/32-2",[5,31.842,547,33.151]],["name/32-2",[]],["text/32-2",[]],["component/32-2",[]],["title/32-3",[136,23.734]],["name/32-3",[]],["text/32-3",[]],["component/32-3",[]],["title/32-4",[406,25.824,430,52.609]],["name/32-4",[]],["text/32-4",[]],["component/32-4",[]],["title/32-5",[547,28.52,1434,37.312,1624,63.552]],["name/32-5",[]],["text/32-5",[]],["component/32-5",[]],["title/32-6",[161,35.339]],["name/32-6",[]],["text/32-6",[]],["component/32-6",[]],["title/32-7",[183,30.892,1625,55.481]],["name/32-7",[]],["text/32-7",[]],["component/32-7",[]],["title/32-8",[42,29.179,502,29.437,1625,47.73]],["name/32-8",[]],["text/32-8",[]],["component/32-8",[]],["title/32-9",[191,29.399,311,40.574]],["name/32-9",[]],["text/32-9",[]],["component/32-9",[]],["title/32-10",[84,16.101,351,37.219,1626,55.762]],["name/32-10",[]],["text/32-10",[]],["component/32-10",[]],["title/32-11",[694,39.481,1526,46.175,1527,46.175]],["name/32-11",[]],["text/32-11",[]],["component/32-11",[]],["title/32-12",[355,49.513,1627,59.325]],["name/32-12",[]],["text/32-12",[]],["component/32-12",[]],["title/32-13",[1628,88.192]],["name/32-13",[]],["text/32-13",[]],["component/32-13",[]],["title/32-14",[729,48.06,1627,59.325]],["name/32-14",[]],["text/32-14",[]],["component/32-14",[]],["title/32-15",[729,48.06,1629,62.461]],["name/32-15",[]],["text/32-15",[]],["component/32-15",[]],["title/32-16",[32,26.708,35,35.374,1627,51.038]],["name/32-16",[]],["text/32-16",[]],["component/32-16",[]],["title/32-17",[32,26.708,35,35.374,1629,53.736]],["name/32-17",[]],["text/32-17",[]],["component/32-17",[]],["title/32-18",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/32-18",[]],["text/32-18",[]],["component/32-18",[]],["title/32-19",[8,16.222,137,31.686,746,27.183]],["name/32-19",[]],["text/32-19",[]],["component/32-19",[]],["title/32-20",[8,18.856,150,32.262]],["name/32-20",[]],["text/32-20",[]],["component/32-20",[]],["title/32-21",[1255,32.348,1457,33.624]],["name/32-21",[]],["text/32-21",[]],["component/32-21",[]],["title/32",[311,30.628,678,33.45,1609,35.079,1630,55.762]],["name/32",[547,0.41,1612,0.551,1631,0.758]],["text/32",[0,0.327,2,0.707,3,0.726,5,0.732,6,0.594,8,1.277,10,0.488,15,0.331,17,1.889,18,0.287,20,1.272,24,0.95,29,0.685,30,1.705,31,0.958,32,1.102,34,1.538,35,2.629,36,1.56,38,0.972,40,0.91,42,1,45,1.765,57,1.265,58,1.082,68,0.375,71,0.642,74,0.511,75,0.487,79,1.422,84,1.091,85,0.979,87,0.4,88,0.195,90,0.553,91,0.7,99,0.31,101,1.71,103,0.473,104,1.35,105,0.738,110,0.811,113,1.164,115,1.556,117,0.501,118,0.211,119,3.562,121,1.976,122,1.166,125,1.638,127,0.406,129,0.298,130,0.382,133,0.737,134,1.541,135,0.264,136,0.457,137,0.588,138,1.218,139,0.978,143,0.347,146,0.338,147,0.406,148,0.91,150,0.269,154,0.868,155,1.547,161,1.648,164,0.742,165,0.419,168,0.629,171,1.071,172,0.967,174,0.494,178,0.331,180,0.384,182,1.097,183,1.429,186,1.196,188,1.036,189,0.359,190,0.382,191,1.503,196,2.184,200,0.419,201,0.447,203,0.378,211,0.629,214,0.244,223,0.979,224,0.875,225,0.462,227,0.419,228,1.148,231,0.438,239,1.487,243,2.971,249,0.335,251,0.312,263,0.85,265,0.426,271,0.576,275,0.878,277,0.605,278,0.38,279,2.366,280,0.289,282,0.378,283,0.375,286,0.367,293,0.395,296,1.121,300,0.817,301,1.741,304,3.053,308,1.291,311,3.278,316,0.85,319,0.266,331,0.642,349,0.648,350,0.672,351,0.286,355,4.642,357,1.285,360,0.468,375,0.412,386,1.516,390,0.572,402,0.143,404,1.808,406,1.061,413,1.465,414,0.48,430,0.438,431,1.321,432,3.793,440,0.406,446,0.322,450,1.496,451,0.323,457,0.452,459,0.395,465,0.956,482,0.384,484,1.483,487,1.197,502,1.405,514,1.519,531,0.859,536,0.92,547,3.774,549,1.139,580,1.019,583,1.272,586,0.375,593,0.305,601,0.48,604,0.968,608,0.329,613,0.468,615,0.977,617,2.877,656,0.678,659,0.473,663,0.81,665,0.331,672,0.422,678,0.707,679,1.091,681,0.817,682,0.333,683,0.937,686,0.69,687,0.434,694,0.382,695,0.314,698,0.338,705,0.43,706,0.767,708,1.218,723,0.679,729,2.224,736,0.384,745,0.868,751,1.749,754,0.277,763,0.473,773,0.412,779,0.392,783,0.48,784,1.465,790,0.352,827,0.954,834,0.438,835,0.656,851,0.591,853,0.511,859,0.389,889,0.382,917,0.468,927,0.48,963,0.331,972,0.328,982,0.422,993,0.692,998,0.452,1024,0.933,1073,0.947,1075,0.365,1092,0.409,1108,2.205,1109,1.566,1122,0.473,1123,0.866,1130,0.392,1131,0.773,1138,0.848,1150,0.341,1201,1.221,1213,0.84,1219,0.426,1250,0.462,1285,0.468,1350,0.572,1416,1.075,1431,1.704,1434,0.692,1441,0.886,1456,0.278,1458,1.017,1468,0.762,1475,0.447,1483,0.292,1490,0.403,1508,0.896,1513,0.866,1515,0.48,1529,0.494,1551,0.426,1559,1.849,1596,0.52,1615,0.572,1617,0.556,1619,2.139,1620,1.187,1625,5.071,1627,8.013,1629,5.996,1632,0.615,1633,0.615,1634,0.556,1635,0.615,1636,0.615,1637,0.615,1638,0.615,1639,1.969,1640,0.438,1641,0.997,1642,2.622,1643,0.487,1644,0.572,1645,1.698,1646,0.615,1647,1.177,1648,1.179,1649,0.615,1650,0.875,1651,0.615,1652,1.179,1653,0.615,1654,0.615,1655,1.698,1656,1.133,1657,0.615,1658,0.615,1659,0.494,1660,0.591,1661,0.473,1662,0.615,1663,0.615,1664,0.615,1665,0.572,1666,0.615,1667,1.179,1668,0.615,1669,0.908,1670,0.615,1671,0.572,1672,0.572,1673,0.615,1674,0.615,1675,0.615,1676,0.615,1677,0.615,1678,0.615,1679,0.615,1680,0.615,1681,0.556,1682,0.487,1683,0.615,1684,0.615,1685,0.615,1686,5.001,1687,0.615,1688,0.556,1689,0.615,1690,1.179,1691,0.502,1692,0.52,1693,0.572,1694,0.615,1695,0.615,1696,0.615,1697,0.615,1698,0.615,1699,0.615,1700,0.615,1701,0.615,1702,1.179,1703,1.698,1704,1.698,1705,0.615,1706,0.615,1707,0.615,1708,0.434,1709,1.179,1710,1.179,1711,1.179,1712,0.615,1713,0.615,1714,0.615,1715,0.494,1716,0.615,1717,0.615,1718,1.698,1719,2.178,1720,2.178,1721,1.179,1722,0.615,1723,1.179,1724,1.179,1725,0.615,1726,0.52,1727,0.442,1728,1.179,1729,1.179,1730,0.947,1731,0.615,1732,0.615,1733,1.344,1734,0.615,1735,0.344,1736,0.615,1737,1.179,1738,1.179,1739,1.179,1740,1.698,1741,0.487,1742,0.615,1743,0.615,1744,0.615,1745,0.615,1746,0.647,1747,0.502,1748,0.591,1749,0.572,1750,0.48,1751,0.615,1752,0.572,1753,0.615]],["component/32",[7,0.401]],["title/33-1",[402,17.184,1456,33.432]],["name/33-1",[]],["text/33-1",[]],["component/33-1",[]],["title/33-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/33-2",[]],["text/33-2",[]],["component/33-2",[]],["title/33-3",[8,18.856,150,32.262]],["name/33-3",[]],["text/33-3",[]],["component/33-3",[]],["title/33-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/33-4",[]],["text/33-4",[]],["component/33-4",[]],["title/33-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/33-5",[]],["text/33-5",[]],["component/33-5",[]],["title/33-6",[8,16.222,137,31.686,746,27.183]],["name/33-6",[]],["text/33-6",[]],["component/33-6",[]],["title/33-7",[1255,32.348,1457,33.624]],["name/33-7",[]],["text/33-7",[]],["component/33-7",[]],["title/33",[105,24.225,311,30.628,1609,35.079,1754,41.4]],["name/33",[14,0.397,1612,0.551,1754,0.678]],["text/33",[5,3.282,8,1.327,13,1.777,14,2.259,17,3.844,18,2.43,48,4.338,84,3.185,88,2.41,105,3.308,118,1.784,136,2.049,137,2.592,138,3.538,139,1.939,148,1.804,155,3.731,168,2.773,214,2.06,271,2.54,308,2.212,316,2.601,356,2.868,402,1.209,406,2.662,460,2.308,487,2.373,514,3.327,608,2.784,617,2.991,679,3.169,686,3.094,695,2.658,708,2.907,754,2.34,833,4.002,963,2.796,1075,4.518,1461,2.948,1468,3.359,1472,3.172,1615,4.836,1754,5.653,1755,4.056,1756,4.836,1757,5.881]],["component/33",[7,0.401]],["title/34-1",[402,17.184,1456,33.432]],["name/34-1",[]],["text/34-1",[]],["component/34-1",[]],["title/34-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/34-2",[]],["text/34-2",[]],["component/34-2",[]],["title/34-3",[8,18.856,150,32.262]],["name/34-3",[]],["text/34-3",[]],["component/34-3",[]],["title/34-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/34-4",[]],["text/34-4",[]],["component/34-4",[]],["title/34-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/34-5",[]],["text/34-5",[]],["component/34-5",[]],["title/34-6",[8,16.222,137,31.686,746,27.183]],["name/34-6",[]],["text/34-6",[]],["component/34-6",[]],["title/34-7",[1255,32.348,1457,33.624]],["name/34-7",[]],["text/34-7",[]],["component/34-7",[]],["title/34",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/34",[1758,0.856,1759,0.764]],["text/34",[3,0.918,8,0.548,10,2.048,13,0.734,19,1.342,29,4.093,34,0.966,40,0.745,42,0.985,56,1.066,63,1.407,71,1.169,84,3.754,88,0.679,99,2.492,104,1.921,113,1.655,118,2.028,135,0.923,136,1.004,137,1.86,138,0.997,142,1.184,154,1.097,155,0.807,161,3.647,166,1.333,171,1.056,172,1.655,183,1.56,186,1.179,188,2.276,191,0.854,200,1.462,214,0.85,228,1.131,247,1.342,251,1.893,263,1.866,279,1.016,301,0.909,316,1.074,319,0.928,350,1.223,377,1.169,391,2.617,402,1.375,406,2.566,474,1.529,486,5.615,502,0.994,514,1.377,523,1.325,525,0.997,553,2.332,593,1.063,656,1.235,686,2.01,726,1.359,746,1.595,754,0.966,786,1.189,867,1.462,968,3.692,1076,1.049,1119,1.852,1150,2.067,1195,1.325,1451,1.751,1461,2.115,1483,1.77,1487,1.751,1528,2.562,1538,2.607,1540,1.782,1544,1.529,1545,1.675,1552,1.852,1557,1.852,1558,2.201,1585,2.541,1622,1.675,1691,1.751,1758,3.845,1759,4.582,1760,2.146,1761,1.996,1762,3.218,1763,3.373,1764,1.996,1765,1.996,1766,2.146,1767,1.996,1768,1.996,1769,1.941,1770,4.267,1771,1.996,1772,1.632,1773,2.146,1774,2.146,1775,3.73,1776,2.146,1777,2.146,1778,2.146,1779,1.612,1780,1.852,1781,1.941,1782,1.941,1783,1.675,1784,1.815,1785,2.146]],["component/34",[7,0.401]],["title/35-1",[402,17.184,1456,33.432]],["name/35-1",[]],["text/35-1",[]],["component/35-1",[]],["title/35-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/35-2",[]],["text/35-2",[]],["component/35-2",[]],["title/35-3",[8,18.856,150,32.262]],["name/35-3",[]],["text/35-3",[]],["component/35-3",[]],["title/35-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/35-4",[]],["text/35-4",[]],["component/35-4",[]],["title/35-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/35-5",[]],["text/35-5",[]],["component/35-5",[]],["title/35-6",[8,16.222,137,31.686,746,27.183]],["name/35-6",[]],["text/35-6",[]],["component/35-6",[]],["title/35-7",[1255,32.348,1457,33.624]],["name/35-7",[]],["text/35-7",[]],["component/35-7",[]],["title/35",[1128,32.569,1558,47.283,1786,33.829]],["name/35",[1558,0.776,1786,0.798]],["text/35",[3,0.893,5,3.114,6,1.052,8,0.929,10,2.401,13,0.714,14,0.907,17,2.473,29,3.135,30,1.643,32,0.877,40,1.68,49,1.517,56,1.037,84,3.796,88,1.835,99,1.834,103,1.607,105,0.907,113,0.926,118,2.479,121,1.207,130,1.297,135,1.565,136,1.303,137,1.815,138,2.249,154,1.067,155,0.785,161,1.459,211,1.113,228,2.551,271,2.365,279,0.988,280,0.982,320,1.245,395,1.368,402,1.126,406,2.525,408,1.142,461,1.733,464,1.349,486,2.336,514,2.428,531,1.056,552,0.882,558,1.487,615,1.201,656,1.201,670,1.157,686,1.967,695,1.067,726,2.305,746,1.557,754,0.939,774,1.446,865,1.152,903,1.219,1106,1.132,1107,1.157,1128,1.219,1150,3.644,1195,1.289,1214,1.459,1390,1.313,1434,2.137,1461,1.184,1465,1.676,1469,1.399,1483,0.991,1517,1.568,1524,1.473,1526,1.517,1527,1.517,1528,1.434,1537,1.676,1538,1.459,1543,1.733,1544,2.593,1545,1.628,1551,1.446,1556,2.336,1558,4.586,1565,1.676,1585,2.48,1590,1.676,1759,1.213,1787,1.841,1788,1.942,1789,1.841,1790,1.628,1791,1.888,1792,2.087,1793,2.087,1794,1.733,1795,3.211,1796,1.841,1797,1.942,1798,1.841,1799,1.841,1800,1.841,1801,1.733,1802,1.733,1803,1.676,1804,1.841,1805,1.733,1806,1.765,1807,1.628,1808,1.676,1809,1.733,1810,1.942,1811,1.733,1812,1.841,1813,1.733,1814,2.196,1815,3.386,1816,4.407,1817,1.942,1818,1.533]],["component/35",[7,0.401]],["title/36-1",[402,17.184,1456,33.432]],["name/36-1",[]],["text/36-1",[]],["component/36-1",[]],["title/36-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/36-2",[]],["text/36-2",[]],["component/36-2",[]],["title/36-3",[8,18.856,150,32.262]],["name/36-3",[]],["text/36-3",[]],["component/36-3",[]],["title/36-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/36-4",[]],["text/36-4",[]],["component/36-4",[]],["title/36-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/36-5",[]],["text/36-5",[]],["component/36-5",[]],["title/36-6",[8,16.222,137,31.686,746,27.183]],["name/36-6",[]],["text/36-6",[]],["component/36-6",[]],["title/36-7",[1255,32.348,1457,33.624]],["name/36-7",[]],["text/36-7",[]],["component/36-7",[]],["title/36",[1128,32.569,1786,33.829,1819,55.503]],["name/36",[1786,0.798,1819,0.911]],["text/36",[3,1.152,5,3.578,6,0.75,8,1.156,10,2.65,14,1.968,17,2.73,18,0.695,29,3.092,30,1.666,32,2.204,34,0.67,36,0.679,40,1.572,42,0.683,56,1.338,79,2.123,84,3.676,88,2.307,94,1.653,99,0.75,105,0.646,112,0.706,117,0.632,118,2.195,125,0.713,134,1.009,135,1.158,136,1.219,137,1.343,138,1.715,144,0.664,146,0.817,148,0.516,150,0.65,154,0.761,155,0.56,158,1.473,161,1.815,169,0.883,172,0.66,183,1.126,194,1.792,196,1.612,199,0.913,211,0.793,221,1.031,228,1.419,234,0.869,254,1.883,267,0.883,271,2.562,279,0.704,280,0.7,301,0.63,320,0.888,336,1.384,388,0.913,401,0.702,402,1.054,406,2.237,408,0.814,414,1.161,431,0.903,455,0.769,458,0.961,465,1.183,486,4.105,502,2.098,508,0.897,514,2.363,520,1.081,531,0.752,547,0.668,549,1.408,552,0.628,557,0.897,558,1.06,577,2.252,615,2.124,647,0.942,656,0.856,670,0.824,679,0.619,682,0.807,684,0.781,686,1.5,695,0.761,726,2.337,746,1.152,754,0.67,772,0.93,788,0.908,835,0.828,903,0.869,933,1.005,964,1.177,1106,0.807,1107,0.824,1125,1.82,1150,2.51,1168,1.145,1214,1.04,1287,0.99,1301,1.235,1352,2.376,1390,1.695,1434,0.873,1461,0.844,1469,0.997,1483,0.706,1528,1.022,1538,1.04,1544,1.918,1545,1.161,1551,1.031,1556,0.955,1557,1.284,1558,2.673,1565,1.195,1585,2.514,1669,1.145,1735,0.832,1759,0.865,1790,1.161,1791,1.345,1794,1.235,1801,1.235,1802,1.235,1803,1.195,1805,1.235,1807,1.161,1808,1.195,1809,1.235,1811,1.235,1813,1.235,1816,2.048,1819,5.309,1820,1.384,1821,2.236,1822,3.433,1823,3.256,1824,1.384,1825,1.384,1826,1.488,1827,1.145,1828,1.488,1829,1.488,1830,1.488,1831,1.384,1832,1.384,1833,1.488,1834,1.488,1835,1.488,1836,1.488,1837,1.488,1838,1.384,1839,1.312,1840,1.488,1841,1.488,1842,1.488,1843,1.258,1844,1.384,1845,1.312,1846,1.131,1847,1.384,1848,1.384,1849,1.195,1850,2.694,1851,2.376,1852,1.06,1853,1.384]],["component/36",[7,0.401]],["title/37-1",[402,17.184,1456,33.432]],["name/37-1",[]],["text/37-1",[]],["component/37-1",[]],["title/37-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/37-2",[]],["text/37-2",[]],["component/37-2",[]],["title/37-3",[8,18.856,150,32.262]],["name/37-3",[]],["text/37-3",[]],["component/37-3",[]],["title/37-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/37-4",[]],["text/37-4",[]],["component/37-4",[]],["title/37-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/37-5",[]],["text/37-5",[]],["component/37-5",[]],["title/37-6",[8,16.222,137,31.686,746,27.183]],["name/37-6",[]],["text/37-6",[]],["component/37-6",[]],["title/37",[1128,32.569,1786,33.829,1854,58.665,1855,45.501]],["name/37",[1786,0.798,1855,1.073]],["text/37",[3,0.864,5,3.29,6,1.018,8,0.516,10,2.935,17,2.417,18,0.944,26,1.49,29,3.269,30,2.13,32,0.849,36,0.922,40,1.637,56,1.003,79,2.212,82,1.399,84,3.731,88,1.793,99,1.782,112,0.959,118,2.21,134,1.325,135,1.521,136,1.525,137,1.763,138,2.192,144,0.901,146,1.109,148,1.227,154,1.032,155,0.76,161,2.27,172,0.896,183,1.479,196,0.882,211,1.077,221,1.399,228,1.064,234,1.18,240,1.517,267,1.198,271,2.305,279,0.956,320,1.205,401,0.953,402,1.318,406,1.98,408,1.104,431,1.225,486,4.547,502,1.638,508,1.218,514,2.819,520,1.467,531,1.021,541,1.622,552,0.853,558,1.438,577,2.879,590,1.598,615,2.715,656,1.162,670,1.119,672,1.387,679,0.84,682,1.095,686,1.917,695,1.032,746,1.513,754,0.909,788,1.232,835,1.124,933,1.364,1106,1.095,1107,1.119,1125,1.364,1139,1.387,1150,3.139,1214,1.412,1287,1.343,1291,1.535,1390,2.225,1434,1.186,1461,1.145,1469,1.354,1538,1.412,1556,1.296,1557,1.742,1558,1.192,1585,3.214,1669,1.555,1735,1.129,1762,4.888,1789,3.12,1790,1.576,1806,1.708,1807,1.576,1816,2.689,1827,1.555,1839,1.782,1845,1.782,1846,1.535,1851,3.12,1852,1.438,1855,3.85,1856,2.125,1857,2.125,1858,2.125,1859,2.125,1860,2.125,1861,2.125,1862,2.125,1863,2.125,1864,2.125,1865,2.125,1866,2.125,1867,2.125,1868,2.125,1869,2.125,1870,2.125,1871,2.125,1872,2.125,1873,2.125,1874,2.125,1875,2.125,1876,2.125,1877,1.782]],["component/37",[7,0.401]],["title/38-1",[402,17.184,1456,33.432]],["name/38-1",[]],["text/38-1",[]],["component/38-1",[]],["title/38-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/38-2",[]],["text/38-2",[]],["component/38-2",[]],["title/38-3",[8,18.856,150,32.262]],["name/38-3",[]],["text/38-3",[]],["component/38-3",[]],["title/38-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/38-4",[]],["text/38-4",[]],["component/38-4",[]],["title/38-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/38-5",[]],["text/38-5",[]],["component/38-5",[]],["title/38-6",[8,16.222,137,31.686,746,27.183]],["name/38-6",[]],["text/38-6",[]],["component/38-6",[]],["title/38-7",[1255,32.348,1457,33.624]],["name/38-7",[]],["text/38-7",[]],["component/38-7",[]],["title/38",[1128,32.569,1786,33.829,1878,69.118]],["name/38",[1786,0.798,1878,1.135]],["text/38",[3,0.595,5,1.854,8,0.647,10,1.781,13,0.475,26,1.47,29,3.244,30,1.941,40,1.492,56,0.691,84,3.83,88,1.104,99,0.701,101,0.696,105,1.516,118,1.198,135,0.598,136,0.939,137,1.263,138,1.177,142,0.767,143,1.43,146,0.764,148,0.483,151,1.771,154,0.711,155,0.523,161,2.459,172,0.617,191,0.554,199,0.854,214,1.004,228,1.335,239,0.682,240,1.045,248,0.724,251,0.706,262,0.834,271,1.238,279,0.658,287,1.021,300,0.964,350,0.792,402,1.001,406,2.704,408,1.386,446,1.325,457,1.021,464,0.899,486,4.238,502,0.644,506,1.045,514,2.07,531,0.703,547,0.624,552,0.587,583,1.48,656,0.8,678,0.834,682,0.754,686,1.418,694,0.864,695,1.295,726,3.549,736,0.869,746,1.084,754,0.626,850,1.841,895,1.071,911,1.337,968,1.398,1106,0.754,1107,0.771,1150,2.384,1195,0.859,1214,0.972,1250,1.045,1305,1.117,1390,2.706,1434,0.817,1461,0.789,1465,1.117,1469,0.932,1483,2.042,1514,1.071,1517,1.045,1526,1.011,1527,1.011,1528,2.955,1537,1.117,1538,0.972,1544,0.991,1547,1.337,1549,1.337,1550,1.337,1551,0.964,1556,0.892,1557,1.2,1558,1.496,1567,1.337,1585,1.726,1590,1.117,1634,1.258,1691,1.135,1759,0.808,1761,1.294,1762,2.186,1763,1.258,1790,1.085,1803,2.035,1806,1.176,1807,1.085,1808,1.117,1817,1.294,1823,2.235,1839,1.227,1878,5.294,1879,1.463,1880,1.135,1881,1.463,1882,1.463,1883,1.463,1884,1.463,1885,1.463,1886,1.463,1887,1.463,1888,6.455,1889,2.357,1890,1.463,1891,1.463,1892,5.896,1893,5.896,1894,1.463,1895,1.463,1896,1.463,1897,1.463,1898,1.463,1899,1.463,1900,2.666,1901,1.463,1902,1.463,1903,1.463,1904,1.463,1905,1.463,1906,1.463,1907,1.463,1908,1.294,1909,1.463,1910,1.463,1911,1.463,1912,1.463,1913,1.463,1914,1.463,1915,1.463,1916,1.337,1917,2.666,1918,1.463,1919,1.463,1920,1.463,1921,1.463,1922,1.463,1923,1.463,1924,1.258,1925,1.463,1926,1.463,1927,1.463,1928,1.463,1929,1.463,1930,1.337,1931,1.463,1932,1.463,1933,1.155,1934,1.463,1935,1.463]],["component/38",[7,0.401]],["title/39-1",[343,64.077]],["name/39-1",[]],["text/39-1",[]],["component/39-1",[]],["title/39-2",[402,17.184,1129,38.042]],["name/39-2",[]],["text/39-2",[]],["component/39-2",[]],["title/39-3",[402,17.184,1128,43.146]],["name/39-3",[]],["text/39-3",[]],["component/39-3",[]],["title/39-4",[311,34.906,402,14.783,1609,39.979]],["name/39-4",[]],["text/39-4",[]],["component/39-4",[]],["title/39-5",[402,20.515]],["name/39-5",[]],["text/39-5",[]],["component/39-5",[]],["title/39-6",[236,39.251]],["name/39-6",[]],["text/39-6",[]],["component/39-6",[]],["title/39-7",[163,33.101,319,27.465,402,14.783]],["name/39-7",[]],["text/39-7",[]],["component/39-7",[]],["title/39-8",[296,27.183,402,14.783,1936,41.347]],["name/39-8",[]],["text/39-8",[]],["component/39-8",[]],["title/39-9",[7,12.805,79,23.287,134,18.607,163,25.873,871,34.721]],["name/39-9",[]],["text/39-9",[]],["component/39-9",[]],["title/39",[7,19.043,402,17.184]],["name/39",[631,1.45]],["text/39",[5,1.382,6,0.91,7,0.466,8,1.335,13,1.788,14,1.877,16,5.21,24,1.01,26,2.523,29,2.111,34,3.229,40,0.627,42,0.829,52,2.09,56,1.593,70,1.429,77,1.06,79,1.503,84,1.511,88,0.572,90,1.503,99,0.91,104,0.93,105,0.785,113,0.802,117,1.361,118,1.483,128,1.066,134,3.157,135,1.378,136,1.612,137,2.154,139,0.674,144,0.806,146,1.761,148,1.112,151,1.263,152,1.299,155,1.206,160,2.925,161,1.284,163,2.251,168,0.963,169,1.072,171,0.888,172,0.802,178,0.971,183,1.34,192,0.956,196,1.887,214,0.716,236,0.804,239,0.885,248,2.725,251,0.917,263,2.162,267,3.104,271,1.566,275,0.934,279,1.517,296,1.848,297,1.844,301,2.536,311,2.873,316,0.904,319,1.385,324,1.341,335,1.083,340,1.129,343,1.312,354,1.115,361,0.865,386,1.044,395,1.184,401,0.852,402,2.314,406,1.829,408,0.988,431,1.096,450,1.241,455,1.657,465,1.897,514,0.667,519,3.726,525,1.489,547,0.811,548,1.22,593,0.894,608,1.716,615,1.039,643,1.499,647,2.736,661,1.499,665,1.723,666,1.122,674,3.563,676,1.241,678,2.592,681,1.251,683,0.996,686,0.734,723,0.722,741,1.159,742,1.299,744,1.274,779,1.151,786,1.001,790,1.034,871,1.263,900,1.211,903,1.872,937,1.23,983,1.357,1076,2.111,1106,0.979,1107,1.001,1128,3.056,1129,3.695,1144,1.39,1166,1.474,1306,2.661,1400,1.001,1403,1.286,1418,1.736,1444,1.736,1468,1.167,1473,1.241,1477,1.039,1487,2.615,1558,1.066,1609,3.291,1610,1.184,1611,1.263,1708,1.274,1755,1.409,1758,1.175,1759,1.05,1819,1.251,1821,1.499,1855,1.474,1878,1.558,1936,2.085,1937,1.68,1938,1.68,1939,1.9,1940,1.68,1941,1.9,1942,2.772,1943,1.527,1944,1.68,1945,1.211,1946,1.499,1947,1.499,1948,1.527,1949,1.9,1950,1.326,1951,1.9,1952,1.474,1953,1.9,1954,1.9,1955,1.68,1956,1.9,1957,1.9,1958,1.9,1959,1.9,1960,1.9,1961,1.527,1962,1.474,1963,2.765,1964,1.558,1965,1.558,1966,1.9]],["component/39",[7,0.401]],["title/40-1",[0,39.238,1,51.636]],["name/40-1",[]],["text/40-1",[]],["component/40-1",[]],["title/40",[2,44.313,3,31.597]],["name/40",[2,0.789,3,0.563]],["text/40",[0,2.842,1,6.745,2,1.976,3,4.127,4,1.924,5,1.42,6,1.66,7,0.849,8,1.724,9,3.707,10,2.216,11,6.166,12,4.598,13,1.126,14,1.431,15,1.772,16,3.644,17,4.289,18,4.857,19,2.06,20,1.924,21,3.064,22,2.735,23,1.549,24,2.992,25,2.504,26,1.388,27,3.064,28,2.906,29,2.159,30,3.048,31,1.859,32,2.248,33,3.574,34,2.408,35,2.978,36,1.504,37,2.022,38,1.886,39,3.064,40,1.143,41,3.064,42,1.513,43,2.786,44,3.064,45,2.501,46,2.419,47,3.064,48,4.43,49,2.394,50,5.958,51,3.064,52,1.594,53,3.064,54,3.048,55,3.064,56,3.356,57,3.109,58,3.41,59,3.064,60,3.41,61,3.064,62,2.843,63,2.159,64,4.018,65,2.263,66,3.064,67,3.064,68,2.01,69,2.504,70,2.607,71,1.794,72,3.064,73,3.064,74,2.735,75,2.607,76,2.086,77,1.934]],["component/40",[7,0.401]],["title/41-1",[78,56.976]],["name/41-1",[]],["text/41-1",[]],["component/41-1",[]],["title/41-2",[45,41.22]],["name/41-2",[]],["text/41-2",[]],["component/41-2",[]],["title/41-3",[79,41.345]],["name/41-3",[]],["text/41-3",[]],["component/41-3",[]],["title/41-4",[80,62.807]],["name/41-4",[]],["text/41-4",[]],["component/41-4",[]],["title/41-5",[81,84.764]],["name/41-5",[]],["text/41-5",[]],["component/41-5",[]],["title/41-6",[11,37.709,12,34.172,82,44.029]],["name/41-6",[]],["text/41-6",[]],["component/41-6",[]],["title/41-7",[83,47.73,84,18.35,85,52.752]],["name/41-7",[]],["text/41-7",[]],["component/41-7",[]],["title/41-8",[9,61.1]],["name/41-8",[]],["text/41-8",[]],["component/41-8",[]],["title/41-9",[3,27.183,32,26.708,42,29.179]],["name/41-9",[]],["text/41-9",[]],["component/41-9",[]],["title/41-10",[86,46.845]],["name/41-10",[]],["text/41-10",[]],["component/41-10",[]],["title/41-11",[2,44.313,87,48.06]],["name/41-11",[]],["text/41-11",[]],["component/41-11",[]],["title/41-12",[11,37.709,12,34.172,88,20.111]],["name/41-12",[]],["text/41-12",[]],["component/41-12",[]],["title/41-13",[11,43.832,48,42.087]],["name/41-13",[]],["text/41-13",[]],["component/41-13",[]],["title/41-14",[29,25.643,88,20.111,89,52.752]],["name/41-14",[]],["text/41-14",[]],["component/41-14",[]],["title/41-15",[82,38.632,90,26.141,91,33.087,92,34.857]],["name/41-15",[]],["text/41-15",[]],["component/41-15",[]],["title/41-16",[10,23.093,48,31.77,90,26.141,93,32.738]],["name/41-16",[]],["text/41-16",[]],["component/41-16",[]],["title/41-17",[76,35.306,88,17.646,90,26.141,94,34.226]],["name/41-17",[]],["text/41-17",[]],["component/41-17",[]],["title/41-18",[90,29.793,95,42.597,96,31.151]],["name/41-18",[]],["text/41-18",[]],["component/41-18",[]],["title/41-19",[90,26.141,97,37.981,98,36.81,99,28.096]],["name/41-19",[]],["text/41-19",[]],["component/41-19",[]],["title/41-20",[90,26.141,100,47.149,101,27.899,102,31.619]],["name/41-20",[]],["text/41-20",[]],["component/41-20",[]],["title/41-21",[90,26.141,103,42.927,104,28.716,105,24.225]],["name/41-21",[]],["text/41-21",[]],["component/41-21",[]],["title/41-22",[48,28.301,90,23.287,106,32.55,107,35.376,108,35.376]],["name/41-22",[]],["text/41-22",[]],["component/41-22",[]],["title/41-23",[48,42.087,88,23.377]],["name/41-23",[]],["text/41-23",[]],["component/41-23",[]],["title/41-24",[88,23.377,109,62.461]],["name/41-24",[]],["text/41-24",[]],["component/41-24",[]],["title/41-25",[7,16.382,110,30.353,111,36.036]],["name/41-25",[]],["text/41-25",[]],["component/41-25",[]],["title/41-26",[110,30.353,112,30.163,113,28.207]],["name/41-26",[]],["text/41-26",[]],["component/41-26",[]],["title/41-27",[102,36.036,110,30.353,111,36.036]],["name/41-27",[]],["text/41-27",[]],["component/41-27",[]],["title/41-28",[48,36.208,105,27.609,110,30.353]],["name/41-28",[]],["text/41-28",[]],["component/41-28",[]],["title/41-29",[52,35.736,114,77.717]],["name/41-29",[]],["text/41-29",[]],["component/41-29",[]],["title/41-30",[29,25.643,88,20.111,89,52.752]],["name/41-30",[]],["text/41-30",[]],["component/41-30",[]],["title/41-31",[48,36.208,88,20.111,115,37.709]],["name/41-31",[]],["text/41-31",[]],["component/41-31",[]],["title/41-32",[110,35.281,116,41.887]],["name/41-32",[]],["text/41-32",[]],["component/41-32",[]],["title/41-33",[7,14.374,52,26.976,117,23.67,118,19.133]],["name/41-33",[]],["text/41-33",[]],["component/41-33",[]],["title/41-34",[52,21.665,92,27.995,110,21.389,112,21.255,113,19.877,119,31.893]],["name/41-34",[]],["text/41-34",[]],["component/41-34",[]],["title/41-35",[11,43.832,54,42.087]],["name/41-35",[]],["text/41-35",[]],["component/41-35",[]],["title/41-36",[29,25.643,88,20.111,89,52.752]],["name/41-36",[]],["text/41-36",[]],["component/41-36",[]],["title/41-37",[3,21.247,90,23.287,91,29.474,105,21.58,120,30.31]],["name/41-37",[]],["text/41-37",[]],["component/41-37",[]],["title/41-38",[82,34.414,90,23.287,92,31.051,93,29.164,121,28.72]],["name/41-38",[]],["text/41-38",[]],["component/41-38",[]],["title/41-39",[17,19.106,18,20.931,90,20.995,94,27.488,102,25.393,122,30.76]],["name/41-39",[]],["text/41-39",[]],["component/41-39",[]],["title/41-40",[17,19.106,18,20.931,90,20.995,95,30.017,123,31.893,124,34.475]],["name/41-40",[]],["text/41-40",[]],["component/41-40",[]],["title/41-41",[56,27.706,88,17.646,90,26.141,97,37.981]],["name/41-41",[]],["text/41-41",[]],["component/41-41",[]],["title/41-42",[88,20.111,99,32.021,113,28.207]],["name/41-42",[]],["text/41-42",[]],["component/41-42",[]],["title/41-43",[110,35.281,116,41.887]],["name/41-43",[]],["text/41-43",[]],["component/41-43",[]],["title/41-44",[105,27.609,110,30.353,115,37.709]],["name/41-44",[]],["text/41-44",[]],["component/41-44",[]],["title/41-45",[11,43.832,60,47.08]],["name/41-45",[]],["text/41-45",[]],["component/41-45",[]],["title/41-46",[29,25.643,88,20.111,89,52.752]],["name/41-46",[]],["text/41-46",[]],["component/41-46",[]],["title/41-47",[17,21.192,18,23.217,60,31.658,90,23.287,91,29.474]],["name/41-47",[]],["text/41-47",[]],["component/41-47",[]],["title/41-48",[90,26.141,93,32.738,110,26.632,125,26.717]],["name/41-48",[]],["text/41-48",[]],["component/41-48",[]],["title/41-49",[82,38.632,90,26.141,92,34.857,94,34.226]],["name/41-49",[]],["text/41-49",[]],["component/41-49",[]],["title/41-50",[76,31.451,88,15.719,90,23.287,95,33.294,126,36.88]],["name/41-50",[]],["text/41-50",[]],["component/41-50",[]],["title/41-51",[76,35.306,88,17.646,90,26.141,97,37.981]],["name/41-51",[]],["text/41-51",[]],["component/41-51",[]],["title/41-52",[90,26.141,100,47.149,127,36.81,128,32.911]],["name/41-52",[]],["text/41-52",[]],["component/41-52",[]],["title/41-53",[88,15.719,90,23.287,103,38.239,113,22.047,129,24.03]],["name/41-53",[]],["text/41-53",[]],["component/41-53",[]],["title/41-54",[88,14.172,90,20.995,102,25.393,106,29.346,122,30.76,130,27.821]],["name/41-54",[]],["text/41-54",[]],["component/41-54",[]],["title/41-55",[88,20.111,99,32.021,113,28.207]],["name/41-55",[]],["text/41-55",[]],["component/41-55",[]],["title/41-56",[110,35.281,116,41.887]],["name/41-56",[]],["text/41-56",[]],["component/41-56",[]],["title/41-57",[7,14.374,32,23.434,42,25.602,87,36.279]],["name/41-57",[]],["text/41-57",[]],["component/41-57",[]],["title/41-58",[131,84.764]],["name/41-58",[]],["text/41-58",[]],["component/41-58",[]],["title/41-59",[132,71,133,46.178]],["name/41-59",[]],["text/41-59",[]],["component/41-59",[]],["title/41-60",[134,33.036]],["name/41-60",[]],["text/41-60",[]],["component/41-60",[]],["title/41-61",[33,39.082,113,32.787]],["name/41-61",[]],["text/41-61",[]],["component/41-61",[]],["title/41-62",[135,37.916]],["name/41-62",[]],["text/41-62",[]],["component/41-62",[]],["title/41-63",[87,32.317,136,13.368,137,24.766,138,23.078,139,18.53]],["name/41-63",[]],["text/41-63",[]],["component/41-63",[]],["title/41-64",[16,50.316,88,23.377]],["name/41-64",[]],["text/41-64",[]],["component/41-64",[]],["title/41-65",[88,17.646,140,58.665,141,40.946,142,30.762]],["name/41-65",[]],["text/41-65",[]],["component/41-65",[]],["title/41-66",[13,25.254,105,32.092]],["name/41-66",[]],["text/41-66",[]],["component/41-66",[]],["title/41-67",[29,29.806,143,41.69]],["name/41-67",[]],["text/41-67",[]],["component/41-67",[]],["title/41-68",[110,30.353,139,23.708,144,28.362]],["name/41-68",[]],["text/41-68",[]],["component/41-68",[]],["title/41-69",[7,16.382,145,42.597,146,34.906]],["name/41-69",[]],["text/41-69",[]],["component/41-69",[]],["title/41",[147,48.764,148,25.631]],["name/41",[10,0.545,42,0.604]],["text/41",[2,0.792,3,1.501,4,0.167,6,1.85,7,1.925,8,1.261,9,0.915,10,2.417,11,2.857,12,1.797,13,1.022,14,0.358,15,0.153,16,2.158,17,1.497,18,0.503,19,0.178,20,0.327,28,0.252,29,0.975,32,1.257,33,0.823,34,1.426,36,0.376,37,0.175,38,0.616,40,0.619,42,1.964,43,0.473,45,0.617,48,3.546,50,0.494,52,2.137,54,2.594,56,0.278,57,0.626,58,0.182,60,2.237,63,1.02,68,0.95,69,0.217,70,1.751,71,0.847,74,0.683,75,0.852,76,1.267,77,0.775,79,0.386,80,1.108,81,0.538,82,2.544,83,0.809,84,0.639,85,0.464,86,0.437,87,1.701,88,1.713,89,0.683,90,1.402,92,1.511,96,0.763,98,1.461,99,2.89,101,1.672,102,2.657,104,0.554,105,2.491,107,0.941,108,0.586,109,0.473,110,2.788,111,4.511,112,0.135,113,3.315,115,2.538,116,2.343,117,2.2,118,1.418,119,0.398,122,1.225,125,0.268,126,3.848,128,0.635,129,0.639,130,0.821,131,1.496,132,0.274,133,0.35,134,1.755,135,0.861,136,0.222,137,0.279,139,0.493,141,0.21,142,0.729,143,1.13,144,0.694,146,0.307,148,0.458,149,0.3,150,0.125,151,0.391,152,0.592,153,0.22,154,0.421,155,0.832,156,0.3,157,3.929,158,0.45,159,0.3,160,0.739,161,1.339,162,0.21,163,0.149,164,0.677,165,1.214,166,2.18,167,0.473,168,0.83,169,0.639,170,0.826,171,1.286,172,1.7,173,0.3,174,0.229,175,0.3,176,0.3,177,0.265,178,1.406,179,0.201,180,0.673,181,0.214,182,0.265,183,0.119,184,0.494,185,0.395,186,0.307,187,0.95,188,0.502,189,0.771,190,0.177,191,0.797,192,0.943,193,0.3,194,1.866,195,0.357,196,0.68,197,1.876,198,0.3,199,1.945,200,0.733,201,0.207,202,0.223,203,0.505,204,0.241,205,0.229,206,1.143,207,0.237,208,0.252,209,0.203,210,0.3,211,1.289,212,0.3,213,0.3,214,1.111,215,0.598,216,0.3,217,0.3,218,0.3,219,0.3,220,0.598,221,0.198,222,0.683,223,0.237,224,0.288,225,0.214,226,0.711,227,0.194,228,0.15,229,0.3,230,0.258,231,1.108,232,0.464,233,0.726,234,0.771,235,0.265,236,0.127,237,0.589,238,0.42,239,0.14,240,0.809,241,0.464,242,0.214,243,1.993,244,0.3,245,0.398,246,0.246,247,2.761,248,0.561,249,0.305,250,0.205,251,0.145,252,0.621,253,0.381,254,0.199,255,0.933,256,0.252,257,0.258,258,0.223,259,0.265,260,0.217,261,0.246,262,1.45,263,0.412,264,1.114,265,0.198,266,0.22,267,0.639,268,0.184,269,0.3,270,0.879,271,0.139,272,0.471,273,0.237,274,0.589,275,0.425,276,0.3,277,0.798,278,0.961,279,0.625,280,0.838,281,0.866,282,0.175,283,0.174,284,1.637,285,0.437,286,0.17,287,0.21,288,0.237,289,0.223,290,0.589,291,1.133,292,1.68,293,0.359,294,3.978,295,0.3,296,0.352,297,1.152,298,0.589,299,0.3,300,0.198,301,1.486,302,0.3,303,0.3,304,0.611,305,0.3,306,0.3,307,0.3,308,0.238,309,0.494,310,1.133,311,0.591,312,0.3,313,2.116,314,0.265,315,1.06,316,0.661,317,0.203,318,0.866,319,0.771,320,1.674,321,1.658,322,0.782,323,1.637,324,0.212,325,0.186,326,1.133,327,1.061,328,0.223,329,0.3,330,0.892,331,0.586,332,0.233,333,0.174,334,0.3,335,1.07,336,1.658,337,0.246,338,0.22,339,0.3,340,1.754,341,0.336,342,1.27,343,0.782,344,0.237,345,0.894,346,0.829,347,1.061,348,0.892,349,2.349,350,0.469,351,0.26,352,0.212,353,0.252,354,0.176,355,0.885,356,0.594,357,0.486,358,0.3,359,1.876,360,0.818,361,1.253,362,0.3,363,0.3,364,0.589,365,1.133,366,0.589,367,0.866,368,0.589,369,0.3,370,0.3,371,0.589,372,1.133,373,0.3,374,0.214,375,0.191,376,0.3,377,0.719,378,0.203,379,1.096,380,0.866,381,0.766,382,0.766,383,1.637,384,0.71,385,1.133,386,0.623,387,0.866,388,0.661,389,0.265,390,0.766,391,0.435,392,0.766,393,0.274,394,0.188,395,0.187,396,0.258,397,0.852,398,0.217,399,0.3,400,0.3,401,0.135,402,0.13,403,0.212,404,0.237,405,0.258,406,0.7,407,0.3,408,0.306,409,0.3,410,0.3,411,0.226,412,0.395,413,0.246,414,0.223,415,0.198,416,0.3,417,0.3,418,0.449,419,0.589,420,0.407,421,0.161,422,0.589,423,1.133,424,0.21,425,0.265,426,0.274,427,0.3,428,0.464,429,0.199,430,0.203,431,0.339,432,0.229,433,0.3,434,0.265,435,0.3,436,0.483,437,0.589,438,0.21,439,0.635,440,0.369,441,0.354,442,0.21,443,0.456,444,0.3,445,0.184,446,0.149,447,0.274,448,0.3,450,0.196,451,0.294,452,0.205,453,0.538,454,0.3,455,0.289,456,0.3,457,0.21,458,0.184,459,0.359,460,0.127,461,0.464,462,0.3,463,0.3,464,0.184,465,0.125,466,0.169,467,1.658,468,0.883,469,0.3,470,1.908,471,0.3,472,0.866,473,0.3,474,0.203,475,0.258,476,0.672,477,0.3,478,0.437,479,1.39,480,0.246,481,2.781,482,1.511,483,1.81,484,0.381,485,0.3,486,0.359,487,1.01,488,0.3,489,0.3,490,0.3,491,0.3,492,0.203,493,0.464,494,0.3,495,1.39,496,0.3,497,0.3,498,0.3,499,0.3,500,1.321,501,0.3,502,0.612,503,0.506,504,1.637,505,0.187,506,0.618,507,0.589,508,0.172,509,0.696,510,0.274,511,0.237,512,0.3,513,0.237,514,0.398,515,0.3,516,0.246,517,0.173,518,0.398,519,0.586,520,0.207,521,0.194,522,0.274,523,0.176,524,0.3,525,0.26,526,0.237,527,0.3,528,0.168,529,0.3,530,0.3,531,0.144,532,0.395,533,0.3,534,0.3,535,0.3,536,0.223,537,0.3,538,0.226,539,0.22,540,0.3,541,0.229,542,0.265,543,0.3,544,1.035,545,0.575,546,0.22,547,0.251,548,0.193,549,0.149,550,0.3,551,0.3,552,0.121,553,0.178,554,0.3,555,0.3,556,0.178,557,0.172,558,0.203,740,0.233,913,0.233,1010,0.203,1289,0.241,1310,0.223]],["component/41",[7,0.401]],["title/42",[32,26.708,45,29.703,130,39.481]],["name/42",[45,0.615,559,1.223]],["text/42",[11,7.147,16,5.09,26,3.148,45,3.492,48,4.257,52,3.615,54,4.257,60,4.762,77,5.752,91,4.434,155,4.112,191,2.974,232,6.202,560,6.95,561,6.95,562,6.95,563,6.95,564,7.182,565,7.861,566,6.95,567,5.374,568,6.95]],["component/42",[7,0.401]],["title/43-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/43-1",[]],["text/43-1",[]],["component/43-1",[]],["title/43-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/43-2",[]],["text/43-2",[]],["component/43-2",[]],["title/43-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/43-3",[]],["text/43-3",[]],["component/43-3",[]],["title/43-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/43-4",[]],["text/43-4",[]],["component/43-4",[]],["title/43-5",[148,25.631,582,61.318]],["name/43-5",[]],["text/43-5",[]],["component/43-5",[]],["title/43-6",[84,9.983,136,9.304,137,17.238,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156]],["name/43-6",[]],["text/43-6",[]],["component/43-6",[]],["title/43-7",[586,53.814]],["name/43-7",[]],["text/43-7",[]],["component/43-7",[]],["title/43",[587,73.205]],["name/43",[587,1.949]],["text/43",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,137,1.771,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303]],["component/43",[7,0.401]],["title/44-1",[7,22.734]],["name/44-1",[]],["text/44-1",[]],["component/44-1",[]],["title/44-2",[4,43.146,7,19.043]],["name/44-2",[]],["text/44-2",[]],["component/44-2",[]],["title/44-3",[239,31.151,308,27.045,629,59.109]],["name/44-3",[]],["text/44-3",[]],["component/44-3",[]],["title/44-4",[7,19.043,8,18.856]],["name/44-4",[]],["text/44-4",[]],["component/44-4",[]],["title/44-5",[7,14.374,104,28.716,117,23.67,118,19.133]],["name/44-5",[]],["text/44-5",[]],["component/44-5",[]],["title/44-6",[118,21.806,402,14.783,583,37.119]],["name/44-6",[]],["text/44-6",[]],["component/44-6",[]],["title/44-7",[402,17.184,630,46.471]],["name/44-7",[]],["text/44-7",[]],["component/44-7",[]],["title/44-8",[14,27.609,183,26.577,349,34.906]],["name/44-8",[]],["text/44-8",[]],["component/44-8",[]],["title/44",[7,19.043,78,47.724]],["name/44",[631,1.45]],["text/44",[2,1.51,5,1.085,7,0.649,8,1.092,9,1.745,11,1.494,13,2.52,14,3.202,17,1.825,24,1.408,29,1.726,32,1.058,34,2.511,52,2.07,57,1.463,71,1.371,84,0.727,86,1.337,104,1.297,105,2.858,112,2.031,117,3.129,118,3.331,125,2.05,126,1.869,129,1.218,134,1.603,136,1.984,138,1.17,139,1.596,144,1.909,148,1.936,150,1.1,153,1.938,155,1.609,160,2.392,161,3.211,163,1.312,178,1.354,181,1.891,186,2.35,196,1.869,214,0.998,224,1.297,226,1.662,234,1.471,247,2.675,264,0.885,275,1.302,280,2.012,282,1.546,286,2.552,292,1.414,296,2.386,301,1.066,308,3.136,315,1.715,316,1.26,320,1.502,338,1.938,401,2.018,402,1.53,421,1.421,445,1.627,455,2.884,458,1.627,460,1.118,514,1.58,523,1.555,525,1.17,526,3.551,552,1.063,557,2.581,580,1.51,604,1.435,632,2.518,633,2.342,634,2.342,635,2.277,636,3.691,637,2.055,638,2.342,639,2.518,640,2.09,641,2.172,642,2.055,643,2.09,644,2.129,645,2.172,646,2.277,647,2.709,648,2.342,649,2.022,650,2.342,651,3.979,652,2.172,653,2.649,654,1.83,655,2.518,656,2.462,657,2.342,658,2.277,659,1.938,660,2.277,661,2.09,662,2.129,663,2.939,664,2.055,665,2.301,666,1.564,667,3.979,668,1.354,669,2.42,670,2.371,671,2.342,672,1.73,673,1.292,674,3.8,675,1.73,676,1.73,677,1.616,678,2.567,679,1.048,680,1.322,681,1.745,682,1.365,683,1.389,684,1.322,685,2.649,686,1.023]],["component/44",[7,0.401]],["title/45-1",[136,19.88,684,38.775]],["name/45-1",[]],["text/45-1",[]],["component/45-1",[]],["title/45-2",[88,23.377,142,40.753]],["name/45-2",[]],["text/45-2",[]],["component/45-2",[]],["title/45-3",[6,32.021,687,44.832,688,51.858]],["name/45-3",[]],["text/45-3",[]],["component/45-3",[]],["title/45-4",[411,58.446,689,52.112]],["name/45-4",[]],["text/45-4",[]],["component/45-4",[]],["title/45-5",[136,19.88,137,36.831]],["name/45-5",[]],["text/45-5",[]],["component/45-5",[]],["title/45-6",[487,33.721,680,38.775]],["name/45-6",[]],["text/45-6",[]],["component/45-6",[]],["title/45-7",[236,39.251]],["name/45-7",[]],["text/45-7",[]],["component/45-7",[]],["title/45-8",[3,37.722]],["name/45-8",[]],["text/45-8",[]],["component/45-8",[]],["title/45",[136,23.734]],["name/45",[631,1.45]],["text/45",[0,1.019,3,1.446,4,1.12,5,0.827,6,2.283,7,0.494,8,0.863,12,1.031,15,1.031,17,2.657,18,0.896,29,1.364,30,0.865,32,0.806,34,1.521,35,1.067,36,2.493,38,1.935,40,0.665,52,1.635,54,1.093,57,1.964,68,1.17,69,1.458,77,3.206,84,0.554,86,1.795,88,1.728,91,1.138,93,1.126,99,2.283,110,0.916,112,0.91,113,1.5,117,2.318,121,1.109,123,1.366,125,0.919,133,2.113,134,1.266,135,2.678,136,2.563,137,3.106,138,1.57,139,2.768,142,1.864,148,0.665,155,2.343,157,1.565,160,1.072,166,1.191,171,2.228,172,2.765,178,1.031,179,1.353,183,0.802,192,1.015,196,1.476,211,1.023,214,3.289,226,2.231,248,0.999,249,1.044,252,0.902,264,0.674,272,1.098,283,1.17,286,1.144,294,1.784,297,1.103,301,0.812,308,1.928,309,1.692,319,0.829,327,1.54,331,1.84,333,1.17,335,1.15,340,1.199,377,1.84,381,1.784,391,1.015,402,0.446,411,1.517,412,1.353,421,1.082,443,1.063,446,1.003,455,1.747,458,1.239,487,2.843,505,1.257,509,2.927,536,3.535,547,0.861,548,2.283,549,2.369,552,0.81,556,1.199,557,1.157,583,1.974,593,0.95,608,1.027,612,1.592,622,2.538,636,1.654,663,2.321,665,1.031,668,1.817,673,1.734,674,1.306,679,1.886,680,3.607,682,1.04,683,1.058,684,1.774,689,1.353,690,1.214,691,1.654,692,2.017,693,2.017,694,1.191,695,2.792,696,1.565,697,1.163,698,1.053,699,1.784,700,1.784,701,2.017,702,1.784,703,1.784,704,1.784,705,1.34,706,2.199,707,1.784,708,2.534,709,1.784,710,2.017,711,2.154,712,1.257,713,1.784,714,1.784,715,2.017,716,1.592,717,1.44,718,1.784,719,1.114,720,1.734,721,2.017,722,4.214,723,0.767,724,1.621,725,1.784,726,1.214,727,1.692,728,1.103,729,1.248,730,1.44,731,1.54,732,3.037,733,1.34,734,1.393,735,3.061,736,2.113,737,1.692,738,1.592,739,1.918,740,1.565,741,1.23,742,1.379,743,1.126,744,1.353]],["component/45",[7,0.401]],["title/46-1",[78,56.976]],["name/46-1",[]],["text/46-1",[]],["component/46-1",[]],["title/46-2",[84,18.35,142,35.06,745,32.486]],["name/46-2",[]],["text/46-2",[]],["component/46-2",[]],["title/46",[136,15.007,137,27.802,214,22.092,264,19.605]],["name/46",[137,0.656,214,0.521]],["text/46",[8,2.362,30,2.459,34,2.452,86,2.894,105,2.367,117,3.344,118,1.869,129,2.635,135,3.387,136,2.12,137,3.928,142,5.105,144,2.431,155,2.963,168,2.905,183,2.278,214,2.158,249,2.966,264,1.915,278,3.364,391,2.882,487,2.487,514,2.012,536,4.25,630,3.427,666,3.384,717,4.091,719,3.166,720,4.926,726,3.449,743,3.198,746,2.33,747,5.731,748,5.731,749,5.731,750,5.731,751,4.375,752,4.876,753,5.731,754,2.452,755,4.375,756,3.808,757,5.067,758,4.194,759,5.731,760,3.843,761,5.731,762,4.141,763,4.194,764,3.918,765,3.958,766,3.711]],["component/46",[7,0.401]],["title/47-1",[729,57.377]],["name/47-1",[]],["text/47-1",[]],["component/47-1",[]],["title/47-2",[84,21.33,706,48.06]],["name/47-2",[]],["text/47-2",[]],["component/47-2",[]],["title/47-3",[514,27.277,706,48.06]],["name/47-3",[]],["text/47-3",[]],["component/47-3",[]],["title/47-4",[786,48.87]],["name/47-4",[]],["text/47-4",[]],["component/47-4",[]],["title/47-5",[1967,66.236]],["name/47-5",[]],["text/47-5",[]],["component/47-5",[]],["title/47-6",[52,30.744,350,36.208,680,33.358]],["name/47-6",[]],["text/47-6",[]],["component/47-6",[]],["title/47-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/47-7",[]],["text/47-7",[]],["component/47-7",[]],["title/47-8",[502,40.851]],["name/47-8",[]],["text/47-8",[]],["component/47-8",[]],["title/47",[136,17.103,487,29.01,680,33.358]],["name/47",[487,0.6,680,0.69]],["text/47",[4,0.98,7,0.774,8,0.428,13,0.574,14,0.729,17,2.115,18,1.403,20,0.98,26,2.401,29,0.677,32,0.705,35,3.172,36,0.766,38,2.331,46,1.232,52,2.398,71,0.914,84,2.53,96,0.822,101,3.44,108,1.195,110,0.801,112,1.933,117,2.919,118,1.955,125,1.951,134,2.754,136,1.851,142,0.926,148,0.582,155,1.864,157,2.449,161,0.672,163,0.874,164,1.055,165,1.143,170,1.049,171,1.476,172,2.529,178,0.902,180,1.049,195,1.069,196,2.165,214,1.189,226,1.981,239,0.822,247,1.049,248,1.563,250,1.207,252,1.915,255,1.8,263,2.48,275,0.867,277,2.089,279,0.794,280,0.789,297,2.343,301,2.912,315,1.143,319,0.725,327,1.347,331,2.217,340,1.049,346,1.291,347,1.347,351,0.779,375,1.124,377,1.634,378,1.195,386,0.97,391,2.154,395,1.099,398,1.275,418,1.347,430,1.195,446,0.877,451,0.881,452,1.207,455,3.8,458,1.084,465,0.737,487,3.546,505,1.099,508,1.012,514,1.504,525,2.303,547,0.753,583,1.753,597,0.98,604,2.32,608,0.898,622,2.254,665,0.902,673,1.54,679,3.757,680,4.982,682,0.91,683,1.656,686,1.655,689,1.183,698,0.921,705,1.173,708,0.938,712,3.248,729,1.091,730,3.058,731,1.347,732,2.729,733,1.173,734,1.219,735,2.751,736,2.546,737,1.48,738,1.393,741,1.926,745,0.858,770,1.56,771,2.449,772,1.876,773,1.124,774,1.162,775,1.309,776,1.56,777,1.56,778,1.56,779,2.595,780,1.447,781,2.589,782,1.48,783,1.309,785,2.647,786,1.663,787,1.56,788,1.024,789,1.517,790,0.96,889,1.864,973,1.291,985,1.069,993,0.985,1010,1.195,1033,2.929,1076,0.82,1097,2.117,1219,1.162,1416,1.062,1478,1.419,1551,1.162,1640,1.195,1659,1.347,1730,1.347,1733,1.327,1933,1.393,1943,1.419,1967,1.26,1968,1.612,1969,1.447,1970,1.48,1971,2.885,1972,1.612,1973,2.647,1974,1.517,1975,1.612,1976,1.612,1977,1.612,1978,1.48,1979,1.612,1980,1.612]],["component/47",[7,0.401]],["title/48",[468,43.669]],["name/48",[631,1.45]],["text/48",[]],["component/48",[7,0.401]],["title/49-1",[3,37.722]],["name/49-1",[]],["text/49-1",[]],["component/49-1",[]],["title/49-2",[102,50.007]],["name/49-2",[]],["text/49-2",[]],["component/49-2",[]],["title/49-3",[139,23.708,296,27.183,514,23.467]],["name/49-3",[]],["text/49-3",[]],["component/49-3",[]],["title/49-4",[90,23.287,391,26.28,859,31.451,889,30.859,890,32.091]],["name/49-4",[]],["text/49-4",[]],["component/49-4",[]],["title/49",[135,37.916]],["name/49",[631,1.45]],["text/49",[3,1.389,5,1.4,8,0.829,10,2.19,14,2.297,17,1.386,29,1.31,31,1.833,37,1.993,38,1.859,40,1.127,79,1.523,84,2.77,86,2.809,88,1.673,107,3.766,112,2.51,113,2.969,117,1.379,118,1.114,122,2.231,134,1.981,135,3.649,136,0.874,142,2.917,148,1.127,152,2.336,155,1.222,178,1.746,183,2.797,196,1.418,243,4.208,248,1.692,249,1.769,251,1.648,252,3.145,253,2.212,254,2.27,263,1.625,275,1.679,296,2.262,313,4.235,319,2.891,320,1.938,328,2.534,342,3.122,351,1.509,356,1.792,377,1.769,391,2.798,439,3.948,443,1.8,451,1.705,502,1.504,509,4.321,514,2.47,548,4.519,549,3.497,552,1.372,556,4.819,593,1.608,597,1.897,619,2.25,668,2.843,683,1.792,689,2.291,711,3.37,712,3.465,719,1.887,743,1.907,764,2.336,833,2.5,859,2.056,891,3.021,892,3.021,893,2.194,894,2.212,895,2.5,896,2.144,897,2.865,898,2.608,899,3.021,900,2.177,901,2.865,902,2.865,903,1.897,904,2.534,905,3.417,906,3.021,907,2.411,908,3.021,909,2.336,910,2.043,911,3.122,912,5.563,913,2.65,914,3.417,915,3.417,916,3.417]],["component/49",[7,0.401]],["title/50-1",[236,39.251]],["name/50-1",[]],["text/50-1",[]],["component/50-1",[]],["title/50-2",[34,33.244,754,33.244]],["name/50-2",[]],["text/50-2",[]],["component/50-2",[]],["title/50-3",[917,67.039]],["name/50-3",[]],["text/50-3",[]],["component/50-3",[]],["title/50-4",[918,67.892]],["name/50-4",[]],["text/50-4",[]],["component/50-4",[]],["title/50-5",[919,77.795]],["name/50-5",[]],["text/50-5",[]],["component/50-5",[]],["title/50-6",[351,40.973]],["name/50-6",[]],["text/50-6",[]],["component/50-6",[]],["title/50-7",[394,48.764,754,33.244]],["name/50-7",[]],["text/50-7",[]],["component/50-7",[]],["title/50-8",[36,33.721,137,36.831]],["name/50-8",[]],["text/50-8",[]],["component/50-8",[]],["title/50-9",[191,35.099]],["name/50-9",[]],["text/50-9",[]],["component/50-9",[]],["title/50-10",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/50-10",[]],["text/50-10",[]],["component/50-10",[]],["title/50-11",[110,23.724,118,17.044,264,17.464,752,26.176,762,37.759]],["name/50-11",[]],["text/50-11",[]],["component/50-11",[]],["title/50-12",[754,39.689]],["name/50-12",[]],["text/50-12",[]],["component/50-12",[]],["title/50-13",[264,25.971,679,30.741]],["name/50-13",[]],["text/50-13",[]],["component/50-13",[]],["title/50-14",[752,33.489,754,28.6,762,48.309]],["name/50-14",[]],["text/50-14",[]],["component/50-14",[]],["title/50-15",[148,19.348,155,20.975,514,20.59,754,25.095]],["name/50-15",[]],["text/50-15",[]],["component/50-15",[]],["title/50-16",[135,27.323,752,33.489,754,28.6]],["name/50-16",[]],["text/50-16",[]],["component/50-16",[]],["title/50-17",[502,40.851]],["name/50-17",[]],["text/50-17",[]],["component/50-17",[]],["title/50-18",[923,82.026]],["name/50-18",[]],["text/50-18",[]],["component/50-18",[]],["title/50",[136,17.103,144,28.362,401,29.976]],["name/50",[631,1.45]],["text/50",[3,0.235,4,0.321,5,1.993,6,0.533,8,1.472,14,0.238,15,0.822,17,1.61,18,0.92,19,0.956,20,1.149,23,0.258,24,1.329,25,0.803,26,0.445,29,1.259,30,0.69,31,0.31,32,3.109,34,0.688,35,1.537,36,1.424,37,0.337,38,0.314,40,0.19,42,0.252,52,0.511,57,0.614,68,0.645,69,0.417,71,1.071,76,0.669,79,2.704,82,0.732,84,3.005,88,1.289,90,0.717,93,0.322,96,1.165,101,1.189,106,0.36,107,0.391,110,0.94,111,0.599,112,0.934,113,0.244,115,0.907,117,1.602,118,1.673,120,1.201,121,0.611,122,1.05,123,0.391,124,0.423,125,1.139,127,0.362,134,1.169,135,0.657,136,0.84,137,0.981,139,1.52,142,0.583,143,1.342,144,1.232,145,0.708,148,0.53,155,1.038,160,0.307,161,0.424,163,1.025,166,0.657,168,0.293,169,0.627,171,0.52,172,1.225,178,0.295,181,0.412,183,0.994,186,0.581,191,0.421,192,0.29,194,0.365,196,1.038,200,0.72,201,0.399,214,0.606,224,0.283,226,1.009,239,1.529,243,0.962,251,0.279,252,1.298,255,0.329,256,0.484,262,0.634,263,2.886,264,0.537,266,0.423,267,1.411,271,0.268,272,0.605,275,1.229,277,1.774,278,0.339,280,0.497,282,0.649,283,0.335,285,0.428,286,0.327,287,0.403,292,0.594,296,0.235,300,1.059,301,1.725,304,0.785,308,1.175,316,0.984,317,0.391,319,0.457,331,0.299,332,0.448,333,0.335,341,0.329,349,0.581,350,0.313,351,1.104,355,0.368,375,0.368,377,0.576,388,0.337,394,1.009,398,0.417,401,1.78,402,0.128,406,1.091,412,0.387,415,0.38,420,0.399,421,1.761,424,0.403,439,0.324,440,0.362,441,0.669,442,0.403,445,0.355,446,0.799,451,0.288,455,2.875,468,1.177,470,0.488,482,0.661,492,0.391,502,0.708,505,0.36,508,1.187,509,0.683,514,2.463,517,0.927,521,0.72,523,0.653,525,0.71,531,0.278,547,0.686,548,1.033,549,1.029,552,0.232,553,0.343,570,0.938,577,0.335,580,0.917,581,0.428,583,0.321,586,0.335,593,0.757,596,0.36,597,0.321,602,0.417,603,0.345,615,1.132,617,1.795,621,0.794,625,0.862,630,0.345,641,0.474,665,0.568,670,2.835,675,0.377,676,1.05,679,0.989,682,0.573,684,1.638,686,1.405,688,0.448,689,0.387,698,0.581,705,0.384,711,0.674,717,0.412,719,0.614,723,0.423,732,0.708,733,0.739,734,1.727,741,0.352,745,0.781,752,1.037,754,1.699,760,0.387,762,2.098,763,0.814,764,1.71,766,0.72,775,1.193,790,0.875,835,0.306,850,0.399,854,0.72,865,0.303,867,0.72,873,0.371,894,2.355,896,0.698,904,0.825,917,1.162,918,2.402,919,2.752,920,1.557,921,1.58,924,0.434,925,0.434,926,0.448,927,0.428,928,0.448,929,0.417,930,0.408,931,0.412,932,1.896,933,1.033,934,2.821,935,0.577,936,1.557,937,0.374,938,1.535,939,1.422,940,0.956,941,0.577,942,0.496,943,1.05,944,1.112,945,0.51,946,0.51,947,2.217,948,0.474,949,1.759,950,0.456,951,0.912,952,0.577,953,0.577,954,1.112,955,1.422,956,0.51,957,0.577,958,1.348,959,0.51,960,0.51,961,2.027,962,1.606,963,0.568,964,2.735,965,2.902,966,0.374,967,0.981,968,0.843,969,0.51,970,0.746,971,0.51,972,0.564,973,1.515,974,0.474,975,1.319,976,1.909,977,0.51,978,0.484,979,0.51,980,0.428,981,0.448,982,0.377,983,0.794,984,0.988,985,0.674,986,0.549,987,1.83,988,0.983,989,0.474,990,0.441,991,0.448,992,0.577,993,0.322,994,0.474,995,0.474,996,0.474,997,0.474,998,1.122,999,0.474,1000,0.474,1001,0.428,1002,0.474,1003,0.474,1004,0.387,1005,0.196,1006,1.698,1007,0.474,1008,1.354,1009,0.474,1010,0.391,1011,0.428,1012,0.423,1013,0.428,1014,0.912,1015,1.209,1016,1.112,1017,0.387,1018,0.474,1019,0.448,1020,0.983,1021,0.474,1022,1.209,1023,0.51,1024,0.434,1025,0.474,1026,0.51,1027,0.51,1028,0.51,1029,0.51,1030,0.549,1031,1.135,1032,0.51,1033,0.76,1034,0.51,1035,0.51,1036,0.51,1037,0.51,1038,0.51,1039,0.51,1040,0.331,1041,0.51,1042,0.51,1043,0.51,1044,0.51,1045,0.474,1046,0.932,1047,0.448,1048,0.849,1049,0.456,1050,0.577,1051,0.51,1052,0.51,1053,1.068,1054,0.51,1055,0.51,1056,0.448,1057,0.577,1058,0.577,1059,0.51,1060,0.577,1061,0.474,1062,0.395,1063,0.912,1064,0.408,1065,1.057,1066,0.308,1067,0.577,1068,0.76,1069,0.51,1070,0.496,1071,0.51,1072,0.51,1073,0.441,1074,0.448,1075,0.326,1076,0.516,1077,0.441,1078,0.683,1079,1.228,1080,1.422,1081,0.577,1082,0.448,1083,0.417,1084,1.016,1085,0.577,1086,0.484,1087,0.408,1088,0.474,1089,0.403,1090,0.732,1091,0.326,1092,0.365,1093,0.932,1094,0.484,1095,0.456,1096,0.794,1097,0.387,1098,0.484,1099,0.825,1100,0.528,1101,0.412,1102,0.484,1103,0.484,1104,0.528,1105,0.484,1106,0.829,1107,0.586,1108,0.399,1109,0.395,1110,0.38,1111,0.484,1112,0.434,1113,0.528,1114,0.441,1115,0.577,1116,0.51,1117,0.51,1118,0.932,1119,0.474,1120,0.51,1121,0.51,1122,0.423,1123,0.403,1124,0.51,1125,0.371,1126,0.395,1127,0.408,1961,0.464,1981,0.484,1982,0.484,1983,0.484,1984,0.484,1985,0.621,1986,0.484,1987,0.484,1988,0.484,1989,0.484,1990,0.484,1991,0.484,1992,0.464,1993,0.484,1994,0.484,1995,0.456,1996,0.441,1997,0.528,1998,0.528,1999,0.484]],["component/50",[7,0.401]],["title/51",[]],["name/51",[947,1.886]],["text/51",[26,3.409,68,4.937,69,6.151,117,3.435,148,2.807,155,3.044,183,4.313,282,4.966,308,3.443,402,1.882,468,4.007,514,3.809,665,4.351,679,3.367,705,5.656,904,6.312,947,6.498,1089,5.941,1090,5.606,1091,4.801]],["component/51",[7,0.401]],["title/52",[]],["name/52",[1086,2.071]],["text/52",[15,4.212,29,2.181,30,3.535,32,3.292,35,5.128,76,3.422,82,5.426,88,1.71,93,3.173,118,3.466,120,3.298,123,3.849,136,1.454,191,2.151,196,2.36,255,3.242,296,2.312,308,2.3,316,2.704,439,3.19,482,3.378,502,2.503,514,2.892,570,4.808,577,3.298,682,2.93,719,3.141,745,2.763,752,2.848,754,3.525,762,7.003,763,6.03,764,7.265,766,5.335,904,4.216,985,3.444,1046,4.767,1076,2.64,1084,5.195,1090,3.744,1092,3.595,1093,6.909,1094,4.767,1095,4.486]],["component/52",[7,0.401]],["title/53",[]],["name/53",[755,1.886]],["text/53",[17,2.961,79,3.254,84,2.004,88,2.197,121,4.013,134,2.6,135,4.011,148,2.408,183,2.903,272,3.974,406,2.426,525,3.225,593,3.437,596,4.548,717,5.213,719,4.033,723,2.775,752,4.916,754,3.124,867,4.728,896,4.582,1022,5.492,1048,5.574,1068,4.992,1106,5.714,1107,5.17,1108,5.043,1109,4.992,1110,4.809,1111,6.123,1112,5.492]],["component/53",[7,0.401]],["title/54",[]],["name/54",[1096,1.764]],["text/54",[18,2.892,40,2.147,68,3.775,84,2.866,90,2.901,96,3.033,125,4.131,134,2.318,139,3.217,155,2.327,262,3.712,275,4.457,301,3.651,351,4.006,421,4.866,514,2.285,665,3.327,723,2.474,741,3.97,775,4.827,867,4.214,873,4.18,958,7.606,963,3.327,968,3.413,1008,4.913,1096,6.476,1097,4.365,1098,5.458,1099,6.727,1100,5.947,1101,4.647,1102,5.458,1103,5.458,1104,5.947,1105,5.458]],["component/54",[7,0.401]],["title/55-1",[42,33.917,502,34.217]],["name/55-1",[]],["text/55-1",[]],["component/55-1",[]],["title/55-2",[183,30.892,1128,43.146]],["name/55-2",[]],["text/55-2",[]],["component/55-2",[]],["title/55-3",[183,30.892,1129,38.042]],["name/55-3",[]],["text/55-3",[]],["component/55-3",[]],["title/55-4",[356,40.753,835,41.118]],["name/55-4",[]],["text/55-4",[]],["component/55-4",[]],["title/55-5",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/55-5",[]],["text/55-5",[]],["component/55-5",[]],["title/55-6",[293,47.398,1004,52.112]],["name/55-6",[]],["text/55-6",[]],["component/55-6",[]],["title/55",[98,48.764,1132,35.506]],["name/55",[1132,1.129]],["text/55",[0,0.81,5,0.657,6,0.768,7,0.393,8,1.98,10,0.631,11,2.738,12,1.481,13,1.824,14,1.636,16,1.875,18,0.712,19,0.953,29,1.519,30,0.688,32,1.157,34,1.239,35,1.533,37,0.936,38,0.873,40,1.601,42,1.729,46,2.022,48,3.393,52,1.332,54,1.569,60,1.755,77,0.895,79,1.291,84,2.94,88,2.205,96,0.747,99,0.768,105,1.636,106,0.999,112,0.723,117,1.958,118,1.292,120,3.633,128,0.9,146,2.068,147,1.006,148,0.955,151,1.065,154,0.779,155,0.573,161,0.611,164,1.732,168,0.813,172,1.222,179,1.075,183,1.151,186,2.068,188,0.93,192,0.806,211,1.468,214,1.828,224,1.418,225,1.145,228,2.431,236,0.678,240,2.068,252,2.169,264,0.968,265,1.056,267,1.634,268,0.985,279,0.721,280,1.295,293,2.96,296,0.652,300,3.196,308,0.649,319,0.659,325,0.992,330,2.544,333,0.93,350,0.868,351,1.749,356,2.077,421,0.86,439,0.9,446,0.797,457,1.119,464,0.985,465,0.669,468,1.865,478,1.189,482,0.953,502,1.275,514,1.704,521,1.038,525,1.279,532,1.942,539,1.173,541,1.224,547,0.684,548,1.03,549,0.797,558,1.086,570,0.936,596,1.804,597,0.89,608,0.816,618,1.132,647,0.965,666,1.711,668,1.481,689,1.075,698,0.837,706,0.992,728,3.069,729,0.992,736,0.953,758,1.173,786,0.845,827,0.856,835,1.533,861,4.802,868,1.378,890,2.433,963,0.82,972,1.468,993,0.895,1004,1.075,1087,1.132,1128,2.199,1129,1.939,1130,1.755,1131,1.804,1133,3.092,1134,1.159,1135,1.244,1136,0.999,1137,1.145,1138,1.98,1139,1.047,1140,1.418,1141,2.093,1142,2.178,1143,2.178,1144,1.173,1145,0.936,1146,1.244,1147,1.418,1148,1.418,1149,2.561,1150,0.845,1151,1.132,1152,1.418,1153,2.376,1154,1.173,1155,1.145,1156,1.418,1157,1.244,1158,1.132,1159,1.418,1160,2.561,1161,1.418,1162,2.286,1163,1.418,1164,2.286,1165,1.418,1166,1.244,1167,1.418,1168,1.173,1169,1.107,1170,2.561,1171,1.418,1172,2.899,1173,1.418,1174,1.038,1175,1.418,1176,1.418,1177,1.418,1178,1.418,1179,1.418,1180,2.561,1181,1.418,1182,1.418,1183,2.561,1184,2.561,1185,2.561,1186,1.418,1187,2.044,1188,2.561,1189,1.418,1190,1.418,1191,1.418,1192,1.418,1193,1.418,1194,1.418,1195,0.941,1196,1.265,1197,3.126,1198,1.418,1199,1.418,1200,1.244,1201,2.708,1202,1.418,1203,2.561,1204,1.315,1205,2.561,1206,1.418,1207,1.418,1208,1.418,1209,1.418,1210,1.345,1211,1.03,1212,1.418]],["component/55",[7,0.401]],["title/56-1",[88,23.377,356,40.753]],["name/56-1",[]],["text/56-1",[]],["component/56-1",[]],["title/56-2",[48,36.208,88,20.111,356,35.06]],["name/56-2",[]],["text/56-2",[]],["component/56-2",[]],["title/56-3",[88,20.111,356,35.06,1172,48.923]],["name/56-3",[]],["text/56-3",[]],["component/56-3",[]],["title/56-4",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/56-4",[]],["text/56-4",[]],["component/56-4",[]],["title/56",[88,23.377,158,40.398]],["name/56",[88,0.743]],["text/56",[7,1,8,2.178,10,1.607,11,0.938,12,0.85,13,1.87,14,2.648,15,1.53,16,3.23,17,0.674,23,1.338,31,0.892,32,1.196,33,1.505,34,2.134,42,1.306,48,3.782,52,1.877,54,2.21,56,0.785,60,3.022,77,0.928,80,1.126,84,1.369,88,3.061,91,2.813,93,2.784,94,1.746,95,1.907,96,0.775,97,1.938,100,2.406,101,2.737,105,2.884,107,2.026,113,3.507,115,0.938,120,4.822,128,0.933,143,1.606,146,0.868,166,2.946,170,0.988,171,0.777,186,1.563,188,0.964,199,0.97,204,1.337,221,1.971,234,0.923,243,0.994,252,1.824,277,0.811,293,1.014,301,2.008,316,2.372,325,2.524,341,1.707,344,1.312,351,1.802,356,5.231,403,1.174,406,0.553,421,0.892,429,1.105,443,1.577,446,1.488,505,3.107,509,1.838,525,3.304,531,0.799,553,1.778,570,0.97,712,1.864,732,1.059,765,2.067,766,1.938,768,2.163,772,0.988,827,0.888,835,3.393,861,1.688,869,1.217,890,3.063,910,0.994,937,1.938,972,0.843,985,1.007,1062,1.137,1076,1.39,1089,1.161,1131,1.864,1133,3.178,1154,2.19,1162,1.312,1164,1.312,1172,6.968,1197,1.312,1213,4.342,1214,4.261,1215,1.663,1216,1.47,1217,1.47,1218,1.47,1219,1.095,1220,3.608,1221,3.347,1222,1.47,1223,1.47,1224,1.47,1225,2.646,1226,1.47,1227,1.47,1228,1.47,1229,1.47,1230,1.47,1231,1.47,1232,1.47,1233,1.47,1234,1.47,1235,1.47,1236,1.47,1237,1.47,1238,3.608,1239,1.47,1240,2.646,1241,1.47,1242,1.47,1243,1.47,1244,1.47,1245,1.47,1246,2.22,1247,1.47,1248,2.646,1249,1.29,1250,1.187,1251,1.47,1252,1.364,1253,1.028,1254,1.47,1255,0.692,1256,2.362,1257,1.47,1258,2.51,1259,1.663,1260,1.663,1261,1.47,1262,1.47,1263,1.663,1264,1.663,1265,1.47,1266,1.47,1267,1.47,1268,1.47,1269,1.47,1270,1.47,1271,1.47,1272,1.47,1273,1.47,1274,1.47,1275,1.47]],["component/56",[7,0.401]],["title/57",[1276,68.801]],["name/57",[1276,1.832]],["text/57",[3,1.263,8,1.248,13,3.292,14,2.719,16,3.331,20,1.725,26,1.244,30,1.333,32,1.241,71,1.608,84,2.102,88,1.981,105,3.777,107,2.103,112,1.402,117,3.424,118,3.532,125,2.999,136,1.959,137,1.472,139,1.102,144,1.318,155,2.355,161,2.917,168,2.608,169,1.752,171,1.452,183,1.235,191,1.175,214,1.17,239,1.448,249,1.608,263,1.478,264,1.038,272,1.691,280,1.389,296,2.092,301,2.65,308,3.699,316,1.478,319,2.114,357,1.743,391,1.562,401,1.393,421,1.667,443,1.636,451,1.55,455,1.527,458,1.908,470,1.364,487,1.348,502,1.368,519,2.103,526,2.451,531,1.493,549,1.544,570,1.813,602,2.245,617,2.814,659,2.273,661,2.451,664,2.41,665,2.63,666,1.835,670,3.469,673,2.509,680,1.55,708,1.651,723,1.955,746,1.263,963,1.588,966,2.011,972,2.608,985,1.882,993,1.734,1132,1.419,1136,1.935,1154,2.273,1277,6.058,1278,2.747,1279,1.87,1280,2.497,1281,2.747,1282,2.336,1283,2.747,1284,2.372,1285,2.245,1286,2.451,1287,1.964,1288,2.747,1289,2.497,1290,2.747,1291,2.245,1292,3.107,1293,2.67,1294,2.548,1295,2.304,1296,2.548,1297,2.747,1298,2.747,1299,2.747,1300,2.41,1301,2.451,1302,2.747]],["component/57",[7,0.401]],["title/58-1",[56,27.706,84,16.101,236,24.817,691,48.109]],["name/58-1",[]],["text/58-1",[]],["component/58-1",[]],["title/58-2",[52,30.744,104,32.728,680,33.358]],["name/58-2",[]],["text/58-2",[]],["component/58-2",[]],["title/58-3",[116,50.007]],["name/58-3",[]],["text/58-3",[]],["component/58-3",[]],["title/58-4",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/58-4",[]],["text/58-4",[]],["component/58-4",[]],["title/58-5",[8,8.202,13,10.985,84,9.278,105,13.959,186,17.648,457,23.594,525,14.928,666,19.961,861,19.065,1131,21.055]],["name/58-5",[]],["text/58-5",[]],["component/58-5",[]],["title/58-6",[528,37.312,531,32.135,596,41.644]],["name/58-6",[]],["text/58-6",[]],["component/58-6",[]],["title/58",[13,21.726,105,27.609,343,46.175]],["name/58",[631,1.45]],["text/58",[3,0.45,4,0.614,7,0.271,8,0.268,13,2.032,14,0.457,15,0.565,16,2.344,17,2.174,18,1.284,26,1.45,33,1.035,34,0.473,40,0.953,45,0.915,48,0.599,52,2.681,54,2.311,56,0.522,58,0.67,60,2.585,65,1.887,70,1.549,77,0.617,84,3.443,88,0.619,91,0.624,92,3.945,96,0.515,98,1.292,101,1.722,102,0.596,104,0.541,105,0.85,106,0.689,107,0.748,110,1.312,111,2.89,112,0.929,113,2.262,116,1.951,117,2.822,118,3.206,120,2.1,121,0.608,123,0.748,128,1.621,130,1.216,134,1.725,143,0.593,145,0.704,148,0.365,155,1.526,160,1.094,161,0.421,163,0.547,168,1.044,171,0.517,178,0.565,179,0.741,185,0.741,186,2.228,196,0.855,199,0.645,214,2.355,215,1.422,227,1.333,236,0.468,243,0.661,248,2.112,252,0.494,255,1.174,263,0.526,264,0.688,279,0.497,280,0.494,293,0.674,296,2.843,297,0.605,301,2.517,304,0.78,313,2.568,316,2.029,332,0.858,335,1.648,360,0.799,361,1.943,378,0.748,394,1.292,397,0.831,402,0.8,406,0.367,408,0.575,421,0.593,438,3.381,439,0.62,440,0.694,443,1.085,446,0.549,457,0.772,465,1.206,487,0.48,505,1.8,506,0.789,508,1.181,514,0.388,519,1.394,525,0.488,528,1.613,531,2.051,547,0.472,549,1.799,552,0.444,556,0.657,575,1.408,577,0.641,580,2.433,596,1.283,604,0.599,618,0.78,619,0.728,620,0.638,622,1.47,642,0.858,665,1.052,666,2.138,669,2.64,670,0.582,674,1.333,678,1.174,679,0.437,680,1.806,691,0.907,706,1.787,743,0.617,773,1.312,786,0.582,861,2.407,865,0.58,885,1.957,889,0.653,900,0.704,907,0.78,910,1.231,963,0.565,966,1.333,1031,2.039,1047,0.858,1049,0.872,1091,1.161,1092,0.699,1110,1.356,1131,1.8,1139,0.722,1157,0.858,1282,1.549,1287,0.699,1303,0.872,1304,1.106,1305,0.844,1306,0.872,1307,1.881,1308,2.115,1309,1.051,1310,0.82,1311,0.977,1312,1.01,1313,1.106,1314,1.106,1315,1.106,1316,1.106,1317,1.106,1318,1.106,1319,0.977,1320,0.977,1321,0.907,1322,0.977,1323,1.82,1324,0.977,1325,1.82,1326,0.977,1327,1.82,1328,0.977,1329,0.977,1330,1.051,1331,1.82,1332,0.977,1333,0.977,1334,1.82,1335,0.977,1336,1.82,1337,0.977,1338,0.977,1339,1.82,1340,1.82,1341,0.977,1342,0.977,1343,0.907,1344,0.977,1345,0.977,1346,0.977,1347,0.977,1348,4.6,1349,3.2,1350,1.82,1351,1.106,1352,0.927,1353,1.106,1354,1.106,1355,2.059,1356,1.726,1357,1.106,1358,2.89,1359,1.106,1360,1.106,1361,0.872,1362,0.977,1363,1.106,1364,4.267,1365,1.106,1366,1.106,1367,3.2,1368,2.059,1369,2.059,1370,1.106,1371,1.106,1372,1.106,1373,1.106,1374,1.106,1375,1.106,1376,1.106,1377,1.106,1378,1.106,1379,0.977,1380,1.106,1381,0.831,1382,0.977,1383,0.977,1384,0.977,1385,0.977,1386,0.977,1387,0.977,1388,1.726,1389,0.872,1390,0.661,1391,0.927,1392,0.977,1393,0.977]],["component/58",[7,0.401]],["title/59-1",[260,42.387,297,32.081,470,25.753,1394,51.864]],["name/59-1",[]],["text/59-1",[]],["component/59-1",[]],["title/59",[871,51.636,1076,36.09]],["name/59",[1395,2.471]],["text/59",[8,2.168,118,2.914,296,3.633,620,5.153,644,7.182,861,6.311,867,5.785,903,4.961,1130,5.413,1174,5.785,1256,7.05,1396,8.936,1397,9.892,1398,7.492,1399,7.68,1400,4.706]],["component/59",[7,0.401]],["title/60-1",[3,37.722]],["name/60-1",[]],["text/60-1",[]],["component/60-1",[]],["title/60-2",[128,52.051]],["name/60-2",[]],["text/60-2",[]],["component/60-2",[]],["title/60-3",[155,27.786,465,32.434]],["name/60-3",[]],["text/60-3",[]],["component/60-3",[]],["title/60-4",[34,25.095,134,20.888,406,19.493,694,34.642]],["name/60-4",[]],["text/60-4",[]],["component/60-4",[]],["title/60-5",[351,40.973]],["name/60-5",[]],["text/60-5",[]],["component/60-5",[]],["title/60-6",[745,45.082]],["name/60-6",[]],["text/60-6",[]],["component/60-6",[]],["title/60-7",[455,38.185,1293,66.798]],["name/60-7",[]],["text/60-7",[]],["component/60-7",[]],["title/60-8",[656,50.738]],["name/60-8",[]],["text/60-8",[]],["component/60-8",[]],["title/60-9",[1401,71,1402,56.867]],["name/60-9",[]],["text/60-9",[]],["component/60-9",[]],["title/60-10",[88,23.377,1403,52.609]],["name/60-10",[]],["text/60-10",[]],["component/60-10",[]],["title/60",[155,20.975,249,30.364,678,33.45,1403,39.712]],["name/60",[249,0.716,1403,0.937]],["text/60",[3,1.062,5,1.477,6,2.479,8,1.664,10,0.563,13,0.465,20,0.795,23,1.168,24,0.761,26,0.573,29,1.002,30,1.546,32,1.044,34,1.118,38,0.779,43,2.897,57,0.791,76,2.169,84,3.687,88,1.084,90,1.164,92,0.85,98,0.898,104,1.764,107,2.44,108,0.969,117,2.568,118,0.467,122,1.706,133,0.85,134,0.93,136,0.366,138,1.154,139,2.432,144,1.108,155,2.276,158,0.744,161,2.929,164,0.856,166,1.543,172,1.102,179,0.96,183,0.569,196,1.496,211,1.827,214,1.675,220,0.988,228,0.717,239,1.217,249,3.007,262,0.816,264,0.478,265,1.72,271,2.956,275,0.703,277,0.698,279,1.175,301,0.576,308,2.094,316,1.242,319,0.588,325,0.885,335,0.816,351,3.028,354,0.84,391,0.72,402,0.578,406,1.198,421,0.768,428,1.129,430,0.969,432,1.093,439,0.803,441,0.861,455,0.703,465,1.504,483,1.23,502,1.959,514,0.917,547,1.537,549,1.791,553,0.85,557,2.067,570,2.103,593,1.23,615,0.783,617,0.783,656,0.783,673,0.698,678,1.49,679,1.426,682,0.738,686,1.009,694,0.845,695,0.695,697,0.825,708,0.761,712,0.891,735,0.919,790,0.779,933,0.919,1008,1.415,1064,1.844,1092,0.905,1106,0.738,1107,0.754,1123,0.999,1138,0.978,1155,1.022,1250,1.022,1310,1.061,1401,8.159,1403,7.925,1404,1.431,1405,1.431,1406,1.431,1407,5.809,1408,1.431,1409,5.176,1410,1.431,1411,1.431,1413,2.061,1416,0.861,1417,2.191,1418,1.308,1419,1.431,1420,2.613,1421,0.978,1422,1.431,1423,1.431,1424,1.308,1425,4.448,1426,4.448,1427,1.431,1428,1.431,1429,1.431,1430,1.431,1431,0.764,1432,2.613,1433,3.604,1434,0.799,1435,1.431,1436,2.897,1437,1.431,1438,1.431,1439,1.431,1440,1.431,1441,1.022,1442,1.431,1443,1.431,1444,1.308,1445,1.431,1446,1.431,1447,1.174,1448,1.076,1449,1.265,1450,1.431,1451,1.11,1452,1.431,1453,1.265,1454,1.431,1455,1.265,2000,1.539,2001,1.539,2002,1.539,2003,1.15,2004,1.539]],["component/60",[7,0.401]],["title/61-1",[402,17.184,1456,33.432]],["name/61-1",[]],["text/61-1",[]],["component/61-1",[]],["title/61-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/61-2",[]],["text/61-2",[]],["component/61-2",[]],["title/61-3",[8,18.856,150,32.262]],["name/61-3",[]],["text/61-3",[]],["component/61-3",[]],["title/61-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/61-4",[]],["text/61-4",[]],["component/61-4",[]],["title/61-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/61-5",[]],["text/61-5",[]],["component/61-5",[]],["title/61-6",[8,16.222,137,31.686,746,27.183]],["name/61-6",[]],["text/61-6",[]],["component/61-6",[]],["title/61-7",[1255,32.348,1457,33.624]],["name/61-7",[]],["text/61-7",[]],["component/61-7",[]],["title/61",[178,34.172,1129,32.728,1473,43.651]],["name/61",[677,0.844,1473,0.903]],["text/61",[5,3.513,8,2.329,12,2.364,29,2.71,84,3.113,88,2.126,90,2.061,99,2.215,135,2.888,136,1.808,137,2.192,138,3.12,139,1.64,144,1.962,148,1.525,161,1.762,178,5.572,183,1.839,228,2.317,231,3.131,263,2.2,264,1.546,280,3.158,308,1.871,349,2.415,351,2.043,394,2.902,395,2.881,401,2.074,402,1.562,406,2.348,445,2.84,446,2.299,451,2.308,459,2.821,484,2.995,514,3.369,654,3.194,686,1.786,687,3.102,695,3.433,726,2.784,746,1.881,788,2.683,830,2.802,873,2.97,896,2.902,983,3.302,1068,3.162,1106,2.384,1107,2.436,1187,3.264,1461,2.493,1472,2.683,1473,3.02,1474,4.089,1475,3.194,1476,6.247,1477,2.529,1478,3.717,1479,3.793,1480,4.089,1481,4.089,1482,3.976]],["component/61",[7,0.401]],["title/62-1",[402,17.184,1456,33.432]],["name/62-1",[]],["text/62-1",[]],["component/62-1",[]],["title/62-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/62-2",[]],["text/62-2",[]],["component/62-2",[]],["title/62-3",[118,25.347,694,45.892]],["name/62-3",[]],["text/62-3",[]],["component/62-3",[]],["title/62-4",[1145,45.341,1483,35.06]],["name/62-4",[]],["text/62-4",[]],["component/62-4",[]],["title/62-5",[1091,43.832,1145,45.341]],["name/62-5",[]],["text/62-5",[]],["component/62-5",[]],["title/62-6",[88,20.111,468,31.469,532,44.832]],["name/62-6",[]],["text/62-6",[]],["component/62-6",[]],["title/62-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/62-7",[]],["text/62-7",[]],["component/62-7",[]],["title/62-8",[8,16.222,30,28.681,150,27.755]],["name/62-8",[]],["text/62-8",[]],["component/62-8",[]],["title/62-9",[104,32.728,264,22.343,686,25.822]],["name/62-9",[]],["text/62-9",[]],["component/62-9",[]],["title/62-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/62-10",[]],["text/62-10",[]],["component/62-10",[]],["title/62-11",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/62-11",[]],["text/62-11",[]],["component/62-11",[]],["title/62-12",[8,16.222,137,31.686,746,27.183]],["name/62-12",[]],["text/62-12",[]],["component/62-12",[]],["title/62-13",[1255,32.348,1457,33.624]],["name/62-13",[]],["text/62-13",[]],["component/62-13",[]],["title/62",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/62",[728,0.757,1484,1]],["text/62",[2,0.805,5,1.057,6,1.706,7,0.346,8,1.757,10,1.016,12,0.721,13,1.43,14,1.065,15,2.619,17,0.572,29,1.965,30,1.528,32,1.423,34,1.524,35,0.747,36,0.612,37,0.824,38,0.768,40,2.635,42,0.616,45,1.583,56,1.218,57,1.425,65,0.922,79,2.564,87,1.595,88,1.072,90,1.15,96,0.658,97,0.914,98,1.619,101,2.093,104,1.263,106,2.219,110,1.171,117,1.041,118,3.119,120,2.066,134,2.247,135,0.577,136,1.472,137,1.223,138,2.263,139,1.817,142,0.74,144,1.867,148,0.466,155,0.922,160,0.75,161,0.538,171,0.66,172,1.857,183,1.025,184,1.184,186,1.86,189,0.784,190,0.834,191,1.665,192,0.71,196,1.479,214,0.972,234,0.784,251,0.681,252,0.631,267,2.009,271,2.38,272,0.768,275,0.694,278,0.828,279,1.979,280,0.631,292,1.377,300,0.93,308,1.441,315,1.67,316,2.093,320,1.463,330,1.657,333,0.819,340,0.839,341,0.805,401,2.297,402,1.504,406,1.462,408,0.734,412,0.947,443,1.359,451,0.704,455,0.694,468,2.709,470,1.132,482,1.533,492,4.271,502,0.622,514,2.679,525,2.263,532,2.389,539,1.033,620,0.814,656,2.407,666,0.834,679,1.409,683,1.868,686,2.223,687,0.947,694,1.523,695,0.686,698,0.737,723,0.98,726,1.553,728,3.45,746,1.049,755,1.078,765,0.975,766,0.914,835,2.328,850,1.782,890,3.875,894,0.914,896,0.886,903,0.784,972,0.716,985,2.158,1076,0.656,1083,1.02,1087,1.821,1089,4.017,1090,1.699,1091,3.246,1092,0.892,1096,1.008,1133,4.02,1141,1.02,1142,1.062,1143,1.062,1145,3.968,1150,0.744,1151,4.061,1381,1.062,1400,0.744,1402,2.607,1416,0.85,1434,0.788,1456,0.607,1485,2.281,1486,1.248,1487,2.001,1488,3.472,1489,2.116,1490,0.879,1491,2.922,1492,1.008,1493,1.158,1494,1.158,1495,1.158,1496,1.158,1497,1.248,1498,0.938,1499,0.975,1500,1.248,1501,3.891,1502,2.281,1503,2.281,1504,2.987,1505,1.248,1506,2.281,1507,1.248,1508,1.02,1509,1.114,1510,1.342,1511,1.342,1512,1.342,1513,0.985,1514,2.607,1515,1.047,1516,1.095,1517,1.008,1518,2.116,1519,1.078,1520,0.906,1521,1.158,1522,1.248,1523,1.184,1524,0.947]],["component/62",[7,0.401]],["title/63-1",[402,17.184,1456,33.432]],["name/63-1",[]],["text/63-1",[]],["component/63-1",[]],["title/63-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/63-2",[]],["text/63-2",[]],["component/63-2",[]],["title/63-3",[8,18.856,150,32.262]],["name/63-3",[]],["text/63-3",[]],["component/63-3",[]],["title/63-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/63-4",[]],["text/63-4",[]],["component/63-4",[]],["title/63-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/63-5",[]],["text/63-5",[]],["component/63-5",[]],["title/63-6",[8,16.222,137,31.686,746,27.183]],["name/63-6",[]],["text/63-6",[]],["component/63-6",[]],["title/63-7",[1255,32.348,1457,33.624]],["name/63-7",[]],["text/63-7",[]],["component/63-7",[]],["title/63",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/63",[1431,0.739,1559,0.928]],["text/63",[0,0.957,3,0.771,5,3.088,6,0.908,8,1.526,10,2.967,13,0.616,17,2.228,29,3.397,30,0.813,32,2.194,40,0.625,42,0.827,45,2.015,56,0.895,84,3.649,88,1.365,104,0.928,105,2.597,106,1.18,108,1.283,112,0.855,113,0.8,116,1.021,117,0.765,118,2.621,121,1.042,135,1.375,136,1.16,137,1.594,138,2.003,148,1.496,150,1.397,154,0.921,155,1.622,160,1.007,161,2.092,189,1.052,211,1.705,220,1.309,223,1.495,228,2.272,248,0.938,251,0.914,255,1.918,262,1.081,271,2.551,275,0.931,279,0.852,292,1.796,297,1.84,322,1.309,352,2.374,354,1.112,377,0.981,402,0.744,406,2.313,408,0.985,464,1.164,482,1.126,506,1.353,514,1.928,531,0.911,557,1.087,575,1.296,586,1.099,593,1.583,656,1.036,663,1.237,668,0.969,678,1.081,679,0.75,682,2.338,686,1.752,695,0.921,746,1.368,754,0.811,772,1.126,779,1.148,830,3.328,863,3.579,895,1.387,1075,1.069,1106,0.977,1107,0.998,1108,3.133,1109,2.3,1150,3.313,1195,1.112,1214,1.259,1381,1.425,1390,1.133,1431,4.729,1434,1.058,1436,1.523,1441,3.238,1456,0.815,1461,1.021,1468,2.066,1469,1.207,1483,0.855,1487,1.47,1490,1.18,1524,1.271,1526,2.323,1527,1.309,1556,1.156,1559,3.683,1560,1.801,1561,1.369,1562,1.495,1563,1.675,1564,4.536,1565,1.447,1566,1.675,1567,1.731,1568,1.895,1569,1.895,1570,1.895,1571,1.731,1572,1.895,1573,1.895,1574,1.895,1575,3.364,1576,1.895,1577,1.895,1578,3.319,1579,1.895,1580,4.722,1581,3.72,1582,1.895,1583,1.895,1584,1.895,1585,1.227,1586,3.364,1587,1.895,1588,1.895,1589,1.895,1590,1.447]],["component/63",[7,0.401]],["title/64-1",[402,17.184,1456,33.432]],["name/64-1",[]],["text/64-1",[]],["component/64-1",[]],["title/64-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/64-2",[]],["text/64-2",[]],["component/64-2",[]],["title/64-3",[8,18.856,150,32.262]],["name/64-3",[]],["text/64-3",[]],["component/64-3",[]],["title/64-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/64-4",[]],["text/64-4",[]],["component/64-4",[]],["title/64-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/64-5",[]],["text/64-5",[]],["component/64-5",[]],["title/64-6",[8,16.222,137,31.686,746,27.183]],["name/64-6",[]],["text/64-6",[]],["component/64-6",[]],["title/64-7",[1255,32.348,1457,33.624]],["name/64-7",[]],["text/64-7",[]],["component/64-7",[]],["title/64",[402,9.484,827,22.902,1129,20.996,1591,42.477,1592,57.305]],["name/64",[1591,0.882,1592,1.189]],["text/64",[3,1.338,8,2.124,13,1.07,29,3.358,30,1.412,37,1.92,40,2.262,42,1.437,56,1.555,84,3.659,99,2.584,104,1.611,105,2.228,106,2.05,113,1.389,118,2.587,135,1.345,136,1.38,137,1.56,138,1.454,148,1.086,154,1.599,155,1.177,161,3.582,191,1.245,204,2.646,211,3.476,214,2.032,248,2.672,273,4.258,280,1.471,296,1.338,351,3.028,402,1.754,406,1.793,420,2.273,464,2.021,493,7.836,514,1.894,525,1.454,590,2.475,608,1.675,656,1.8,686,2.084,690,1.981,708,1.75,716,2.597,754,1.408,827,4.235,835,1.742,929,2.378,990,2.513,1075,1.857,1150,1.734,1195,1.932,1413,2.597,1434,1.837,1504,2.76,1517,2.35,1524,2.207,1591,5.053,1592,5.894,1593,3.292,1594,3.292,1595,2.91,1596,2.646,1597,2.91,1598,3.292,1599,4.771,1600,2.91,1601,2.91,1602,4.771,1603,3.292,1604,3.292,1605,3.292,1606,3.292,1607,3.292,1608,2.829]],["component/64",[7,0.401]],["title/65-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/65-1",[]],["text/65-1",[]],["component/65-1",[]],["title/65-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/65-2",[]],["text/65-2",[]],["component/65-2",[]],["title/65-3",[8,18.856,150,32.262]],["name/65-3",[]],["text/65-3",[]],["component/65-3",[]],["title/65-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/65-4",[]],["text/65-4",[]],["component/65-4",[]],["title/65-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/65-5",[]],["text/65-5",[]],["component/65-5",[]],["title/65-6",[8,16.222,137,31.686,746,27.183]],["name/65-6",[]],["text/65-6",[]],["component/65-6",[]],["title/65-7",[1255,32.348,1457,33.624]],["name/65-7",[]],["text/65-7",[]],["component/65-7",[]],["title/65",[615,46.09,937,37.981,1129,28.716]],["name/65",[937,0.896,1528,0.903]],["text/65",[3,1.073,5,2.829,8,1.42,10,1.766,15,2.293,29,3.227,30,2.511,40,2.277,56,1.247,82,1.738,84,3.537,88,2.077,95,1.682,99,1.264,105,1.09,108,1.787,118,1.909,135,1.834,136,1.766,137,2.127,138,1.982,148,0.87,155,0.944,161,3.419,183,1.049,211,2.275,228,1.322,239,1.23,262,1.505,265,1.738,271,1.226,279,2.632,316,1.255,378,3.038,402,0.584,406,2.796,408,1.372,446,1.312,486,5.474,514,3.316,552,1.06,575,1.804,608,2.284,615,2.454,630,1.578,631,1.549,676,1.723,679,1.775,686,1.733,695,2.18,708,2.385,719,1.458,746,1.824,754,1.129,924,1.985,937,4.47,1075,1.489,1106,1.36,1107,1.39,1126,1.804,1127,1.863,1130,1.599,1134,1.907,1150,3.083,1286,2.082,1305,2.015,1390,4.128,1434,1.473,1461,1.423,1469,1.682,1472,1.531,1525,2.639,1526,1.823,1527,1.823,1528,5.051,1529,2.015,1530,2.082,1531,2.164,1532,2.333,1533,1.884,1534,2.333,1535,2.639,1536,2.639,1537,2.015,1538,1.754,1539,2.639,1540,2.082,1541,2.639,1542,2.639,1543,3.54,1544,1.787,1545,1.957,1546,2.121,1547,2.411,1548,2.639,1549,2.411,1550,2.411,1551,1.738,1552,2.164,1553,2.639,1554,2.121,1555,2.905,1556,1.61,1558,1.481,1818,1.842]],["component/65",[7,0.401]],["title/66-1",[402,17.184,1456,33.432]],["name/66-1",[]],["text/66-1",[]],["component/66-1",[]],["title/66-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/66-2",[]],["text/66-2",[]],["component/66-2",[]],["title/66-3",[8,18.856,150,32.262]],["name/66-3",[]],["text/66-3",[]],["component/66-3",[]],["title/66-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/66-4",[]],["text/66-4",[]],["component/66-4",[]],["title/66-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/66-5",[]],["text/66-5",[]],["component/66-5",[]],["title/66-6",[8,16.222,137,31.686,746,27.183]],["name/66-6",[]],["text/66-6",[]],["component/66-6",[]],["title/66-7",[1255,32.348,1457,33.624]],["name/66-7",[]],["text/66-7",[]],["component/66-7",[]],["title/66",[138,34.207,139,18.53,677,47.243]],["name/66",[138,0.611,677,0.844]],["text/66",[5,2.624,7,0.998,8,1.554,17,1.653,29,2.457,40,1.344,84,3.576,88,1.927,110,1.85,113,1.719,135,1.665,136,1.639,138,4.306,144,2.717,148,2.113,150,1.692,161,3.014,196,3.724,199,3.737,264,1.362,271,1.892,279,1.833,280,3.537,401,2.872,402,0.901,408,2.118,459,2.485,484,4.147,508,3.673,514,3.149,521,2.638,531,1.959,556,2.421,570,2.377,657,3.603,677,2.485,686,1.574,695,4.738,745,1.98,760,2.732,932,4.182,949,5.434,950,3.215,1091,2.298,1106,2.1,1107,2.146,1114,3.111,1390,2.437,1391,3.417,1458,3.342,1459,3.603,1460,3.603,1461,2.196,1462,3.603,1463,3.342,1464,4.075,1465,3.111,1466,3.603,1467,3.161,1468,2.502,1469,2.596,1470,3.603,1471,3.603,1472,2.364]],["component/66",[7,0.401]],["title/67-1",[402,17.184,1456,33.432]],["name/67-1",[]],["text/67-1",[]],["component/67-1",[]],["title/67-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/67-2",[]],["text/67-2",[]],["component/67-2",[]],["title/67-3",[8,18.856,150,32.262]],["name/67-3",[]],["text/67-3",[]],["component/67-3",[]],["title/67-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/67-4",[]],["text/67-4",[]],["component/67-4",[]],["title/67-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/67-5",[]],["text/67-5",[]],["component/67-5",[]],["title/67-6",[8,16.222,137,31.686,746,27.183]],["name/67-6",[]],["text/67-6",[]],["component/67-6",[]],["title/67-7",[1255,32.348,1457,33.624]],["name/67-7",[]],["text/67-7",[]],["component/67-7",[]],["title/67",[311,30.628,1609,35.079,1610,36.54,1611,38.977]],["name/67",[1610,0.599,1611,0.639,1612,0.551]],["text/67",[8,2.08,10,1.821,13,1.503,17,1.876,18,2.055,34,1.979,45,2.055,79,2.061,84,3.113,99,2.215,105,1.91,117,1.866,118,1.509,121,2.542,136,1.183,137,2.192,138,2.043,139,1.64,144,1.962,148,1.525,155,4.055,168,2.345,170,2.748,174,3.531,183,1.839,214,1.742,249,2.394,251,2.231,266,3.385,296,1.881,308,1.871,311,2.415,316,2.2,391,3.553,402,1.023,442,3.228,460,1.951,465,1.93,487,2.007,514,2.48,608,2.354,617,2.529,679,2.795,686,2.729,695,2.247,708,2.458,754,1.979,963,2.364,1015,3.479,1062,3.162,1075,2.609,1421,4.831,1431,3.773,1441,5.045,1562,3.649,1609,2.766,1610,5.341,1611,4.695,1612,2.652,1613,4.089,1614,4.089,1616,4.397,1617,3.976,1619,3.588,1620,4.695,1623,3.793,2005,4.226,2006,4.226]],["component/67",[7,0.401]],["title/68-1",[3,31.597,56,36.704]],["name/68-1",[]],["text/68-1",[]],["component/68-1",[]],["title/68-2",[5,31.842,547,33.151]],["name/68-2",[]],["text/68-2",[]],["component/68-2",[]],["title/68-3",[136,23.734]],["name/68-3",[]],["text/68-3",[]],["component/68-3",[]],["title/68-4",[406,25.824,430,52.609]],["name/68-4",[]],["text/68-4",[]],["component/68-4",[]],["title/68-5",[547,28.52,1434,37.312,1624,63.552]],["name/68-5",[]],["text/68-5",[]],["component/68-5",[]],["title/68-6",[161,35.339]],["name/68-6",[]],["text/68-6",[]],["component/68-6",[]],["title/68-7",[183,30.892,1625,55.481]],["name/68-7",[]],["text/68-7",[]],["component/68-7",[]],["title/68-8",[42,29.179,502,29.437,1625,47.73]],["name/68-8",[]],["text/68-8",[]],["component/68-8",[]],["title/68-9",[191,29.399,311,40.574]],["name/68-9",[]],["text/68-9",[]],["component/68-9",[]],["title/68-10",[84,16.101,351,37.219,1626,55.762]],["name/68-10",[]],["text/68-10",[]],["component/68-10",[]],["title/68-11",[694,39.481,1526,46.175,1527,46.175]],["name/68-11",[]],["text/68-11",[]],["component/68-11",[]],["title/68-12",[355,49.513,1627,59.325]],["name/68-12",[]],["text/68-12",[]],["component/68-12",[]],["title/68-13",[1628,88.192]],["name/68-13",[]],["text/68-13",[]],["component/68-13",[]],["title/68-14",[729,48.06,1627,59.325]],["name/68-14",[]],["text/68-14",[]],["component/68-14",[]],["title/68-15",[729,48.06,1629,62.461]],["name/68-15",[]],["text/68-15",[]],["component/68-15",[]],["title/68-16",[32,26.708,35,35.374,1627,51.038]],["name/68-16",[]],["text/68-16",[]],["component/68-16",[]],["title/68-17",[32,26.708,35,35.374,1629,53.736]],["name/68-17",[]],["text/68-17",[]],["component/68-17",[]],["title/68-18",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/68-18",[]],["text/68-18",[]],["component/68-18",[]],["title/68-19",[8,16.222,137,31.686,746,27.183]],["name/68-19",[]],["text/68-19",[]],["component/68-19",[]],["title/68-20",[8,18.856,150,32.262]],["name/68-20",[]],["text/68-20",[]],["component/68-20",[]],["title/68-21",[1255,32.348,1457,33.624]],["name/68-21",[]],["text/68-21",[]],["component/68-21",[]],["title/68",[311,30.628,678,33.45,1609,35.079,1630,55.762]],["name/68",[547,0.41,1612,0.551,1631,0.758]],["text/68",[0,0.327,2,0.707,3,0.726,5,0.732,6,0.594,8,1.277,10,0.488,15,0.331,17,1.889,18,0.287,20,1.272,24,0.95,29,0.685,30,1.705,31,0.958,32,1.102,34,1.538,35,2.629,36,1.56,38,0.972,40,0.91,42,1,45,1.765,57,1.265,58,1.082,68,0.375,71,0.642,74,0.511,75,0.487,79,1.422,84,1.091,85,0.979,87,0.4,88,0.195,90,0.553,91,0.7,99,0.31,101,1.71,103,0.473,104,1.35,105,0.738,110,0.811,113,1.164,115,1.556,117,0.501,118,0.211,119,3.562,121,1.976,122,1.166,125,1.638,127,0.406,129,0.298,130,0.382,133,0.737,134,1.541,135,0.264,136,0.457,137,0.588,138,1.218,139,0.978,143,0.347,146,0.338,147,0.406,148,0.91,150,0.269,154,0.868,155,1.547,161,1.648,164,0.742,165,0.419,168,0.629,171,1.071,172,0.967,174,0.494,178,0.331,180,0.384,182,1.097,183,1.429,186,1.196,188,1.036,189,0.359,190,0.382,191,1.503,196,2.184,200,0.419,201,0.447,203,0.378,211,0.629,214,0.244,223,0.979,224,0.875,225,0.462,227,0.419,228,1.148,231,0.438,239,1.487,243,2.971,249,0.335,251,0.312,263,0.85,265,0.426,271,0.576,275,0.878,277,0.605,278,0.38,279,2.366,280,0.289,282,0.378,283,0.375,286,0.367,293,0.395,296,1.121,300,0.817,301,1.741,304,3.053,308,1.291,311,3.278,316,0.85,319,0.266,331,0.642,349,0.648,350,0.672,351,0.286,355,4.642,357,1.285,360,0.468,375,0.412,386,1.516,390,0.572,402,0.143,404,1.808,406,1.061,413,1.465,414,0.48,430,0.438,431,1.321,432,3.793,440,0.406,446,0.322,450,1.496,451,0.323,457,0.452,459,0.395,465,0.956,482,0.384,484,1.483,487,1.197,502,1.405,514,1.519,531,0.859,536,0.92,547,3.774,549,1.139,580,1.019,583,1.272,586,0.375,593,0.305,601,0.48,604,0.968,608,0.329,613,0.468,615,0.977,617,2.877,656,0.678,659,0.473,663,0.81,665,0.331,672,0.422,678,0.707,679,1.091,681,0.817,682,0.333,683,0.937,686,0.69,687,0.434,694,0.382,695,0.314,698,0.338,705,0.43,706,0.767,708,1.218,723,0.679,729,2.224,736,0.384,745,0.868,751,1.749,754,0.277,763,0.473,773,0.412,779,0.392,783,0.48,784,1.465,790,0.352,827,0.954,834,0.438,835,0.656,851,0.591,853,0.511,859,0.389,889,0.382,917,0.468,927,0.48,963,0.331,972,0.328,982,0.422,993,0.692,998,0.452,1024,0.933,1073,0.947,1075,0.365,1092,0.409,1108,2.205,1109,1.566,1122,0.473,1123,0.866,1130,0.392,1131,0.773,1138,0.848,1150,0.341,1201,1.221,1213,0.84,1219,0.426,1250,0.462,1285,0.468,1350,0.572,1416,1.075,1431,1.704,1434,0.692,1441,0.886,1456,0.278,1458,1.017,1468,0.762,1475,0.447,1483,0.292,1490,0.403,1508,0.896,1513,0.866,1515,0.48,1529,0.494,1551,0.426,1559,1.849,1596,0.52,1615,0.572,1617,0.556,1619,2.139,1620,1.187,1625,5.071,1627,8.013,1629,5.996,1632,0.615,1633,0.615,1634,0.556,1635,0.615,1636,0.615,1637,0.615,1638,0.615,1639,1.969,1640,0.438,1641,0.997,1642,2.622,1643,0.487,1644,0.572,1645,1.698,1646,0.615,1647,1.177,1648,1.179,1649,0.615,1650,0.875,1651,0.615,1652,1.179,1653,0.615,1654,0.615,1655,1.698,1656,1.133,1657,0.615,1658,0.615,1659,0.494,1660,0.591,1661,0.473,1662,0.615,1663,0.615,1664,0.615,1665,0.572,1666,0.615,1667,1.179,1668,0.615,1669,0.908,1670,0.615,1671,0.572,1672,0.572,1673,0.615,1674,0.615,1675,0.615,1676,0.615,1677,0.615,1678,0.615,1679,0.615,1680,0.615,1681,0.556,1682,0.487,1683,0.615,1684,0.615,1685,0.615,1686,5.001,1687,0.615,1688,0.556,1689,0.615,1690,1.179,1691,0.502,1692,0.52,1693,0.572,1694,0.615,1695,0.615,1696,0.615,1697,0.615,1698,0.615,1699,0.615,1700,0.615,1701,0.615,1702,1.179,1703,1.698,1704,1.698,1705,0.615,1706,0.615,1707,0.615,1708,0.434,1709,1.179,1710,1.179,1711,1.179,1712,0.615,1713,0.615,1714,0.615,1715,0.494,1716,0.615,1717,0.615,1718,1.698,1719,2.178,1720,2.178,1721,1.179,1722,0.615,1723,1.179,1724,1.179,1725,0.615,1726,0.52,1727,0.442,1728,1.179,1729,1.179,1730,0.947,1731,0.615,1732,0.615,1733,1.344,1734,0.615,1735,0.344,1736,0.615,1737,1.179,1738,1.179,1739,1.179,1740,1.698,1741,0.487,1742,0.615,1743,0.615,1744,0.615,1745,0.615,1746,0.647,1747,0.502,1748,0.591,1749,0.572,1750,0.48,1751,0.615,1752,0.572,1753,0.615]],["component/68",[7,0.401]],["title/69-1",[402,17.184,1456,33.432]],["name/69-1",[]],["text/69-1",[]],["component/69-1",[]],["title/69-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/69-2",[]],["text/69-2",[]],["component/69-2",[]],["title/69-3",[8,18.856,150,32.262]],["name/69-3",[]],["text/69-3",[]],["component/69-3",[]],["title/69-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/69-4",[]],["text/69-4",[]],["component/69-4",[]],["title/69-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/69-5",[]],["text/69-5",[]],["component/69-5",[]],["title/69-6",[8,16.222,137,31.686,746,27.183]],["name/69-6",[]],["text/69-6",[]],["component/69-6",[]],["title/69-7",[1255,32.348,1457,33.624]],["name/69-7",[]],["text/69-7",[]],["component/69-7",[]],["title/69",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/69",[1612,0.793,1754,0.977]],["text/69",[5,3.282,8,1.327,13,1.777,14,2.259,17,3.844,18,2.43,84,3.048,88,2.41,105,3.308,118,1.784,136,2.049,137,2.592,138,3.538,139,1.939,148,1.804,155,4.149,168,2.773,214,2.06,271,2.54,308,2.212,316,2.601,391,2.751,402,1.209,406,1.818,460,2.308,487,2.373,514,3.327,608,2.784,617,2.991,679,3.169,686,3.094,695,2.658,708,2.907,754,2.34,963,2.796,1075,4.518,1421,5.476,1468,5.821,1472,3.172,1612,3.136,1754,3.86,1755,7.029,1756,4.836]],["component/69",[7,0.401]],["title/70-1",[402,17.184,1456,33.432]],["name/70-1",[]],["text/70-1",[]],["component/70-1",[]],["title/70-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/70-2",[]],["text/70-2",[]],["component/70-2",[]],["title/70-3",[8,18.856,150,32.262]],["name/70-3",[]],["text/70-3",[]],["component/70-3",[]],["title/70-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/70-4",[]],["text/70-4",[]],["component/70-4",[]],["title/70-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/70-5",[]],["text/70-5",[]],["component/70-5",[]],["title/70-6",[8,16.222,137,31.686,746,27.183]],["name/70-6",[]],["text/70-6",[]],["component/70-6",[]],["title/70-7",[1255,32.348,1457,33.624]],["name/70-7",[]],["text/70-7",[]],["component/70-7",[]],["title/70",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/70",[1758,0.856,1759,0.764]],["text/70",[3,0.918,8,0.548,10,2.048,13,0.734,19,1.342,29,4.093,34,0.966,40,0.745,42,0.985,56,1.066,63,1.407,71,1.169,84,3.754,88,0.679,99,2.492,104,1.921,113,1.655,118,2.028,135,0.923,136,1.004,137,1.86,138,0.997,142,1.184,154,1.097,155,0.807,161,3.647,166,1.333,171,1.056,172,1.655,183,1.56,186,1.179,188,2.276,191,0.854,200,1.462,214,0.85,228,1.131,247,1.342,251,1.893,263,1.866,279,1.016,301,0.909,316,1.074,319,0.928,350,1.223,377,1.169,391,2.617,402,1.375,406,2.566,474,1.529,486,5.615,502,0.994,514,1.377,523,1.325,525,0.997,553,2.332,593,1.063,656,1.235,686,2.01,726,1.359,746,1.595,754,0.966,786,1.189,867,1.462,968,3.692,1076,1.049,1119,1.852,1150,2.067,1195,1.325,1451,1.751,1461,2.115,1483,1.77,1487,1.751,1528,2.562,1538,2.607,1540,1.782,1544,1.529,1545,1.675,1552,1.852,1558,2.201,1585,2.541,1622,1.675,1691,1.751,1758,3.845,1759,4.582,1760,2.146,1761,1.996,1762,3.218,1763,3.373,1764,1.996,1765,1.996,1766,2.146,1767,1.996,1768,1.996,1769,1.941,1770,4.267,1771,1.996,1772,1.632,1773,2.146,1774,2.146,1775,3.73,1776,2.146,1777,2.146,1778,2.146,1779,1.612,1780,1.852,1781,1.941,1782,1.941,1783,1.675,1784,1.815,1785,2.146,1818,1.576]],["component/70",[7,0.401]],["title/71-1",[402,17.184,1456,33.432]],["name/71-1",[]],["text/71-1",[]],["component/71-1",[]],["title/71-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/71-2",[]],["text/71-2",[]],["component/71-2",[]],["title/71-3",[8,18.856,150,32.262]],["name/71-3",[]],["text/71-3",[]],["component/71-3",[]],["title/71-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/71-4",[]],["text/71-4",[]],["component/71-4",[]],["title/71-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/71-5",[]],["text/71-5",[]],["component/71-5",[]],["title/71-6",[8,16.222,137,31.686,746,27.183]],["name/71-6",[]],["text/71-6",[]],["component/71-6",[]],["title/71-7",[1255,32.348,1457,33.624]],["name/71-7",[]],["text/71-7",[]],["component/71-7",[]],["title/71",[1128,32.569,1558,47.283,1786,33.829]],["name/71",[1558,0.776,1786,0.798]],["text/71",[3,0.893,5,3.114,6,1.052,8,0.929,10,2.401,13,0.714,14,0.907,17,2.473,29,3.135,30,1.643,32,0.877,40,1.68,49,1.517,56,1.037,84,3.796,88,1.835,99,1.834,103,1.607,105,0.907,113,0.926,118,2.479,121,1.207,130,1.297,135,1.565,136,1.303,137,1.815,138,2.249,154,1.067,155,0.785,161,1.459,211,1.113,228,2.551,271,2.365,279,0.988,280,0.982,320,1.245,395,1.368,402,1.126,406,2.525,408,1.142,461,1.733,464,1.349,486,2.336,514,2.428,531,1.056,552,0.882,558,1.487,615,1.201,656,1.201,670,1.157,686,1.967,695,1.067,726,2.305,746,1.557,754,0.939,774,1.446,865,1.152,903,1.219,1106,1.132,1107,1.157,1128,1.219,1150,3.644,1195,1.289,1214,1.459,1390,1.313,1434,2.137,1461,1.184,1465,1.676,1469,1.399,1483,0.991,1517,1.568,1524,1.473,1526,1.517,1527,1.517,1528,1.434,1537,1.676,1538,1.459,1543,1.733,1544,2.593,1545,1.628,1551,1.446,1556,2.336,1558,4.586,1565,1.676,1585,2.48,1590,1.676,1759,1.213,1787,1.841,1788,1.942,1789,1.841,1790,1.628,1791,1.888,1792,2.087,1793,2.087,1794,1.733,1795,3.211,1796,1.841,1797,1.942,1798,1.841,1799,1.841,1800,1.841,1801,1.733,1802,1.733,1803,1.676,1804,1.841,1805,1.733,1806,1.765,1807,1.628,1808,1.676,1809,1.733,1810,1.942,1811,1.733,1812,1.841,1813,1.733,1814,2.196,1815,3.386,1816,4.407,1817,1.942,1818,1.533]],["component/71",[7,0.401]],["title/72-1",[402,17.184,1456,33.432]],["name/72-1",[]],["text/72-1",[]],["component/72-1",[]],["title/72-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/72-2",[]],["text/72-2",[]],["component/72-2",[]],["title/72-3",[8,18.856,150,32.262]],["name/72-3",[]],["text/72-3",[]],["component/72-3",[]],["title/72-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/72-4",[]],["text/72-4",[]],["component/72-4",[]],["title/72-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/72-5",[]],["text/72-5",[]],["component/72-5",[]],["title/72-6",[8,16.222,137,31.686,746,27.183]],["name/72-6",[]],["text/72-6",[]],["component/72-6",[]],["title/72-7",[1255,32.348,1457,33.624]],["name/72-7",[]],["text/72-7",[]],["component/72-7",[]],["title/72",[1128,32.569,1786,33.829,1819,55.503]],["name/72",[1786,0.798,1819,0.911]],["text/72",[3,1.152,5,3.578,6,0.75,8,1.156,10,2.65,14,1.968,17,2.73,18,0.695,29,3.092,30,1.666,32,2.204,34,0.67,36,0.679,40,1.572,42,0.683,56,1.338,79,2.123,84,3.676,88,2.307,94,1.653,99,0.75,105,0.646,112,0.706,117,0.632,118,2.195,125,0.713,134,1.009,135,1.158,136,1.219,137,1.343,138,1.715,144,0.664,146,0.817,148,0.516,150,0.65,154,0.761,155,0.56,158,1.473,161,1.815,169,0.883,172,0.66,183,1.126,194,1.792,196,1.612,199,0.913,211,0.793,221,1.031,228,1.419,234,0.869,254,1.883,267,0.883,271,2.562,279,0.704,280,0.7,301,0.63,320,0.888,336,1.384,388,0.913,401,0.702,402,1.054,406,2.237,408,0.814,414,1.161,431,0.903,455,0.769,458,0.961,465,1.183,486,4.105,502,2.098,508,0.897,514,2.363,520,1.081,531,0.752,547,0.668,549,1.408,552,0.628,557,0.897,558,1.06,577,2.252,615,2.124,647,0.942,656,0.856,670,0.824,679,0.619,682,0.807,684,0.781,686,1.5,695,0.761,726,2.337,746,1.152,754,0.67,772,0.93,788,0.908,835,0.828,903,0.869,933,1.005,964,1.177,1106,0.807,1107,0.824,1125,1.82,1150,2.51,1168,1.145,1214,1.04,1287,0.99,1301,1.235,1352,2.376,1390,1.695,1434,0.873,1461,0.844,1469,0.997,1483,0.706,1528,1.022,1538,1.04,1544,1.918,1545,1.161,1551,1.031,1556,0.955,1558,2.673,1565,1.195,1585,2.514,1669,1.145,1735,0.832,1759,0.865,1790,1.161,1791,1.345,1794,1.235,1801,1.235,1802,1.235,1803,1.195,1805,1.235,1807,1.161,1808,1.195,1809,1.235,1811,1.235,1813,1.235,1816,2.048,1818,1.092,1819,5.309,1820,1.384,1821,2.236,1822,3.433,1823,3.256,1824,1.384,1825,1.384,1826,1.488,1827,1.145,1828,1.488,1829,1.488,1830,1.488,1831,1.384,1832,1.384,1833,1.488,1834,1.488,1835,1.488,1836,1.488,1837,1.488,1838,1.384,1839,1.312,1840,1.488,1841,1.488,1842,1.488,1843,1.258,1844,1.384,1845,1.312,1846,1.131,1847,1.384,1848,1.384,1849,1.195,1850,2.694,1851,2.376,1852,1.06,1853,1.384]],["component/72",[7,0.401]],["title/73-1",[402,17.184,1456,33.432]],["name/73-1",[]],["text/73-1",[]],["component/73-1",[]],["title/73-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/73-2",[]],["text/73-2",[]],["component/73-2",[]],["title/73-3",[8,18.856,150,32.262]],["name/73-3",[]],["text/73-3",[]],["component/73-3",[]],["title/73-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/73-4",[]],["text/73-4",[]],["component/73-4",[]],["title/73-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/73-5",[]],["text/73-5",[]],["component/73-5",[]],["title/73-6",[8,16.222,137,31.686,746,27.183]],["name/73-6",[]],["text/73-6",[]],["component/73-6",[]],["title/73",[1128,32.569,1786,33.829,1854,58.665,1855,45.501]],["name/73",[1786,0.798,1855,1.073]],["text/73",[3,0.864,5,3.29,6,1.018,8,0.516,10,2.935,17,2.417,18,0.944,26,1.49,29,3.269,30,2.13,32,0.849,36,0.922,40,1.637,56,1.003,79,2.212,82,1.399,84,3.731,88,1.793,99,1.782,112,0.959,118,2.21,134,1.325,135,1.521,136,1.525,137,1.763,138,2.192,144,0.901,146,1.109,148,1.227,154,1.032,155,0.76,161,2.27,172,0.896,183,1.479,196,0.882,211,1.077,221,1.399,228,1.064,234,1.18,240,1.517,267,1.198,271,2.305,279,0.956,320,1.205,401,0.953,402,1.318,406,1.98,408,1.104,431,1.225,486,4.547,502,1.638,508,1.218,514,2.819,520,1.467,531,1.021,541,1.622,552,0.853,558,1.438,577,2.879,590,1.598,615,2.715,656,1.162,670,1.119,672,1.387,679,0.84,682,1.095,686,1.917,695,1.032,746,1.513,754,0.909,788,1.232,835,1.124,933,1.364,1106,1.095,1107,1.119,1125,1.364,1139,1.387,1150,3.139,1214,1.412,1287,1.343,1291,1.535,1390,2.225,1434,1.186,1461,1.145,1469,1.354,1538,1.412,1556,1.296,1558,1.192,1585,3.214,1669,1.555,1735,1.129,1762,4.888,1789,3.12,1790,1.576,1806,1.708,1807,1.576,1816,2.689,1818,1.483,1827,1.555,1839,1.782,1845,1.782,1846,1.535,1851,3.12,1852,1.438,1855,3.85,1856,2.125,1857,2.125,1858,2.125,1859,2.125,1860,2.125,1861,2.125,1862,2.125,1863,2.125,1864,2.125,1865,2.125,1866,2.125,1867,2.125,1868,2.125,1869,2.125,1870,2.125,1871,2.125,1872,2.125,1873,2.125,1874,2.125,1875,2.125,1876,2.125,1877,1.782]],["component/73",[7,0.401]],["title/74-1",[402,17.184,1456,33.432]],["name/74-1",[]],["text/74-1",[]],["component/74-1",[]],["title/74-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/74-2",[]],["text/74-2",[]],["component/74-2",[]],["title/74-3",[8,18.856,150,32.262]],["name/74-3",[]],["text/74-3",[]],["component/74-3",[]],["title/74-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/74-4",[]],["text/74-4",[]],["component/74-4",[]],["title/74-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/74-5",[]],["text/74-5",[]],["component/74-5",[]],["title/74-6",[8,16.222,137,31.686,746,27.183]],["name/74-6",[]],["text/74-6",[]],["component/74-6",[]],["title/74-7",[1255,32.348,1457,33.624]],["name/74-7",[]],["text/74-7",[]],["component/74-7",[]],["title/74",[1128,32.569,1786,33.829,1878,69.118]],["name/74",[1786,0.798,1878,1.135]],["text/74",[3,0.595,5,1.854,8,0.647,10,1.781,13,0.475,26,1.47,29,3.244,30,1.941,40,1.492,56,0.691,84,3.83,88,1.104,99,0.701,101,0.696,105,1.516,118,1.198,135,0.598,136,0.939,137,1.263,138,1.177,142,0.767,143,1.43,146,0.764,148,0.483,151,1.771,154,0.711,155,0.523,161,2.459,172,0.617,191,0.554,199,0.854,214,1.004,228,1.335,239,0.682,240,1.045,248,0.724,251,0.706,262,0.834,271,1.238,279,0.658,287,1.021,300,0.964,350,0.792,402,1.001,406,2.704,408,1.386,446,1.325,457,1.021,464,0.899,486,4.238,502,0.644,506,1.045,514,2.07,531,0.703,547,0.624,552,0.587,583,1.48,656,0.8,678,0.834,682,0.754,686,1.418,694,0.864,695,1.295,726,3.549,736,0.869,746,1.084,754,0.626,850,1.841,895,1.071,911,1.337,968,1.398,1106,0.754,1107,0.771,1150,2.384,1195,0.859,1214,0.972,1250,1.045,1305,1.117,1390,2.706,1434,0.817,1461,0.789,1465,1.117,1469,0.932,1483,2.042,1514,1.071,1517,1.045,1526,1.011,1527,1.011,1528,2.955,1537,1.117,1538,0.972,1544,0.991,1547,1.337,1549,1.337,1550,1.337,1551,0.964,1556,0.892,1558,1.496,1567,1.337,1585,1.726,1590,1.117,1634,1.258,1691,1.135,1759,0.808,1761,1.294,1762,2.186,1763,1.258,1790,1.085,1803,2.035,1806,1.176,1807,1.085,1808,1.117,1817,1.294,1818,1.021,1823,2.235,1839,1.227,1878,5.294,1879,1.463,1880,1.135,1881,1.463,1882,1.463,1883,1.463,1884,1.463,1885,1.463,1886,1.463,1887,1.463,1888,6.455,1889,2.357,1890,1.463,1891,1.463,1892,5.896,1893,5.896,1894,1.463,1895,1.463,1896,1.463,1897,1.463,1898,1.463,1899,1.463,1900,2.666,1901,1.463,1902,1.463,1903,1.463,1904,1.463,1905,1.463,1906,1.463,1907,1.463,1908,1.294,1909,1.463,1910,1.463,1911,1.463,1912,1.463,1913,1.463,1914,1.463,1915,1.463,1916,1.337,1917,2.666,1918,1.463,1919,1.463,1920,1.463,1921,1.463,1922,1.463,1923,1.463,1924,1.258,1925,1.463,1926,1.463,1927,1.463,1928,1.463,1929,1.463,1930,1.337,1931,1.463,1932,1.463,1933,1.155,1934,1.463,1935,1.463]],["component/74",[7,0.401]],["title/75-1",[343,64.077]],["name/75-1",[]],["text/75-1",[]],["component/75-1",[]],["title/75-2",[402,17.184,1129,38.042]],["name/75-2",[]],["text/75-2",[]],["component/75-2",[]],["title/75-3",[402,17.184,1128,43.146]],["name/75-3",[]],["text/75-3",[]],["component/75-3",[]],["title/75-4",[311,34.906,402,14.783,1609,39.979]],["name/75-4",[]],["text/75-4",[]],["component/75-4",[]],["title/75-5",[402,20.515]],["name/75-5",[]],["text/75-5",[]],["component/75-5",[]],["title/75-6",[236,39.251]],["name/75-6",[]],["text/75-6",[]],["component/75-6",[]],["title/75-7",[163,33.101,319,27.465,402,14.783]],["name/75-7",[]],["text/75-7",[]],["component/75-7",[]],["title/75-8",[296,27.183,402,14.783,1936,41.347]],["name/75-8",[]],["text/75-8",[]],["component/75-8",[]],["title/75-9",[7,12.805,79,23.287,134,18.607,163,25.873,871,34.721]],["name/75-9",[]],["text/75-9",[]],["component/75-9",[]],["title/75",[7,19.043,402,17.184]],["name/75",[631,1.45]],["text/75",[5,1.382,6,0.91,7,0.466,8,1.335,13,1.788,14,1.877,16,5.21,24,1.01,26,2.523,29,2.111,34,3.229,40,0.627,42,0.829,52,2.09,56,1.593,70,1.429,77,1.06,79,1.503,84,1.511,88,0.572,90,1.503,99,0.91,104,0.93,105,0.785,113,0.802,117,1.361,118,1.483,128,1.066,134,3.157,135,1.378,136,1.612,137,2.154,139,0.674,144,0.806,146,1.761,148,1.112,151,1.263,152,1.299,155,1.206,160,2.925,161,1.284,163,2.251,168,0.963,169,1.072,171,0.888,172,0.802,178,0.971,183,1.34,192,0.956,196,1.887,214,0.716,236,0.804,239,0.885,248,2.725,251,0.917,263,2.162,267,3.104,271,1.566,275,0.934,279,1.517,296,1.848,297,1.844,301,2.536,311,2.873,316,0.904,319,1.385,324,1.341,335,1.083,340,1.129,343,1.312,354,1.115,361,0.865,386,1.044,395,1.184,401,0.852,402,2.314,406,1.829,408,0.988,431,1.096,450,1.241,455,1.657,465,1.897,514,0.667,519,3.726,525,1.489,547,0.811,548,1.22,593,0.894,608,1.716,615,1.039,643,1.499,647,2.736,661,1.499,665,1.723,666,1.122,674,3.563,676,1.241,678,2.592,681,1.251,683,0.996,686,0.734,723,0.722,741,1.159,742,1.299,744,1.274,779,1.151,786,1.001,790,1.034,871,1.263,900,1.211,903,1.872,937,1.23,983,1.357,1076,2.111,1106,0.979,1107,1.001,1128,3.056,1129,3.695,1144,1.39,1166,1.474,1306,2.661,1400,1.001,1403,1.286,1418,1.736,1444,1.736,1468,1.167,1473,1.241,1477,1.039,1487,2.615,1558,1.066,1609,3.291,1610,1.184,1611,1.263,1708,1.274,1755,1.409,1758,1.175,1759,1.05,1819,1.251,1821,1.499,1855,1.474,1878,1.558,1936,2.085,1937,1.68,1938,1.68,1939,1.9,1940,1.68,1941,1.9,1942,2.772,1943,1.527,1944,1.68,1945,1.211,1946,1.499,1947,1.499,1948,1.527,1949,1.9,1950,1.326,1951,1.9,1952,1.474,1953,1.9,1954,1.9,1955,1.68,1956,1.9,1957,1.9,1958,1.9,1959,1.9,1960,1.9,1961,1.527,1962,1.474,1963,2.765,1964,1.558,1965,1.558,1966,1.9]],["component/75",[7,0.401]],["title/76-1",[0,39.238,1,51.636]],["name/76-1",[]],["text/76-1",[]],["component/76-1",[]],["title/76-2",[9,44.029,33,33.622,552,26.841]],["name/76-2",[]],["text/76-2",[]],["component/76-2",[]],["title/76",[2,44.313,3,31.597]],["name/76",[2,0.789,3,0.563]],["text/76",[0,2.565,1,5.422,2,2.178,3,3.318,4,2.121,5,0.897,6,1.049,7,0.936,8,1.477,9,5.698,10,3.72,11,5.12,12,3.877,13,0.711,14,0.904,17,3.509,18,4.033,19,1.301,20,1.216,21,1.936,22,1.727,23,0.979,24,2.03,25,1.582,26,0.877,27,1.936,28,1.836,29,1.949,30,2.18,31,1.174,32,1.526,33,5.417,34,1.634,35,2.021,36,0.95,37,1.277,38,1.191,39,1.936,40,0.722,41,1.936,42,1.667,43,1.76,44,1.936,45,1.697,46,1.528,47,1.936,48,3.296,49,1.512,50,4.26,51,1.936,52,1.007,53,1.936,54,2.069,55,1.936,56,2.4,57,2.11,58,2.314,59,1.936,60,2.314,61,1.936,62,1.795,63,1.364,64,2.727,65,1.429,66,1.936,67,1.936,68,1.27,69,1.582,70,1.647,71,1.133,72,1.936,73,1.936,74,1.727,75,1.647,76,1.318,77,1.222,79,0.976,84,0.601,121,2.099,134,0.78,141,1.528,148,0.722,158,1.138,172,0.924,186,1.143,191,2.302,194,2.415,196,0.909,234,1.216,251,1.056,263,1.041,264,0.732,272,1.191,286,2.881,287,3.547,296,1.553,325,1.354,351,0.967,361,0.997,386,1.203,406,1.269,408,1.138,517,1.263,552,1.534,604,2.069,668,1.119,751,2.916,963,1.119,1076,1.017,1078,1.344,1249,1.698,1434,1.222,1468,1.344,1492,1.563,1498,1.455,1945,1.395,2007,1.882,2008,2.081,2009,1.836,2010,1.836,2011,6.564,2012,6.564,2013,5.785,2014,4.83,2015,2.081,2016,1.468,2017,2.081,2018,1.497,2019,2.081,2020,2.081,2021,2.081,2022,2.081,2023,2.081,2024,1.882,2025,2.081,2026,2.081,2027,2.081,2028,2.081,2029,1.882]],["component/76",[7,0.401]],["title/77-1",[211,39.397,2030,73.872]],["name/77-1",[]],["text/77-1",[]],["component/77-1",[]],["title/77-2",[3,31.597,42,33.917]],["name/77-2",[]],["text/77-2",[]],["component/77-2",[]],["title/77-3",[134,33.036]],["name/77-3",[]],["text/77-3",[]],["component/77-3",[]],["title/77-4",[88,27.909]],["name/77-4",[]],["text/77-4",[]],["component/77-4",[]],["title/77-5",[86,46.845]],["name/77-5",[]],["text/77-5",[]],["component/77-5",[]],["title/77-6",[2,52.904]],["name/77-6",[]],["text/77-6",[]],["component/77-6",[]],["title/77-7",[11,43.832,12,39.721]],["name/77-7",[]],["text/77-7",[]],["component/77-7",[]],["title/77-8",[155,27.786,249,40.225]],["name/77-8",[]],["text/77-8",[]],["component/77-8",[]],["title/77-9",[52,35.736,134,27.671]],["name/77-9",[]],["text/77-9",[]],["component/77-9",[]],["title/77-10",[7,16.382,32,26.708,155,23.905]],["name/77-10",[]],["text/77-10",[]],["component/77-10",[]],["title/77-11",[118,21.806,264,22.343,743,37.312]],["name/77-11",[]],["text/77-11",[]],["component/77-11",[]],["title/77-12",[468,43.669]],["name/77-12",[]],["text/77-12",[]],["component/77-12",[]],["title/77-13",[135,37.916]],["name/77-13",[]],["text/77-13",[]],["component/77-13",[]],["title/77-14",[136,23.734]],["name/77-14",[]],["text/77-14",[]],["component/77-14",[]],["title/77-15",[23,29.884,40,22.05,547,28.52]],["name/77-15",[]],["text/77-15",[]],["component/77-15",[]],["title/77-16",[13,25.254,105,32.092]],["name/77-16",[]],["text/77-16",[]],["component/77-16",[]],["title/77",[3,31.597,7,19.043]],["name/77",[10,0.973]],["text/77",[3,1.909,6,1.92,7,1.919,8,1.639,10,3.499,11,1.305,12,0.641,13,1.303,14,0.518,17,1.626,18,1.028,20,0.696,23,1.792,24,0.667,29,3.57,36,0.544,40,0.763,42,1.406,45,1.028,48,0.679,52,1.843,79,2.603,83,1.652,84,1.962,85,1.826,86,1.168,87,2.479,88,2.15,99,1.543,105,0.956,107,0.849,110,1.463,112,1.044,113,1.981,116,1.737,117,0.934,118,2.062,125,0.571,133,0.745,134,1.147,135,1.638,136,1.201,139,1.665,144,0.532,145,0.799,146,1.208,155,1.896,158,0.652,160,0.667,163,1.984,171,0.586,172,1.359,177,1.109,178,1.183,180,0.745,183,0.498,185,1.552,186,0.655,190,0.741,191,2.006,192,1.62,196,2.201,200,1.498,201,0.866,203,0.732,211,0.636,220,0.866,222,0.989,224,3.674,226,0.787,227,0.812,228,0.628,231,0.849,234,3.51,239,1.501,243,1.384,245,0.849,247,0.745,248,0.621,249,1.668,250,1.582,251,0.605,252,1.034,253,0.812,254,0.833,255,0.715,256,1.051,257,1.078,258,0.93,259,1.109,260,0.906,261,1.898,262,1.837,263,0.596,264,3.34,272,0.682,277,0.612,280,1.034,282,0.732,283,1.869,286,0.711,292,1.236,296,1.31,308,1.303,313,1.939,319,0.515,335,0.715,346,0.918,348,0.805,349,0.655,354,0.736,355,0.799,357,0.704,377,0.649,386,0.689,391,0.631,394,0.787,402,0.512,406,1.56,412,0.841,418,1.767,431,0.723,438,0.875,443,1.219,450,0.819,451,0.626,460,0.529,465,1.345,468,1.887,487,1.004,505,0.781,509,0.77,525,1.423,547,0.535,549,0.623,552,1.294,556,0.745,569,0.989,593,1.089,604,1.745,619,0.826,630,0.75,647,0.755,654,0.866,662,1.008,663,0.819,679,0.496,680,0.626,682,1.193,683,1.69,684,1.608,687,0.841,698,1.208,711,0.76,732,0.799,741,0.765,743,2.237,754,1.715,786,1.219,790,0.682,865,1.69,871,0.833,900,1.474,920,0.943,961,0.875,968,1.214,993,0.7,1005,1.096,1012,0.918,1091,0.707,1097,0.841,1110,0.826,1211,0.805,1253,1.431,1300,0.973,1413,0.989,1455,2.046,1477,0.686,1498,2.141,1520,1.486,1561,0.906,1623,1.028,1640,1.567,1688,2.769,1942,0.765,1947,0.989,2010,1.051,2016,0.841,2018,1.582,2031,1.192,2032,1.192,2033,1.192,2034,2.2,2035,1.192,2036,1.192,2037,1.078,2038,1.192,2039,1.192,2040,1.192,2041,1.192,2042,0.826,2043,3.222,2044,1.348,2045,0.93,2046,1.008,2047,1.008,2048,1.348,2049,1.348,2050,0.973,2051,0.826,2052,1.109,2053,1.028,2054,0.732,2055,3.06,2056,0.841,2057,1.192,2058,1.109,2059,1.192,2060,0.812,2061,1.078,2062,1.192,2063,0.895,2064,1.192,2065,1.348,2066,1.078,2067,1.051,2068,1.078,2069,1.008,2070,1.109,2071,1.078,2072,0.957,2073,0.957,2074,1.192]],["component/77",[7,0.401]],["title/78-1",[684,38.775,869,56.867]],["name/78-1",[]],["text/78-1",[]],["component/78-1",[]],["title/78-2",[113,39.143]],["name/78-2",[]],["text/78-2",[]],["component/78-2",[]],["title/78-3",[7,19.043,869,56.867]],["name/78-3",[]],["text/78-3",[]],["component/78-3",[]],["title/78-4",[111,50.007]],["name/78-4",[]],["text/78-4",[]],["component/78-4",[]],["title/78-5",[113,39.143]],["name/78-5",[]],["text/78-5",[]],["component/78-5",[]],["title/78-6",[13,19.063,14,24.225,264,19.605,325,36.279]],["name/78-6",[]],["text/78-6",[]],["component/78-6",[]],["title/78",[1246,68.801]],["name/78",[1246,1.832]],["text/78",[3,2.362,7,2.951,8,1.41,10,1.419,11,3.277,12,1.843,13,2.983,14,3.79,23,1.611,26,1.444,33,2.922,38,1.962,42,1.573,48,3.147,49,2.49,62,2.957,77,2.012,80,2.44,84,2.003,88,1.748,96,1.68,102,3.132,111,4.947,113,4.529,115,2.033,125,2.646,128,2.023,129,1.658,148,1.189,158,1.874,164,2.156,186,1.882,221,2.374,236,1.525,243,3.474,252,1.611,264,2.439,301,1.451,313,4.392,314,3.187,320,2.044,325,3.593,333,2.091,344,2.844,356,3.047,384,2.957,421,1.934,443,1.899,451,1.799,509,2.214,517,2.079,520,2.49,553,3.452,593,1.697,684,2.899,869,7.179,889,2.129,963,1.843,972,3.7,1062,2.465,1221,2.957,1246,6.807,1250,2.574,1289,2.898,1421,2.465,1595,5.137,1945,2.297,2075,3.427,2076,2.395,2077,5.523,2078,5.523,2079,5.523]],["component/78",[7,0.401]],["title/79-1",[296,27.183,673,32.606,743,37.312]],["name/79-1",[]],["text/79-1",[]],["component/79-1",[]],["title/79-2",[7,16.382,134,23.806,552,26.841]],["name/79-2",[]],["text/79-2",[]],["component/79-2",[]],["title/79-3",[2080,70.826]],["name/79-3",[]],["text/79-3",[]],["component/79-3",[]],["title/79-4",[86,46.845]],["name/79-4",[]],["text/79-4",[]],["component/79-4",[]],["title/79-5",[88,27.909]],["name/79-5",[]],["text/79-5",[]],["component/79-5",[]],["title/79-6",[155,27.786,465,32.434]],["name/79-6",[]],["text/79-6",[]],["component/79-6",[]],["title/79-7",[13,21.726,14,27.609,319,27.465]],["name/79-7",[]],["text/79-7",[]],["component/79-7",[]],["title/79-8",[135,31.759,319,31.924]],["name/79-8",[]],["text/79-8",[]],["component/79-8",[]],["title/79-9",[439,37.508,708,35.536,1400,35.216]],["name/79-9",[]],["text/79-9",[]],["component/79-9",[]],["title/79",[]],["name/79",[93,0.536,94,0.561,552,0.386]],["text/79",[3,0.449,5,0.842,7,0.886,8,1.516,10,2.751,13,2.03,14,2.405,17,0.448,18,0.49,20,0.613,29,2.054,30,0.882,36,0.892,38,1.119,42,0.897,45,0.49,52,0.945,68,0.64,76,1.737,84,1.598,86,2.94,87,0.683,88,1.282,90,0.492,93,1.147,94,1.684,99,0.985,102,0.595,109,0.887,112,3.675,113,0.867,115,0.623,116,0.595,117,2.161,118,1.179,125,0.936,126,0.779,130,1.214,134,1.287,135,3.757,136,1.09,139,2.065,141,2.523,148,1.596,154,0.536,155,1.524,160,0.587,161,1.843,163,0.547,165,1.331,169,1.16,171,0.516,172,1.218,181,0.788,186,0.576,191,1.092,192,0.555,194,0.698,195,0.669,196,2.418,200,0.715,201,0.762,203,0.644,211,0.56,214,1.605,220,2.497,224,3.987,226,0.693,234,1.142,238,0.788,239,0.514,247,1.715,250,0.755,253,0.715,263,0.525,264,3.413,277,0.538,279,0.496,280,1.29,283,1.674,292,0.589,296,2.54,297,1.124,308,0.832,311,2.526,315,0.715,316,0.525,319,0.845,341,0.629,348,0.709,349,0.576,391,2.694,392,0.976,402,0.244,406,0.367,408,0.574,439,0.619,441,1.237,443,0.581,446,0.549,451,0.551,455,1.01,465,1.509,468,0.968,470,0.485,476,0.856,487,0.479,514,1.496,518,3.626,525,0.908,547,0.471,549,0.549,552,2.15,556,2.875,583,2.366,603,0.66,604,0.598,613,0.798,617,2.929,630,1.229,631,0.648,658,0.949,670,1.083,673,3.972,674,0.715,680,0.551,683,1.078,684,1.44,695,0.536,697,1.664,708,1.922,735,1.853,736,0.656,743,0.616,767,0.762,786,1.083,859,1.237,865,1.078,890,0.678,894,0.715,900,0.703,903,0.613,909,0.755,961,0.771,982,3.802,993,0.616,1005,0.699,1076,0.513,1090,0.727,1095,0.871,1139,0.721,1211,0.709,1253,1.272,1277,5.815,1400,1.083,1413,0.871,1449,0.976,1467,2.804,1490,0.688,1640,0.747,1727,0.755,1942,0.673,1945,0.703,1948,1.653,1952,1.595,2051,0.727,2054,1.2,2060,3.133,2061,0.949,2073,0.843,2076,0.733,2080,4.769,2081,0.949,2082,1.049,2083,0.843,2084,0.926,2085,1.049,2086,0.949,2087,0.949,2088,0.949,2089,0.949,2090,0.949,2091,0.949,2092,0.856,2093,1.686,2094,0.949,2095,1.049,2096,0.949,2097,0.83,2098,0.905,2099,0.976,2100,1.049,2101,1.049,2102,1.049,2103,0.871,2104,0.976,2105,1.049,2106,0.949,2107,0.949,2108,0.856,2109,0.819,2110,0.949,2111,1.954,2112,2.48,2113,1.049,2114,0.976,2115,1.049,2116,0.856,2117,1.954,2118,1.653,2119,2.551,2120,1.049,2121,1.878,2122,1.049,2123,1.049,2124,1.954,2125,2.743,2126,1.818,2127,0.905,2128,1.049,2129,1.049,2130,0.949,2131,0.976,2132,0.905,2133,1.049,2134,0.887,2135,0.843,2136,0.887]],["component/79",[7,0.401]],["title/80-1",[7,16.382,134,23.806,552,26.841]],["name/80-1",[]],["text/80-1",[]],["component/80-1",[]],["title/80-2",[7,16.382,10,26.319,552,26.841]],["name/80-2",[]],["text/80-2",[]],["component/80-2",[]],["title/80-3",[40,22.05,552,26.841,1952,51.858]],["name/80-3",[]],["text/80-3",[]],["component/80-3",[]],["title/80-4",[2080,70.826]],["name/80-4",[]],["text/80-4",[]],["component/80-4",[]],["title/80-5",[86,46.845]],["name/80-5",[]],["text/80-5",[]],["component/80-5",[]],["title/80-6",[88,27.909]],["name/80-6",[]],["text/80-6",[]],["component/80-6",[]],["title/80-7",[465,32.434,548,49.907]],["name/80-7",[]],["text/80-7",[]],["component/80-7",[]],["title/80-8",[139,32.899]],["name/80-8",[]],["text/80-8",[]],["component/80-8",[]],["title/80-9",[13,25.254,14,32.092]],["name/80-9",[]],["text/80-9",[]],["component/80-9",[]],["title/80-10",[1253,48.06,2063,55.481]],["name/80-10",[]],["text/80-10",[]],["component/80-10",[]],["title/80-11",[3,23.851,349,30.628,439,32.911,708,31.18]],["name/80-11",[]],["text/80-11",[]],["component/80-11",[]],["title/80-12",[112,26.465,113,24.75,118,19.133,972,29.739]],["name/80-12",[]],["text/80-12",[]],["component/80-12",[]],["title/80-13",[139,20.802,144,24.886,673,28.61,2137,40.104]],["name/80-13",[]],["text/80-13",[]],["component/80-13",[]],["title/80-14",[16,50.316,1400,40.934]],["name/80-14",[]],["text/80-14",[]],["component/80-14",[]],["title/80-15",[139,23.708,335,38.123,624,46.666]],["name/80-15",[]],["text/80-15",[]],["component/80-15",[]],["title/80-16",[296,21.247,391,26.28,487,22.675,680,26.073,2138,36.475]],["name/80-16",[]],["text/80-16",[]],["component/80-16",[]],["title/80-17",[13,21.726,14,27.609,88,20.111]],["name/80-17",[]],["text/80-17",[]],["component/80-17",[]],["title/80-18",[260,56.153,2063,55.481]],["name/80-18",[]],["text/80-18",[]],["component/80-18",[]],["title/80-19",[10,20.571,87,32.317,129,24.03,402,11.555,470,22.941]],["name/80-19",[]],["text/80-19",[]],["component/80-19",[]],["title/80-20",[258,57.629,260,56.153]],["name/80-20",[]],["text/80-20",[]],["component/80-20",[]],["title/80-21",[258,57.629,2139,73.872]],["name/80-21",[]],["text/80-21",[]],["component/80-21",[]],["title/80-22",[112,26.465,118,19.133,552,23.551,616,45.501]],["name/80-22",[]],["text/80-22",[]],["component/80-22",[]],["title/80-23",[26,20.927,113,22.047,264,17.464,357,29.317,552,20.98]],["name/80-23",[]],["text/80-23",[]],["component/80-23",[]],["title/80-24",[13,21.726,14,27.609,552,26.841]],["name/80-24",[]],["text/80-24",[]],["component/80-24",[]],["title/80-25",[136,15.007,603,35.079,684,29.269,1001,43.502]],["name/80-25",[]],["text/80-25",[]],["component/80-25",[]],["title/80-26",[136,10.972,514,15.054,528,23.936,603,25.648,841,26.913,1201,29.322,1621,34.473]],["name/80-26",[]],["text/80-26",[]],["component/80-26",[]],["title/80",[7,14.374,102,31.619,158,30.495,552,23.551]],["name/80",[552,0.556,1608,1.189]],["text/80",[3,0.946,4,1.008,5,0.27,6,0.315,7,0.686,8,1.063,10,0.715,13,1.185,14,1.337,16,0.426,17,0.736,23,0.811,24,2.14,26,0.727,29,1.398,30,0.541,32,0.263,33,0.634,35,0.667,36,0.547,37,1.059,38,0.358,40,1.202,42,0.792,45,2.234,52,1.489,58,0.399,63,0.41,68,0.382,79,2.101,84,2.197,86,3.085,88,1.097,90,1.037,92,0.391,96,0.307,97,0.816,104,0.322,105,0.272,110,1.828,111,0.68,112,3.058,113,1.989,115,0.371,116,0.978,117,1.903,118,1.736,125,0.3,128,0.369,134,1.679,136,1.206,138,0.557,139,2.404,141,1.624,144,0.987,148,0.599,154,0.882,155,0.649,160,0.965,161,0.691,162,0.88,163,0.899,168,0.334,169,1.024,170,1.079,171,0.308,172,0.981,178,0.645,183,0.262,185,0.441,189,1.554,190,1.374,191,1.658,192,0.331,195,0.399,196,1.671,203,0.384,208,0.552,211,0.334,214,0.475,224,0.889,226,0.413,234,0.365,239,0.307,241,0.519,243,0.394,247,2.604,248,0.624,249,0.94,250,0.45,252,1.447,253,0.426,258,2.076,260,0.476,261,0.54,262,0.719,263,0.863,264,1.681,265,0.434,267,0.711,268,1.719,271,0.586,273,0.519,275,0.62,278,0.74,279,0.296,280,1.251,282,0.384,283,0.382,296,1.917,297,0.993,301,1.467,304,0.89,317,0.446,319,0.956,324,0.465,330,0.81,331,0.341,335,0.375,337,0.54,340,0.391,346,0.482,349,0.658,354,1.065,355,1.156,356,0.345,361,1.275,374,0.47,377,0.653,378,0.446,388,0.384,391,0.913,401,0.295,402,0.716,408,0.656,424,0.88,429,0.437,430,0.446,431,0.727,439,0.707,440,0.413,443,1.225,445,0.404,446,0.327,450,0.43,451,0.629,452,0.862,455,1.978,458,0.404,465,1.168,468,0.31,470,0.554,476,0.978,483,0.566,487,2.046,506,0.47,509,0.404,514,1.765,517,0.38,518,3.404,519,0.446,523,0.386,525,0.557,528,0.704,547,0.774,548,1.494,549,1.391,552,3.328,556,2.802,575,0.45,580,1.326,583,1.008,586,0.382,593,0.594,603,0.754,604,0.357,616,0.511,619,0.83,620,0.38,622,0.47,623,1.034,624,0.459,665,0.928,668,0.645,670,1.705,673,2.452,675,0.823,676,0.43,678,1.326,679,0.718,680,2.509,681,0.434,682,0.936,683,1.468,684,1.615,686,0.701,695,0.32,697,1.341,706,0.407,708,0.67,712,0.786,723,0.69,724,1.014,732,0.803,734,0.455,735,1.166,736,1.079,738,0.519,740,0.511,741,1.707,742,0.862,745,0.32,780,1.034,781,1.489,786,0.664,788,0.731,834,0.446,841,1.46,865,0.952,889,0.745,894,0.816,903,0.7,918,0.482,930,0.465,962,0.511,963,0.336,972,1.179,973,0.923,982,0.823,985,0.399,993,0.367,1001,0.488,1008,0.983,1066,1.242,1068,0.862,1076,1.08,1090,0.434,1091,0.371,1096,0.47,1097,0.846,1108,0.871,1122,0.482,1138,0.45,1150,0.347,1155,0.47,1157,0.511,1201,0.45,1211,0.423,1253,2.49,1256,0.519,1277,4.185,1279,0.396,1399,1.999,1400,1.474,1416,0.396,1431,0.352,1447,1.034,1461,0.355,1490,0.41,1498,0.437,1515,2.401,1516,0.511,1556,1.107,1621,0.529,1650,0.89,1661,0.482,1708,0.441,1782,1.084,1924,1.56,1950,0.459,1952,2.511,1962,0.511,1978,0.552,2018,0.862,2051,1.843,2052,0.582,2053,0.54,2054,0.384,2056,0.846,2060,0.426,2063,0.9,2080,1.386,2083,0.503,2084,1.057,2086,0.566,2087,0.566,2088,0.566,2089,0.566,2090,0.566,2091,0.566,2092,0.511,2106,0.566,2107,1.56,2108,0.511,2109,0.488,2110,0.566,2134,0.529,2135,0.503,2136,0.529,2140,0.626,2141,1.152,2142,1.199,2143,0.626,2144,0.626,2145,0.566,2146,0.626,2147,0.626,2148,0.566,2149,1.199,2150,0.552,2151,0.626,2152,0.566,2153,0.626,2154,0.626,2155,0.626,2156,0.626,2157,0.626,2158,0.626,2159,0.626,2160,1.199,2161,0.566,2162,0.626,2163,0.626,2164,0.54,2165,0.626,2166,0.582,2167,0.626,2168,0.626,2169,0.529,2170,3.465,2171,0.626,2172,0.626,2173,2.295,2174,1.199,2175,2.66,2176,0.626,2177,0.885,2178,1.199,2179,1.199,2180,1.199,2181,1.199,2182,0.626,2183,0.626,2184,0.626,2185,0.626,2186,0.626,2187,0.626,2188,0.626,2189,1.199,2190,0.626,2191,1.605,2192,0.626,2193,0.626,2194,0.47,2195,0.626,2196,0.626,2197,0.626,2198,0.626,2199,0.482,2200,0.626,2201,0.626,2202,0.626,2203,0.626,2204,0.626,2205,0.626,2206,0.626,2207,0.626,2208,0.626,2209,0.626,2210,0.626,2211,0.511,2212,0.626,2213,0.626,2214,0.626,2215,0.626,2216,0.626,2217,0.626,2218,1.199,2219,0.626,2220,0.582,2221,0.626,2222,0.626]],["component/80",[7,0.401]],["title/81-1",[7,16.382,224,32.728,319,27.465]],["name/81-1",[]],["text/81-1",[]],["component/81-1",[]],["title/81-2",[319,27.465,1936,41.347,2223,61.082]],["name/81-2",[]],["text/81-2",[]],["component/81-2",[]],["title/81-3",[7,14.374,455,28.824,962,45.501,1936,36.279]],["name/81-3",[]],["text/81-3",[]],["component/81-3",[]],["title/81",[158,40.398,502,34.217]],["name/81",[502,1.088]],["text/81",[5,1.088,7,1.699,8,0.888,17,1.077,18,0.647,30,0.625,34,0.623,40,0.481,42,1.597,52,2.961,58,0.883,79,2.337,84,1.238,90,1.184,110,2.048,116,0.785,117,2.116,122,0.951,125,0.664,134,2.468,144,0.618,145,0.928,146,0.761,147,0.914,148,0.876,152,0.996,155,0.521,158,2.726,160,1.412,161,0.555,162,1.017,163,1.315,165,0.944,169,2.064,172,2.212,178,0.745,180,0.866,183,0.579,190,2.161,196,2.673,214,2.776,224,1.791,231,0.987,234,0.809,239,1.238,241,1.15,251,0.703,252,0.651,262,2.086,263,2.145,264,0.888,267,1.498,280,2.878,283,2.122,285,1.081,293,0.889,296,2.391,297,2.868,301,0.587,319,4.2,320,2.075,322,1.006,340,1.578,351,1.173,352,1.028,354,0.855,355,2.331,377,0.754,386,1.46,391,2.957,406,1.499,431,2.601,438,1.017,446,0.724,455,5.363,458,2.247,470,1.606,474,0.987,502,0.642,521,2.921,523,0.855,531,1.277,583,3.265,603,0.871,619,0.96,620,0.84,625,1.13,630,0.871,646,1.253,668,0.745,674,0.944,682,1.369,683,3.635,684,2.934,688,2.06,690,0.877,698,0.761,724,1.171,728,2.001,736,3.494,745,2.857,754,0.623,768,1.053,773,0.928,779,0.883,790,2.854,834,0.987,835,1.405,841,0.914,850,1.006,865,0.764,898,2.028,903,0.809,909,0.996,910,0.871,968,1.393,970,0.977,972,0.739,1017,0.977,1048,1.112,1066,0.778,1070,1.253,1073,2.028,1076,0.677,1079,4.003,1101,1.04,1131,0.908,1253,3.243,1477,1.452,1482,1.253,1492,1.04,1509,1.15,1520,0.936,1634,1.253,1640,0.987,1660,2.426,1708,0.977,1727,1.816,1748,1.331,1849,1.112,1936,2.79,1942,1.62,1970,1.222,2009,1.222,2018,2.502,2024,2.283,2051,0.96,2052,1.288,2053,1.195,2054,0.85,2084,1.222,2096,1.253,2141,1.331,2164,1.195,2223,2.426,2224,3.934,2225,1.222,2226,4.85,2227,4.85,2228,1.567,2229,2.426,2230,1.171,2231,3.934,2232,1.567,2233,1.567,2234,4.422,2235,1.567,2236,1.567,2237,2.283,2238,1.331,2239,1.567,2240,1.081,2241,1.567,2242,1.567,2243,1.385,2244,2.426,2245,1.567,2246,1.567,2247,1.567,2248,1.567,2249,1.288,2250,1.567,2251,1.567,2252,1.457,2253,1.385,2254,1.567,2255,1.567,2256,1.171,2257,1.222]],["component/81",[7,0.401]],["title/82-1",[2258,66.798,2259,66.798]],["name/82-1",[]],["text/82-1",[]],["component/82-1",[]],["title/82-2",[23,34.737,1619,60.278]],["name/82-2",[]],["text/82-2",[]],["component/82-2",[]],["title/82-3",[42,29.179,436,54.829,514,23.467]],["name/82-3",[]],["text/82-3",[]],["component/82-3",[]],["title/82-4",[23,34.737,1936,48.06]],["name/82-4",[]],["text/82-4",[]],["component/82-4",[]],["title/82-5",[23,29.884,521,43.287,723,25.408]],["name/82-5",[]],["text/82-5",[]],["component/82-5",[]],["title/82",[7,19.043,23,34.737]],["name/82",[23,1.104]],["text/82",[1,2.249,5,3.304,7,1.713,8,0.821,19,3.28,23,5.375,24,2.934,26,3.23,34,1.448,36,1.469,40,1.116,42,1.477,58,2.05,84,0.929,88,1.661,110,2.506,118,1.8,125,2.514,128,3.097,129,1.556,130,1.999,133,2.011,134,3.579,144,1.436,158,1.759,172,2.329,183,2.194,188,1.963,191,2.645,203,1.975,234,1.879,252,1.513,264,3.185,270,2.625,271,2.564,296,2.244,301,2.222,319,1.39,337,2.776,377,1.752,406,1.125,436,4.527,458,2.078,470,2.423,514,2.454,525,1.495,552,1.359,583,1.879,586,1.963,604,1.833,659,2.477,668,2.822,682,1.744,683,1.775,694,1.999,697,1.952,698,1.767,736,2.011,772,2.011,830,2.05,833,2.477,895,2.477,984,2.078,1004,2.27,1013,2.51,1017,2.27,1139,3.604,1168,2.477,1204,2.776,1211,4.489,1402,2.477,1499,2.338,1561,2.446,1641,2.72,1669,2.477,1727,2.314,1747,2.625,1877,2.838,2054,1.975,2056,2.27,2081,2.909,2259,4.745,2260,2.909,2261,3.217,2262,3.217,2263,3.217,2264,3.217,2265,3.217,2266,3.217,2267,3.217,2268,3.217,2269,3.217,2270,3.217,2271,3.217,2272,3.217]],["component/82",[7,0.401]],["title/83-1",[7,22.734]],["name/83-1",[]],["text/83-1",[]],["component/83-1",[]],["title/83-2",[7,19.043,8,18.856]],["name/83-2",[]],["text/83-2",[]],["component/83-2",[]],["title/83-3",[117,26.976,118,21.806,296,27.183]],["name/83-3",[]],["text/83-3",[]],["component/83-3",[]],["title/83-4",[8,10.407,26,17.177,117,17.306,118,13.989,168,21.743,296,17.438,402,9.484]],["name/83-4",[]],["text/83-4",[]],["component/83-4",[]],["title/83-5",[4,43.146,7,19.043]],["name/83-5",[]],["text/83-5",[]],["component/83-5",[]],["title/83-6",[239,31.151,308,27.045,629,59.109]],["name/83-6",[]],["text/83-6",[]],["component/83-6",[]],["title/83-7",[191,35.099]],["name/83-7",[]],["text/83-7",[]],["component/83-7",[]],["title/83-8",[2273,88.192]],["name/83-8",[]],["text/83-8",[]],["component/83-8",[]],["title/83-9",[95,33.294,209,35.376,790,28.438,2274,47.743,2275,47.743]],["name/83-9",[]],["text/83-9",[]],["component/83-9",[]],["title/83-10",[94,39.007,2275,61.082,2276,63.552]],["name/83-10",[]],["text/83-10",[]],["component/83-10",[]],["title/83-11",[93,37.312,1715,51.038,2274,61.082]],["name/83-11",[]],["text/83-11",[]],["component/83-11",[]],["title/83-12",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2277,40.77,2278,40.77]],["name/83-12",[]],["text/83-12",[]],["component/83-12",[]],["title/83-13",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2279,40.77,2280,40.77]],["name/83-13",[]],["text/83-13",[]],["component/83-13",[]],["title/83-14",[8,10.407,191,16.226,854,27.77,2119,30.27,2281,37.92,2282,37.92,2283,40.77]],["name/83-14",[]],["text/83-14",[]],["component/83-14",[]],["title/83",[7,19.043,78,47.724]],["name/83",[631,1.45]],["text/83",[1,0.915,2,0.785,3,1.025,7,0.855,8,0.612,9,0.906,10,1.699,11,0.776,13,2.177,14,2.766,16,0.891,17,0.558,23,1.127,24,1.854,26,0.551,29,0.967,31,0.738,32,0.55,34,1.846,36,1.094,40,1.15,45,0.612,48,0.745,49,0.951,52,1.984,54,0.745,57,1.392,60,0.834,71,1.305,84,0.378,88,0.758,90,1.123,93,0.768,94,1.471,95,2.222,96,1.625,101,0.655,104,1.234,105,1.44,112,0.621,113,2.387,117,1.407,118,2.678,125,1.588,126,1.779,129,0.633,134,0.49,135,1.425,136,1.588,138,0.608,139,2.201,144,1.069,146,1.316,148,1.15,150,0.571,153,1.007,155,1.543,158,1.31,160,1.34,161,0.96,163,0.681,172,0.581,181,0.983,186,0.719,191,2.534,194,0.87,195,1.527,196,1.791,200,0.891,214,0.518,224,1.234,226,0.864,235,1.217,238,0.983,247,0.818,249,1.805,263,1.199,264,1.681,275,0.676,280,1.127,282,0.803,296,2.3,297,0.753,301,0.554,308,2.035,313,2.597,319,2.55,320,0.781,333,0.798,338,1.007,349,1.316,354,2.047,377,1.305,382,1.217,401,0.617,402,1.578,439,0.772,445,0.845,446,0.684,450,0.899,455,1.239,458,0.845,460,0.581,466,0.776,468,1.187,470,1.894,514,1.224,517,0.794,519,1.707,521,0.891,523,0.808,525,0.608,526,1.989,547,1.075,549,0.684,552,3.296,557,1.446,567,0.941,583,0.764,596,0.857,597,0.764,603,0.823,632,1.308,633,1.217,634,1.217,635,1.183,636,2.067,637,1.068,638,1.217,639,1.308,640,1.086,641,1.129,642,1.068,643,1.086,644,1.106,645,1.129,646,1.183,647,1.517,648,1.217,649,1.051,650,1.217,651,2.229,652,1.129,654,0.951,655,1.308,656,0.753,657,1.217,658,1.183,659,1.007,660,1.183,661,1.086,662,1.106,663,1.646,664,1.068,665,1.289,667,2.229,668,0.704,670,1.328,671,1.217,672,0.899,673,1.229,676,0.899,677,0.839,678,1.437,679,1.99,680,0.687,684,0.687,723,0.523,736,0.818,743,1.407,745,0.669,774,0.906,835,0.728,841,0.864,859,0.828,865,1.829,896,0.864,898,1.051,900,0.877,910,2.58,943,0.899,967,0.839,972,0.698,984,2.142,1053,0.915,1066,0.735,1073,1.051,1078,1.548,1125,0.884,1130,1.527,1136,1.57,1139,0.899,1187,0.971,1213,0.932,1253,1.559,1288,1.217,1310,1.021,1343,1.129,1367,1.217,1394,5.489,1400,0.725,1448,1.896,1483,2.27,1520,0.884,1533,0.983,1708,0.923,1735,0.732,1772,2.52,1908,1.217,1942,0.839,1945,0.877,2053,1.129,2054,2.035,2060,3.257,2076,0.915,2145,1.183,2164,1.129,2284,1.48,2285,2.71,2286,1.258,2287,1.48,2288,1.48,2289,4.102,2290,1.48,2291,1.308,2292,1.068,2293,2.229,2294,1.183,2295,1.308,2296,1.76,2297,1.308,2298,1.308,2299,1.183,2300,1.154,2301,1.021,2302,1.48,2303,1.48,2304,1.154,2305,1.308,2306,0.995,2307,2.229,2308,1.183,2309,0.951,2310,1.021,2311,1.183,2312,1.217]],["component/83",[7,0.401]],["title/84-1",[129,26.976,136,15.007,465,24.483,514,20.59]],["name/84-1",[]],["text/84-1",[]],["component/84-1",[]],["title/84-2",[136,13.368,139,18.53,296,21.247,514,18.342,684,26.073]],["name/84-2",[]],["text/84-2",[]],["component/84-2",[]],["title/84-3",[136,12.052,139,16.706,214,17.743,296,19.155,514,16.536,1005,16.019]],["name/84-3",[]],["text/84-3",[]],["component/84-3",[]],["title/84-4",[136,12.052,139,16.706,296,19.155,487,20.443,514,16.536,680,23.507]],["name/84-4",[]],["text/84-4",[]],["component/84-4",[]],["title/84",[102,41.887,136,19.88]],["name/84",[102,1.332]],["text/84",[5,3.023,29,4.565,134,2.627,136,3.175,139,2.616,148,3.675,179,4.947,214,2.778,224,5.826,234,4.096,264,2.465,487,3.201,514,4.178,680,3.681,684,3.681,697,4.254,789,6.341,790,4.015,1005,2.508,2010,6.186]],["component/84",[7,0.401]],["title/85",[136,15.007,214,22.092,264,19.605,1005,19.947]],["name/85",[214,0.521,1005,0.471]],["text/85",[0,2.335,4,2.568,5,2.895,8,2.08,10,1.821,12,2.364,17,2.866,18,2.055,30,1.984,36,3.066,68,2.683,69,3.342,86,2.335,88,2.126,110,2.1,118,1.509,133,4.199,135,2.888,136,2.193,139,3.404,142,2.425,155,2.526,160,2.458,172,1.951,214,4.105,249,2.394,264,1.546,377,2.394,402,1.023,412,3.102,487,3.72,536,7.118,556,2.748,557,2.652,608,2.354,612,3.649,674,2.995,716,3.649,717,3.302,718,4.089,719,2.555,722,7.581,723,1.758,724,3.717,725,4.089,726,2.784,727,3.878,728,2.529,746,1.881,752,2.317,757,4.089,762,3.342,763,3.385,764,3.162,765,3.194,766,2.995,1005,3.516,1483,2.087,2169,5.679,2313,3.717,2314,4.397,2315,4.397]],["component/85",[7,0.401]],["title/86",[136,23.734]],["name/86",[631,1.45]],["text/86",[5,4.01,7,2.398,34,4.186,36,4.246,136,2.503,139,4.196,155,3.499,179,6.562,214,3.686,690,5.89]],["component/86",[7,0.401]],["title/87-1",[88,23.377,142,40.753]],["name/87-1",[]],["text/87-1",[]],["component/87-1",[]],["title/87-2",[6,37.221,687,52.112]],["name/87-2",[]],["text/87-2",[]],["component/87-2",[]],["title/87-3",[123,52.609,124,56.867]],["name/87-3",[]],["text/87-3",[]],["component/87-3",[]],["title/87",[136,19.88,684,38.775]],["name/87",[684,1.233]],["text/87",[6,3.164,15,1.595,17,2.094,26,1.25,32,2.063,35,2.732,36,1.354,38,2.81,40,1.029,57,1.724,75,2.347,77,2.882,84,3.179,88,2.559,91,1.76,96,2.406,121,1.715,123,4.472,124,4.834,129,2.374,130,3.901,135,3.138,136,2.963,142,1.636,144,2.191,155,1.846,166,1.843,171,1.459,172,2.178,192,1.569,196,2.742,202,2.314,211,3.349,214,2.488,264,1.726,308,2.672,313,1.878,316,3.651,321,4.565,331,1.615,377,1.615,388,3.013,401,2.315,411,3.883,509,4.056,570,1.82,663,3.371,668,3.376,682,1.608,686,1.205,697,1.799,698,1.629,699,2.759,700,2.759,702,2.759,703,2.759,704,2.759,705,2.073,706,3.193,707,2.759,708,1.658,709,2.759,711,3.128,713,2.759,714,2.759,786,2.72,889,1.843,917,3.731,949,3.128,1092,1.973,1138,2.133,1187,2.202,1467,2.42,1661,2.283,2316,2.966,2317,2.966,2318,2.966,2319,2.966,2320,2.966,2321,2.966,2322,2.966,2323,2.966,2324,2.966,2325,4.908,2326,2.966,2327,2.966,2328,4.438,2329,3.942,2330,2.966,2331,2.966]],["component/87",[7,0.401]],["title/88-1",[729,57.377]],["name/88-1",[]],["text/88-1",[]],["component/88-1",[]],["title/88-2",[84,21.33,706,48.06]],["name/88-2",[]],["text/88-2",[]],["component/88-2",[]],["title/88-3",[514,27.277,706,48.06]],["name/88-3",[]],["text/88-3",[]],["component/88-3",[]],["title/88-4",[786,48.87]],["name/88-4",[]],["text/88-4",[]],["component/88-4",[]],["title/88-5",[1967,66.236]],["name/88-5",[]],["text/88-5",[]],["component/88-5",[]],["title/88-6",[52,30.744,350,36.208,680,33.358]],["name/88-6",[]],["text/88-6",[]],["component/88-6",[]],["title/88-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/88-7",[]],["text/88-7",[]],["component/88-7",[]],["title/88-8",[502,40.851]],["name/88-8",[]],["text/88-8",[]],["component/88-8",[]],["title/88",[136,17.103,487,29.01,680,33.358]],["name/88",[487,0.6,680,0.69]],["text/88",[4,0.88,7,0.703,8,0.385,13,0.515,14,0.655,17,2.258,18,0.705,20,0.88,26,2.23,29,0.608,32,0.634,35,2.946,36,0.688,38,2.136,46,1.107,52,2.86,71,0.821,84,2.412,96,0.739,101,3.673,108,1.074,110,0.72,112,1.771,117,3.275,118,2.213,121,0.872,125,1.788,134,2.593,136,1.736,142,0.832,148,0.523,155,2.224,157,2.224,161,0.604,163,0.785,164,0.948,165,1.027,170,0.942,171,1.341,172,2.349,178,0.811,180,0.942,195,0.961,196,1.998,214,1.08,226,1.799,239,0.739,245,1.074,247,0.942,248,1.42,250,1.084,252,1.755,255,2.744,263,2.648,275,1.409,277,1.914,279,0.713,280,1.282,297,2.147,301,2.731,315,1.027,319,1.178,327,1.211,331,2.032,340,0.942,346,1.16,347,1.211,351,0.7,375,1.01,377,1.484,378,1.074,386,0.872,391,1.974,395,0.988,398,1.146,418,1.211,430,1.074,439,0.89,446,0.788,451,0.791,452,1.084,455,3.795,458,1.761,465,0.662,487,3.522,505,0.988,508,1.644,514,1.378,525,2.125,547,0.677,583,1.592,596,0.988,597,0.88,604,2.126,608,0.807,622,2.802,665,0.811,673,1.399,679,3.693,680,4.99,682,0.817,683,1.504,686,1.516,689,1.063,698,0.828,705,1.054,708,0.843,712,2.998,729,0.981,730,2.802,731,2.189,732,2.501,733,1.054,734,1.095,735,2.521,736,2.333,737,1.33,738,1.251,741,1.749,744,2.632,745,0.771,770,1.402,771,3.733,772,2.86,774,1.044,775,1.176,776,1.402,777,1.402,778,1.402,779,2.378,780,1.301,781,2.352,782,1.33,783,1.176,785,2.405,786,2.068,787,1.402,788,0.92,789,1.363,790,0.863,889,1.693,973,1.16,985,0.961,993,0.885,1010,1.074,1033,2.684,1066,0.847,1076,0.736,1097,1.923,1219,1.044,1400,0.835,1416,0.954,1478,1.275,1551,1.044,1640,1.074,1659,1.211,1730,1.211,1733,1.193,1933,1.251,1943,1.275,1967,1.132,1968,1.449,1969,1.301,1970,1.33,1971,2.62,1972,1.449,1973,2.405,1974,1.363,1975,1.449,1976,1.449,1977,1.449,1978,1.33,1979,1.449,1980,1.449,2051,1.044,2054,0.925,2332,1.507,2333,1.507,2334,1.507,2335,1.507,2336,1.193]],["component/88",[7,0.401]],["title/89",[468,43.669]],["name/89",[631,1.45]],["text/89",[]],["component/89",[7,0.401]],["title/90",[32,26.708,45,29.703,130,39.481]],["name/90",[45,0.615,559,1.223]],["text/90",[11,7.224,26,3.255,45,3.611,48,4.402,52,3.737,54,4.402,60,4.924,77,5.878,91,4.584,155,4.178,191,3.075,232,6.413,560,7.185,561,7.185,562,7.185,563,7.185,566,7.185,567,5.556,568,7.185]],["component/90",[7,0.401]],["title/91-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/91-1",[]],["text/91-1",[]],["component/91-1",[]],["title/91-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/91-2",[]],["text/91-2",[]],["component/91-2",[]],["title/91-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/91-3",[]],["text/91-3",[]],["component/91-3",[]],["title/91-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/91-4",[]],["text/91-4",[]],["component/91-4",[]],["title/91-5",[148,25.631,582,61.318]],["name/91-5",[]],["text/91-5",[]],["component/91-5",[]],["title/91-6",[84,9.983,136,9.304,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156,1005,12.367]],["name/91-6",[]],["text/91-6",[]],["component/91-6",[]],["title/91-7",[586,53.814]],["name/91-7",[]],["text/91-7",[]],["component/91-7",[]],["title/91",[587,73.205]],["name/91",[587,1.949]],["text/91",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303,1005,1.27]],["component/91",[7,0.401]],["title/92-1",[135,23.974,139,20.802,296,23.851,514,20.59]],["name/92-1",[]],["text/92-1",[]],["component/92-1",[]],["title/92-2",[102,50.007]],["name/92-2",[]],["text/92-2",[]],["component/92-2",[]],["title/92",[102,41.887,135,31.759]],["name/92",[102,1.332]],["text/92",[3,2.853,5,2.875,10,2.762,14,2.898,17,2.846,23,3.137,29,2.691,112,3.166,113,2.961,118,2.289,134,2.499,135,4.439,136,1.795,142,3.68,148,2.314,155,2.509,224,3.435,234,3.896,243,4.196,264,2.345,275,3.448,313,4.223,319,2.883,391,4.804,443,3.696,514,3.353,553,4.17,668,3.587,689,4.705,712,4.371,719,3.876,743,3.916,901,5.884,902,5.884,903,3.896,910,4.196]],["component/92",[7,0.401]],["title/93-1",[406,22.217,1106,34.459,1107,35.216]],["name/93-1",[]],["text/93-1",[]],["component/93-1",[]],["title/93-2",[136,17.103,679,26.447,752,33.489]],["name/93-2",[]],["text/93-2",[]],["component/93-2",[]],["title/93-3",[42,22.807,142,27.403,143,28.034,752,26.176,2337,44.917]],["name/93-3",[]],["text/93-3",[]],["component/93-3",[]],["title/93-4",[5,21.411,42,22.807,135,21.356,138,23.078,752,26.176]],["name/93-4",[]],["text/93-4",[]],["component/93-4",[]],["title/93",[135,37.916]],["name/93",[631,1.45]],["text/93",[8,0.683,17,3.529,20,1.563,23,1.258,24,1.496,29,2.353,31,1.51,40,0.928,42,2.068,45,2.105,76,1.694,84,2.389,92,1.673,96,2.859,99,1.348,101,1.339,104,1.378,106,1.753,118,2.001,125,1.282,134,1.002,135,4.392,136,0.72,138,2.093,142,3.774,143,1.51,144,1.194,152,1.924,155,1.006,161,1.072,164,2.833,170,1.673,171,1.316,183,3.192,189,1.563,192,1.416,195,1.705,196,1.967,211,4.071,251,2.286,252,2.743,254,1.87,255,1.605,263,1.339,280,1.258,301,1.907,308,1.139,320,1.596,341,1.605,351,1.243,357,1.579,374,2.01,377,1.457,391,1.416,406,1.575,415,1.854,439,1.579,451,1.404,455,1.383,502,1.239,531,1.353,570,1.642,583,1.563,593,2.888,608,1.433,668,1.439,719,2.617,752,2.373,754,1.204,756,1.87,764,1.924,771,2.183,772,1.673,786,1.483,859,1.694,890,2.91,891,2.489,892,2.489,893,1.808,894,1.822,895,2.06,896,1.766,897,2.36,898,2.149,899,2.489,904,2.087,913,2.183,972,2.402,1075,1.588,1076,1.307,1109,1.924,1133,3.019,1150,1.483,1151,1.987,1211,1.808,1284,2.149,1348,2.221,1389,2.221,1647,1.854,1747,2.183,2016,3.177,2130,2.42,2337,2.42,2338,2.676,2339,2.676,2340,2.676,2341,2.676,2342,2.262,2343,2.676,2344,2.676,2345,2.676,2346,2.676,2347,2.676,2348,2.149,2349,3.026,2350,3.026,2351,2.676,2352,2.06,2353,2.36,2354,3.026,2355,3.026,2356,2.149,2357,2.676,2358,2.676,2359,2.676,2360,2.676,2361,2.676,2362,2.676,2363,4.073,2364,2.676,2365,2.42,2366,2.676,2367,2.676,2368,2.676,2369,2.36,2370,2.308,2371,2.42]],["component/93",[7,0.401]],["title/94-1",[45,34.526,90,34.631]],["name/94-1",[]],["text/94-1",[]],["component/94-1",[]],["title/94-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/94-2",[]],["text/94-2",[]],["component/94-2",[]],["title/94-3",[79,26.141,134,20.888,552,23.551,686,22.657]],["name/94-3",[]],["text/94-3",[]],["component/94-3",[]],["title/94-4",[84,11.772,112,19.35,139,15.209,335,24.457,429,28.498,624,29.938,673,20.918]],["name/94-4",[]],["text/94-4",[]],["component/94-4",[]],["title/94-5",[26,26.774,465,27.903,2372,48.923]],["name/94-5",[]],["text/94-5",[]],["component/94-5",[]],["title/94-6",[319,31.924,2373,60.278]],["name/94-6",[]],["text/94-6",[]],["component/94-6",[]],["title/94-7",[26,26.774,308,27.045,767,46.175]],["name/94-7",[]],["text/94-7",[]],["component/94-7",[]],["title/94-8",[106,36.54,136,15.007,137,27.802,2374,43.502]],["name/94-8",[]],["text/94-8",[]],["component/94-8",[]],["title/94-9",[86,33.757,191,25.292,296,27.183]],["name/94-9",[]],["text/94-9",[]],["component/94-9",[]],["title/94-10",[144,24.886,547,25.024,673,28.61,2137,40.104]],["name/94-10",[]],["text/94-10",[]],["component/94-10",[]],["title/94-11",[296,31.597,745,37.762]],["name/94-11",[]],["text/94-11",[]],["component/94-11",[]],["title/94-12",[135,27.323,893,42.936,2375,53.736]],["name/94-12",[]],["text/94-12",[]],["component/94-12",[]],["title/94-13",[2313,74.57]],["name/94-13",[]],["text/94-13",[]],["component/94-13",[]],["title/94-14",[84,16.101,586,34.025,672,38.3,1255,24.418]],["name/94-14",[]],["text/94-14",[]],["component/94-14",[]],["title/94",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,1253,29.136]],["name/94",[2376,2.348]],["text/94",[0,0.824,3,0.664,4,0.906,5,0.669,7,0.4,8,1.676,10,1.159,13,0.957,14,0.674,17,0.662,26,2.965,29,1.542,31,0.876,33,1.481,45,1.308,57,2.221,71,0.845,77,0.911,79,0.728,84,2.032,86,1.486,88,0.886,90,1.312,101,1.4,102,0.88,106,1.017,110,1.337,111,1.587,112,2.859,113,0.689,117,1.622,118,1.605,126,1.152,128,0.916,134,0.581,135,1.643,136,1.621,137,3.004,139,3.045,143,0.876,144,2.411,155,1.438,160,0.868,161,0.622,163,1.991,172,0.689,178,0.834,180,0.97,186,0.852,189,1.635,191,1.114,196,0.678,214,2.14,224,0.799,231,1.105,236,0.691,247,3.377,249,0.845,251,0.788,252,3.31,263,1.912,264,3.071,268,1.003,277,0.796,292,1.572,296,3.011,300,1.075,301,1.618,308,1.99,313,0.983,316,0.776,319,1.652,335,1.679,340,0.97,349,0.852,354,2.36,355,1.04,356,0.856,357,2.76,361,1.341,375,1.04,386,0.897,401,1.803,402,0.889,429,1.085,440,2.523,446,0.811,465,1.229,476,2.284,487,1.277,514,1.033,517,0.942,518,1.993,520,1.128,525,0.721,545,1.085,547,1.256,552,2.545,556,1.749,577,2.332,580,0.931,586,0.947,624,2.806,665,2.055,670,0.86,672,2.625,673,3.091,679,0.646,680,0.815,681,1.075,686,1.137,698,2.569,723,0.62,744,1.095,745,0.793,752,0.818,767,1.128,841,1.024,867,1.057,889,0.964,893,1.891,938,2.183,939,1.443,943,1.066,945,1.443,946,1.443,947,1.246,948,1.339,951,2.414,967,0.996,1066,1.572,1076,0.758,1077,1.246,1150,0.86,1174,1.057,1253,3.514,1255,0.68,1289,1.312,1291,1.18,1400,0.86,1403,1.105,1416,0.983,1421,1.116,1533,1.166,1557,1.339,1558,1.652,1610,1.017,1611,1.085,1612,1.688,1650,1.152,1708,1.095,1754,1.152,1786,1.698,1818,1.14,1855,3.119,1942,1.796,1962,3.119,2042,1.075,2063,1.166,2066,1.403,2097,1.228,2137,1.116,2138,1.14,2152,1.403,2161,2.531,2310,1.211,2311,2.531,2313,2.366,2372,2.154,2373,1.266,2374,1.211,2375,2.366,2377,1.403,2378,1.552,2379,1.312,2380,2.799,2381,1.552,2382,1.552,2383,1.552,2384,1.552,2385,1.552,2386,1.552,2387,2.154,2388,1.552,2389,1.552,2390,1.552,2391,1.312,2392,1.552,2393,1.552,2394,1.552,2395,1.552,2396,1.552,2397,1.552]],["component/94",[7,0.401]],["title/95-1",[264,19.605,296,23.851,673,28.61,743,32.738]],["name/95-1",[]],["text/95-1",[]],["component/95-1",[]],["title/95-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/95-2",[]],["text/95-2",[]],["component/95-2",[]],["title/95-3",[136,15.007,144,24.886,319,24.098,401,26.302]],["name/95-3",[]],["text/95-3",[]],["component/95-3",[]],["title/95-4",[679,26.447,754,28.6,2306,48.309]],["name/95-4",[]],["text/95-4",[]],["component/95-4",[]],["title/95-5",[678,44.313,1291,56.153]],["name/95-5",[]],["text/95-5",[]],["component/95-5",[]],["title/95-6",[139,23.708,319,27.465,1005,22.733]],["name/95-6",[]],["text/95-6",[]],["component/95-6",[]],["title/95-7",[120,38.779,319,27.465,949,40.503]],["name/95-7",[]],["text/95-7",[]],["component/95-7",[]],["title/95-8",[0,33.757,139,23.708,1066,35.699]],["name/95-8",[]],["text/95-8",[]],["component/95-8",[]],["title/95-9",[136,15.007,139,20.802,319,24.098,1005,19.947]],["name/95-9",[]],["text/95-9",[]],["component/95-9",[]],["title/95-10",[40,19.348,871,38.977,1431,31.324,2398,43.502]],["name/95-10",[]],["text/95-10",[]],["component/95-10",[]],["title/95-11",[136,12.052,249,24.386,452,32.208,1005,16.019,1403,31.893,1483,21.255]],["name/95-11",[]],["text/95-11",[]],["component/95-11",[]],["title/95",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2060,30.503]],["name/95",[2399,2.348]],["text/95",[0,0.405,5,0.329,7,0.197,8,1.727,10,0.856,13,1.382,14,0.898,15,1.414,17,1.724,18,0.677,20,1.208,23,0.681,26,0.322,29,0.834,30,0.345,32,1.699,34,0.344,35,2.471,36,0.661,37,0.469,40,0.265,45,0.357,52,0.369,54,0.435,56,0.379,63,0.5,68,0.466,77,0.448,79,0.679,84,2.075,88,0.242,93,0.448,94,0.469,95,0.971,96,1.014,101,0.725,102,0.822,103,0.588,112,1.918,113,0.918,115,0.86,118,0.497,120,1.605,125,1.506,126,0.567,128,0.451,129,0.369,134,0.543,135,0.889,136,2.125,137,2.396,139,3.111,143,0.431,144,1.174,146,0.796,154,0.39,155,0.989,160,0.81,161,0.306,163,0.398,166,0.474,171,0.375,178,0.41,180,0.477,189,0.846,190,0.474,192,1.094,195,0.923,196,1.765,214,0.819,224,1.354,228,0.402,239,0.71,243,0.48,247,4.23,248,0.398,249,1.126,251,1.335,252,1.237,255,0.458,263,1.316,264,2.526,272,0.437,275,0.395,278,0.471,282,0.469,283,1.262,286,0.455,292,0.429,296,2.582,297,0.439,301,0.876,308,1.119,317,0.544,319,2.72,324,0.567,333,0.466,340,0.477,341,0.458,351,0.355,354,0.471,374,0.573,375,0.512,377,0.416,391,0.404,398,1.101,401,0.683,402,1.197,421,0.431,424,1.931,431,0.463,440,0.957,441,0.483,443,0.803,446,1.081,451,0.761,452,1.042,455,0.395,459,0.49,465,0.335,468,1.302,470,0.353,487,0.944,492,1.473,505,0.5,508,0.461,514,1.639,517,1.255,520,0.555,523,0.471,525,0.355,531,0.733,547,0.65,549,1.081,552,1.111,577,0.466,586,0.466,597,0.446,603,0.48,604,0.435,615,0.834,617,0.439,620,1.255,665,1.112,668,0.41,670,1.146,673,2.278,678,0.869,679,1.503,680,1.086,684,1.381,686,1.804,690,0.483,705,0.534,743,1.544,744,0.539,754,2.459,755,0.613,773,0.512,783,0.596,841,0.504,854,1.409,865,1.141,871,1.838,873,0.516,894,0.52,909,0.549,910,0.48,918,1.115,931,1.088,932,1.806,933,1.397,934,2.564,936,2.081,938,0.596,940,1.31,942,0.69,947,2.112,948,0.659,949,3.063,951,0.659,958,0.673,959,0.71,963,0.41,966,0.52,967,0.93,970,1.022,974,0.659,975,1.25,982,0.995,984,0.493,993,0.448,998,1.064,1005,2.824,1010,1.032,1017,1.022,1025,0.659,1033,0.549,1040,0.874,1056,1.182,1066,1.765,1076,1.285,1078,0.493,1086,0.673,1096,0.573,1112,1.146,1125,0.516,1126,0.549,1136,0.5,1138,1.042,1146,1.182,1252,0.659,1253,1.711,1277,1.553,1290,0.71,1291,1.101,1400,2.001,1403,1.032,1416,0.483,1431,2.7,1456,0.345,1473,0.995,1483,0.688,1499,1.053,1518,0.659,1520,0.516,1521,0.659,1531,0.659,1558,1.221,1559,1.022,1561,0.58,1578,0.588,1591,1.386,1597,0.71,1610,0.95,1611,1.013,1612,1.587,1631,1.203,1708,0.539,1772,0.58,1786,0.463,1818,1.519,1819,0.529,1849,0.613,1942,1.688,1945,1.763,1955,0.71,1969,0.659,1973,0.673,2054,0.469,2056,0.539,2060,4.111,2083,0.613,2109,0.596,2116,0.623,2118,0.645,2119,0.567,2137,0.549,2169,0.645,2194,1.088,2230,0.645,2258,0.69,2286,0.734,2296,0.561,2299,1.31,2301,1.13,2306,1.999,2309,0.555,2329,1.164,2352,0.588,2365,0.69,2372,0.588,2373,1.182,2377,0.69,2387,2.78,2391,0.645,2398,1.13,2400,0.763,2401,1.348,2402,0.763,2403,0.69,2404,0.763,2405,1.449,2406,0.645,2407,0.645,2408,1.25,2409,0.71,2410,0.763,2411,0.645,2412,1.182,2413,0.623,2414,0.69,2415,1.225,2416,0.763,2417,1.636,2418,1.182,2419,1.115,2420,0.763,2421,0.645,2422,2.543,2423,0.623,2424,0.69,2425,0.69,2426,0.69,2427,0.763,2428,0.763,2429,0.71,2430,0.763,2431,0.645,2432,0.645,2433,0.69,2434,0.69,2435,0.763,2436,0.763,2437,0.763,2438,0.69,2439,0.71,2440,1.449,2441,0.763,2442,0.763,2443,0.673,2444,0.69,2445,0.673,2446,0.763,2447,0.69,2448,0.596,2449,0.763,2450,0.763,2451,0.763,2452,1.278,2453,0.763,2454,0.763,2455,0.613,2456,0.763,2457,0.659,2458,0.763,2459,0.763,2460,0.763]],["component/95",[7,0.401]],["title/96-1",[236,39.251]],["name/96-1",[]],["text/96-1",[]],["component/96-1",[]],["title/96-2",[96,36.21,679,30.741]],["name/96-2",[]],["text/96-2",[]],["component/96-2",[]],["title/96-3",[679,30.741,949,47.08]],["name/96-3",[]],["text/96-3",[]],["component/96-3",[]],["title/96-4",[32,18.821,79,20.995,84,12.931,421,25.274,455,23.149,917,34.042]],["name/96-4",[]],["text/96-4",[]],["component/96-4",[]],["title/96-5",[351,40.973]],["name/96-5",[]],["text/96-5",[]],["component/96-5",[]],["title/96-6",[980,68.801]],["name/96-6",[]],["text/96-6",[]],["component/96-6",[]],["title/96-7",[36,33.721,1005,26.424]],["name/96-7",[]],["text/96-7",[]],["component/96-7",[]],["title/96-8",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/96-8",[]],["text/96-8",[]],["component/96-8",[]],["title/96-9",[155,18.684,183,20.773,308,21.139,465,21.81,593,24.597]],["name/96-9",[]],["text/96-9",[]],["component/96-9",[]],["title/96-10",[52,35.736,1137,55.481]],["name/96-10",[]],["text/96-10",[]],["component/96-10",[]],["title/96-11",[29,25.643,287,46.666,679,26.447]],["name/96-11",[]],["text/96-11",[]],["component/96-11",[]],["title/96-12",[32,23.434,267,33.087,377,30.364,734,40.515]],["name/96-12",[]],["text/96-12",[]],["component/96-12",[]],["title/96-13",[351,40.973]],["name/96-13",[]],["text/96-13",[]],["component/96-13",[]],["title/96-14",[754,39.689]],["name/96-14",[]],["text/96-14",[]],["component/96-14",[]],["title/96-15",[2352,67.892]],["name/96-15",[]],["text/96-15",[]],["component/96-15",[]],["title/96-16",[2411,74.57]],["name/96-16",[]],["text/96-16",[]],["component/96-16",[]],["title/96-17",[2412,71.964]],["name/96-17",[]],["text/96-17",[]],["component/96-17",[]],["title/96-18",[2461,84.764]],["name/96-18",[]],["text/96-18",[]],["component/96-18",[]],["title/96-19",[2445,77.795]],["name/96-19",[]],["text/96-19",[]],["component/96-19",[]],["title/96-20",[2413,71.964]],["name/96-20",[]],["text/96-20",[]],["component/96-20",[]],["title/96-21",[2414,79.747]],["name/96-21",[]],["text/96-21",[]],["component/96-21",[]],["title/96",[26,31.122,679,30.741]],["name/96",[26,0.554,679,0.547]],["text/96",[0,0.137,2,0.155,3,0.11,4,0.151,5,1.653,8,1.952,14,0.324,15,0.526,17,1.695,18,0.349,19,0.466,20,0.151,22,0.42,23,0.121,24,0.91,25,0.385,26,0.771,29,0.894,30,0.337,31,0.678,32,2.084,34,0.336,35,0.544,36,1.177,37,0.6,38,0.427,40,0.176,42,0.232,45,0.349,52,0.686,54,0.147,57,0.946,63,0.641,68,0.309,71,0.772,76,0.321,79,2.105,82,0.351,84,2.776,86,2.574,88,1.168,90,0.35,91,0.153,92,1.144,96,2.319,97,0.345,98,0.17,99,2.069,101,3.853,104,0.133,105,0.522,106,0.332,108,0.184,110,0.677,111,0.146,112,0.464,115,0.153,117,1.019,118,1.058,120,0.597,121,0.431,122,0.348,123,0.361,124,0.198,125,1.235,127,0.17,128,0.152,133,0.161,134,1.031,135,0.61,136,0.596,138,0.659,139,2.407,141,0.189,142,0.279,143,1.251,144,0.536,145,0.173,146,0.142,148,0.492,154,0.132,155,1.594,160,0.547,161,0.568,162,0.189,163,2.274,165,1.246,166,0.881,168,0.27,169,0.443,170,0.611,171,0.591,172,1.065,178,0.139,179,0.357,183,0.765,186,0.278,188,0.309,189,0.436,190,0.464,191,0.389,192,0.968,194,0.171,196,1.048,200,0.345,201,0.542,209,0.184,211,0.137,214,0.476,224,0.384,226,0.493,228,0.136,238,0.56,239,1.879,243,0.318,246,0.222,248,0.848,249,0.276,250,0.185,251,0.61,252,0.765,255,0.448,262,0.448,263,2.367,264,0.262,266,0.198,267,0.841,272,0.56,275,1.047,277,1.582,278,0.159,279,0.353,280,0.667,282,0.158,283,0.733,285,0.201,286,0.583,287,0.548,292,0.675,296,0.418,297,0.291,301,1.563,304,0.376,308,1.021,315,0.345,316,0.601,317,0.184,319,1.262,320,0.445,330,0.342,331,0.996,341,0.155,347,0.207,348,0.174,349,0.278,350,0.288,351,0.756,352,0.191,353,0.227,356,0.279,357,0.152,377,0.532,391,0.136,394,0.17,395,0.787,398,0.567,401,0.567,403,0.191,404,0.214,406,0.775,415,0.179,420,0.187,421,1.033,424,0.189,431,0.156,432,0.965,439,0.152,440,0.645,441,1.03,442,0.189,443,0.413,445,0.327,446,0.851,450,0.177,451,0.135,455,3.03,458,2.095,465,1.054,467,0.24,468,0.702,470,0.452,481,0.909,484,0.508,502,0.453,505,0.169,508,1.222,509,0.482,514,1.871,517,0.453,518,0.696,521,0.508,523,0.604,525,0.347,531,0.608,547,0.539,549,1.255,552,0.214,553,0.161,556,0.316,557,0.155,570,0.6,575,0.537,577,0.597,580,0.587,581,0.763,583,0.95,586,0.309,593,0.702,596,0.332,597,0.702,601,0.201,602,0.196,603,0.162,615,0.429,617,1.053,619,0.832,621,0.56,625,0.413,630,0.615,652,0.222,663,0.177,665,1.291,668,0.139,670,2.201,673,0.26,675,0.512,676,0.672,679,1.349,682,0.14,684,1.354,686,0.743,689,0.182,696,0.413,697,0.987,698,0.41,708,0.144,711,0.323,712,1.066,717,0.194,719,0.294,723,0.81,731,0.207,732,0.339,733,0.522,734,0.368,735,0.174,736,1.144,741,0.165,742,0.364,744,0.69,745,0.832,752,0.857,754,1.529,760,0.182,762,1.237,763,0.198,764,0.864,766,0.345,767,0.368,771,0.413,772,0.316,773,0.339,774,0.832,775,0.937,783,0.201,786,0.786,788,0.157,790,1.374,827,0.145,834,0.184,835,0.143,844,0.222,850,0.187,854,0.176,859,0.761,861,0.153,865,0.663,867,0.508,873,0.504,889,0.16,893,0.174,894,1.246,896,0.334,900,0.5,904,0.201,907,0.726,908,0.24,909,0.364,917,0.913,918,2.119,919,1.251,920,0.774,921,0.599,924,0.204,925,0.204,926,0.21,927,0.201,928,0.413,929,0.196,930,0.191,931,0.194,932,0.825,933,0.174,934,0.609,936,0.774,938,0.201,940,0.233,942,0.233,943,0.825,949,1.643,950,0.42,955,0.471,956,0.24,960,0.24,961,1.762,962,1.157,963,0.401,964,1.899,965,1.884,966,0.345,967,0.325,968,0.142,969,0.24,970,0.357,971,0.24,972,0.27,973,0.753,974,0.437,975,1.037,976,1.139,977,0.24,978,0.227,979,0.471,980,0.201,981,0.413,982,0.348,983,0.38,984,0.916,985,0.476,986,0.258,987,2.061,988,0.694,989,0.644,990,0.207,991,0.21,994,0.222,995,0.222,996,0.222,997,0.222,998,0.548,999,0.222,1000,0.222,1001,0.201,1002,0.222,1003,0.222,1004,0.182,1005,0.725,1006,1.912,1007,0.222,1008,0.927,1009,0.222,1010,0.531,1011,0.201,1012,0.198,1013,0.201,1014,0.437,1015,0.59,1017,0.526,1018,0.222,1019,0.21,1020,0.694,1021,0.437,1022,0.774,1023,0.471,1024,0.401,1025,0.222,1026,0.24,1027,0.24,1028,0.24,1029,0.24,1030,0.258,1031,0.376,1032,0.24,1033,1.17,1034,0.694,1035,0.24,1036,0.24,1037,0.24,1038,0.24,1039,0.24,1040,0.155,1041,0.24,1042,0.24,1043,0.24,1044,0.24,1045,0.222,1046,0.227,1048,0.207,1049,0.214,1051,0.24,1052,0.24,1053,0.683,1054,0.24,1055,0.24,1056,0.21,1059,0.24,1061,0.222,1062,0.185,1063,0.437,1064,0.191,1065,0.258,1066,1.449,1068,0.364,1069,0.24,1070,0.233,1071,0.24,1072,0.24,1073,0.207,1074,0.21,1075,0.153,1076,0.247,1077,0.207,1078,0.327,1079,0.965,1080,0.24,1082,0.21,1083,0.196,1087,0.191,1088,0.222,1089,0.372,1090,0.351,1091,0.153,1092,0.171,1093,0.447,1094,0.447,1095,0.42,1098,0.227,1103,0.447,1105,0.227,1106,0.405,1107,0.281,1108,0.187,1109,0.185,1110,0.179,1111,0.227,1112,0.204,1126,0.185,1127,0.191,1137,0.194,1141,0.385,1146,0.21,1158,0.191,1196,0.42,1219,0.677,1249,0.21,1253,0.168,1285,0.385,1291,0.196,1295,0.201,1308,0.198,1361,0.619,1400,0.413,1416,0.472,1417,0.227,1447,0.437,1451,0.21,1483,0.24,1508,0.567,1515,0.395,1519,0.407,1529,0.207,1533,0.38,1650,0.554,1659,0.207,1682,0.204,1692,0.218,1730,0.785,1750,0.201,1946,0.42,1947,0.214,1950,0.718,1961,0.218,1969,0.222,1981,0.227,1982,0.227,1983,0.227,1984,0.227,1986,0.227,1987,0.658,1988,0.227,1989,0.658,1990,0.227,1991,0.658,1992,0.218,1993,0.658,1994,0.227,1995,0.619,1996,0.207,1997,0.248,1998,0.248,1999,0.227,2007,0.233,2016,0.182,2042,0.677,2045,0.201,2056,0.848,2060,0.508,2071,0.233,2093,0.222,2094,0.233,2108,0.21,2112,0.458,2119,0.191,2137,0.537,2138,1.195,2164,0.222,2194,0.734,2229,0.248,2230,0.218,2237,2.788,2240,0.201,2252,0.533,2256,1.016,2296,0.189,2308,0.458,2309,0.71,2310,0.395,2328,0.233,2329,1.307,2348,0.207,2352,0.574,2372,0.198,2375,0.218,2387,0.198,2391,0.218,2403,0.233,2411,0.218,2412,0.413,2413,0.413,2415,0.428,2417,0.204,2418,0.21,2419,0.198,2421,0.218,2422,0.318,2423,0.413,2424,0.458,2425,0.458,2426,0.233,2431,0.631,2432,0.428,2433,0.233,2434,0.458,2438,0.233,2445,0.447,2448,0.201,2457,0.437,2461,0.248,2462,0.573,2463,0.978,2464,0.458,2465,0.458,2466,0.271,2467,0.271,2468,0.812,2469,0.978,2470,1.106,2471,0.844,2472,0.506,2473,0.506,2474,0.258,2475,0.506,2476,0.258,2477,0.196,2478,0.222,2479,0.218,2480,0.506,2481,0.258,2482,0.258,2483,0.258,2484,0.233,2485,0.24,2486,0.258,2487,0.506,2488,0.458,2489,0.233,2490,0.292,2491,0.258,2492,0.258,2493,0.227,2494,0.471,2495,0.222,2496,0.506,2497,0.258,2498,0.258,2499,0.258,2500,0.258,2501,0.233,2502,0.233,2503,0.218,2504,0.258,2505,0.258,2506,0.258,2507,0.233,2508,0.506,2509,0.506,2510,0.746,2511,1.282,2512,1.118,2513,0.746,2514,0.458,2515,0.746,2516,0.258,2517,0.506,2518,0.233,2519,0.258,2520,0.258,2521,0.258,2522,0.258,2523,0.746,2524,0.978,2525,0.258,2526,0.258,2527,0.258,2528,0.233,2529,0.258,2530,0.258,2531,0.746,2532,0.258,2533,0.258,2534,0.258,2535,0.258,2536,0.258,2537,0.258,2538,0.258,2539,0.506,2540,1.202,2541,0.258,2542,0.258,2543,0.258,2544,0.258,2545,0.471,2546,0.258,2547,0.258,2548,0.24,2549,0.258,2550,0.258,2551,0.258,2552,0.218,2553,0.746,2554,0.258,2555,0.258,2556,0.258,2557,0.258,2558,0.233,2559,0.24,2560,0.258,2561,0.506,2562,0.21,2563,0.471,2564,0.258,2565,0.978,2566,2.156,2567,3.547,2568,0.258,2569,0.506,2570,0.258,2571,0.258,2572,0.471,2573,0.506,2574,0.458,2575,0.506,2576,0.292,2577,0.506,2578,0.506,2579,0.506,2580,0.458,2581,0.292,2582,0.292,2583,0.506,2584,0.746,2585,0.258,2586,0.201,2587,0.214,2588,0.227,2589,0.233,2590,0.258,2591,0.506,2592,0.471,2593,0.24,2594,0.506,2595,0.233,2596,0.24,2597,0.258,2598,0.233,2599,0.258,2600,0.258,2601,0.258,2602,0.258,2603,0.258,2604,0.258,2605,0.258,2606,0.258,2607,0.258,2608,0.258,2609,0.258,2610,0.227,2611,0.258,2612,0.258,2613,0.218,2614,0.258,2615,0.258,2616,0.258,2617,0.258,2618,0.292,2619,0.179,2620,0.292,2621,0.227,2622,0.258]],["component/96",[7,0.401]],["title/97-1",[923,82.026]],["name/97-1",[]],["text/97-1",[]],["component/97-1",[]],["title/97",[136,17.103,144,28.362,401,29.976]],["name/97",[631,1.45]],["text/97",[6,3.272,7,1.085,8,2.024,13,1.438,18,1.966,24,2.352,26,2.736,34,2.922,71,2.291,105,1.828,113,1.867,118,1.444,129,2.035,134,2.97,136,1.748,144,3.539,145,2.82,168,2.244,214,1.667,252,1.978,263,2.105,275,2.175,300,2.915,401,3.063,402,1.845,415,2.915,470,2.999,514,2.398,523,2.598,552,1.777,597,2.457,676,2.89,679,4.866,686,1.709,688,3.433,705,2.941,790,2.409,835,2.342,924,3.329,925,3.329,926,3.433,927,3.282,928,3.433,929,3.198,930,3.124,931,3.16,963,2.262,968,2.321,984,4.195,1031,3.124,1040,2.538,1116,3.913,1117,3.913,1118,5.728,1119,3.63,1120,3.913,1121,3.913,1122,3.239,1123,3.089,1124,3.913,1125,2.842,1126,3.026,1127,3.124,1136,4.255,1310,3.282,1483,1.997,1950,3.089,2018,3.026,2329,3.379,2406,3.557,2407,3.557,2623,4.207]],["component/97",[7,0.401]],["title/98-1",[236,39.251]],["name/98-1",[]],["text/98-1",[]],["component/98-1",[]],["title/98-2",[88,27.909]],["name/98-2",[]],["text/98-2",[]],["component/98-2",[]],["title/98-3",[30,28.681,466,37.709,2624,47.184]],["name/98-3",[]],["text/98-3",[]],["component/98-3",[]],["title/98-4",[134,23.806,264,22.343,361,30.449]],["name/98-4",[]],["text/98-4",[]],["component/98-4",[]],["title/98-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/98-5",[]],["text/98-5",[]],["component/98-5",[]],["title/98-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/98-6",[]],["text/98-6",[]],["component/98-6",[]],["title/98-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/98-7",[]],["text/98-7",[]],["component/98-7",[]],["title/98-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/98-8",[]],["text/98-8",[]],["component/98-8",[]],["title/98-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/98-9",[]],["text/98-9",[]],["component/98-9",[]],["title/98-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/98-10",[]],["text/98-10",[]],["component/98-10",[]],["title/98-11",[134,23.806,466,37.709,2627,51.038]],["name/98-11",[]],["text/98-11",[]],["component/98-11",[]],["title/98-12",[26,20.927,84,14.343,308,21.139,514,18.342,2628,44.917]],["name/98-12",[]],["text/98-12",[]],["component/98-12",[]],["title/98-13",[859,40.238,1279,40.238,2629,57.467]],["name/98-13",[]],["text/98-13",[]],["component/98-13",[]],["title/98-14",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/98-14",[]],["text/98-14",[]],["component/98-14",[]],["title/98-15",[63,48.407,1513,54.244]],["name/98-15",[]],["text/98-15",[]],["component/98-15",[]],["title/98-16",[54,42.087,2631,66.798]],["name/98-16",[]],["text/98-16",[]],["component/98-16",[]],["title/98-17",[32,31.045,2309,53.672]],["name/98-17",[]],["text/98-17",[]],["component/98-17",[]],["title/98-18",[32,26.708,745,32.486,2309,46.175]],["name/98-18",[]],["text/98-18",[]],["component/98-18",[]],["title/98-19",[183,26.577,593,31.469,1079,51.038]],["name/98-19",[]],["text/98-19",[]],["component/98-19",[]],["title/98-20",[470,34.116,1846,56.153]],["name/98-20",[]],["text/98-20",[]],["component/98-20",[]],["title/98-21",[32,37.063]],["name/98-21",[]],["text/98-21",[]],["component/98-21",[]],["title/98-22",[2632,88.192]],["name/98-22",[]],["text/98-22",[]],["component/98-22",[]],["title/98-23",[36,25.454,338,42.927,470,25.753,1846,42.387]],["name/98-23",[]],["text/98-23",[]],["component/98-23",[]],["title/98-24",[88,20.111,155,23.905,1040,38.337]],["name/98-24",[]],["text/98-24",[]],["component/98-24",[]],["title/98-25",[1255,32.348,1457,33.624]],["name/98-25",[]],["text/98-25",[]],["component/98-25",[]],["title/98",[679,30.741,1136,48.407]],["name/98",[679,0.547,1136,0.862]],["text/98",[0,1.01,3,0.711,4,0.673,5,0.609,6,0.303,7,0.227,8,0.759,10,0.787,13,0.105,15,0.165,17,0.811,18,0.66,19,0.192,23,0.542,24,1.664,26,1.833,29,1.278,30,0.858,31,0.339,32,2.725,34,0.635,35,0.171,36,0.403,38,0.176,40,0.306,45,0.143,52,0.427,54,1.581,57,0.67,65,0.211,68,0.187,71,0.905,79,0.891,84,1.257,86,0.319,88,1.557,91,0.356,92,1.189,93,0.18,96,0.15,98,0.202,101,0.951,102,0.174,105,0.133,110,0.147,111,0.174,112,0.902,113,0.737,115,0.523,116,0.174,117,1.782,118,1.688,121,0.177,122,0.211,125,1.425,127,0.582,129,2.031,133,1.333,134,2.739,135,0.258,136,0.747,138,0.143,139,0.709,141,3.196,143,2.777,144,0.514,146,0.168,147,0.202,148,0.576,153,0.236,154,0.589,155,1.693,158,0.168,160,0.79,161,1.269,163,0.735,166,1.463,167,0.259,168,0.164,169,0.684,170,0.551,171,1.049,172,0.737,178,0.165,180,1.472,183,0.695,186,0.168,188,0.538,190,0.191,191,1.958,192,0.162,195,0.562,196,1.693,199,0.541,200,0.409,201,0.436,205,0.246,206,0.225,214,1.018,215,1.549,221,0.213,224,0.593,228,0.162,231,0.218,238,0.663,239,0.432,240,0.23,242,0.23,243,0.193,246,0.761,247,0.192,248,2.187,249,1.399,250,0.634,251,0.448,252,0.415,253,0.209,255,0.529,262,0.184,263,1.489,264,1.046,265,0.416,267,0.182,268,0.388,271,0.929,272,0.176,275,0.859,277,1.526,278,0.189,279,0.786,280,0.664,282,0.369,283,0.187,286,0.358,287,0.225,288,0.499,289,0.239,292,0.793,293,0.197,296,1.007,297,0.508,301,1.778,308,0.601,311,0.776,313,0.73,316,0.831,319,1.369,328,0.239,333,0.538,335,0.997,338,0.236,340,0.883,345,0.499,347,0.482,348,0.207,350,0.175,351,0.991,354,0.545,355,0.403,357,0.354,360,1.073,361,1.607,374,0.23,375,0.206,377,1.282,378,0.428,379,0.255,386,0.816,394,0.202,395,0.201,397,0.243,401,1.309,402,0.328,406,1.573,412,0.424,413,0.265,421,0.339,428,0.499,429,0.42,430,0.218,431,0.186,432,0.709,440,0.202,441,1.491,443,0.921,446,0.16,451,0.463,455,2.678,460,0.392,461,0.255,464,0.388,465,0.835,466,0.523,468,0.152,470,3.539,480,0.518,482,0.192,502,1.19,505,0.578,508,0.185,509,0.57,513,0.255,514,0.702,516,0.265,517,0.364,523,1.026,525,0.143,531,0.304,542,0.285,547,0.746,549,0.461,553,0.192,557,0.185,577,0.366,580,1.279,583,0.351,586,0.366,591,0.994,593,0.699,596,0.394,597,0.673,603,0.193,604,0.175,608,0.164,615,0.176,617,0.176,619,1.477,620,0.699,630,1.196,636,0.265,637,0.49,640,0.255,641,0.518,649,0.246,660,0.277,662,0.259,665,0.474,668,0.759,670,3.008,673,1.625,674,0.409,675,0.413,679,2.659,682,0.901,683,0.169,684,1.761,686,1.044,694,0.373,696,0.49,697,1.153,698,0.33,708,0.336,711,0.196,712,1.246,716,0.732,719,0.67,723,0.123,732,0.403,734,0.436,745,0.589,752,0.316,754,0.397,760,0.216,768,0.233,772,0.72,774,0.213,779,0.383,786,1.755,788,0.538,790,0.951,834,0.218,841,0.761,850,0.223,853,0.255,859,0.194,861,0.356,865,1.176,889,0.548,893,0.406,894,0.209,900,1.722,903,0.179,910,0.555,913,0.25,929,0.233,930,0.228,932,0.211,937,0.209,938,0.239,943,1.306,963,0.62,964,3.893,966,0.962,967,0.566,968,0.487,972,0.753,982,0.606,983,0.23,984,0.388,985,0.562,991,0.25,998,0.441,1005,0.11,1008,0.657,1017,0.996,1019,1.152,1022,1.117,1033,3.816,1040,0.852,1045,0.265,1053,0.617,1066,1.884,1074,0.25,1076,0.293,1079,0.482,1082,0.25,1091,0.182,1097,1.661,1101,1.768,1108,0.436,1109,0.221,1110,0.798,1112,0.243,1125,0.207,1128,0.179,1129,0.158,1130,0.383,1135,0.25,1136,3.477,1155,0.23,1169,0.436,1211,0.207,1213,0.218,1219,0.416,1255,0.263,1282,1.687,1284,0.246,1287,0.204,1294,0.265,1295,0.239,1308,0.236,1310,0.239,1311,0.285,1321,0.265,1348,1.379,1398,0.271,1399,1.719,1403,0.218,1416,0.194,1451,0.94,1457,0.14,1463,0.518,1477,0.508,1483,0.789,1499,0.223,1508,0.457,1513,0.846,1520,0.207,1554,0.508,1556,0.197,1609,0.193,1612,0.185,1620,0.42,1625,0.23,1640,0.218,1643,0.698,1647,0.416,1650,0.228,1681,0.277,1727,0.221,1759,0.178,1772,0.457,1779,0.23,1784,0.259,1786,0.186,1846,3.421,1852,0.428,1942,0.566,1950,0.441,1963,1.64,1995,0.255,2003,0.259,2009,0.271,2016,0.424,2018,0.634,2042,0.611,2054,1.02,2056,0.216,2060,0.209,2076,0.214,2092,0.25,2109,0.239,2116,0.49,2118,0.259,2132,0.265,2148,0.277,2225,0.271,2238,1.108,2240,0.239,2256,0.974,2257,0.271,2260,0.277,2294,0.277,2300,0.271,2306,0.233,2309,2.437,2336,0.475,2363,0.277,2370,0.265,2371,0.277,2379,0.508,2407,0.508,2417,0.243,2418,0.25,2419,0.236,2421,0.259,2447,0.277,2448,0.688,2484,0.277,2495,0.265,2501,0.277,2502,0.277,2503,0.259,2507,0.277,2528,0.277,2552,0.259,2580,0.277,2586,0.469,2589,0.277,2595,0.277,2598,0.277,2619,0.611,2625,1.412,2626,0.887,2627,0.246,2628,0.543,2630,0.482,2631,0.798,2633,0.543,2634,0.25,2635,1.928,2636,2.144,2637,2.323,2638,1.502,2639,1.277,2640,0.632,2641,0.277,2642,0.191,2643,0.277,2644,0.277,2645,0.543,2646,0.482,2647,0.265,2648,0.277,2649,0.277,2650,0.277,2651,0.277,2652,0.543,2653,0.277,2654,0.543,2655,0.277,2656,0.277,2657,0.277,2658,0.255,2659,0.307,2660,0.307,2661,0.601,2662,0.285,2663,0.518,2664,0.277,2665,0.277,2666,0.277,2667,0.277,2668,4.921,2669,0.307,2670,0.307,2671,0.307,2672,0.601,2673,1.504,2674,0.307,2675,0.307,2676,0.307,2677,0.307,2678,0.307,2679,0.577,2680,0.307,2681,0.307,2682,0.285,2683,1.152,2684,0.271,2685,0.271,2686,0.307,2687,0.277,2688,0.882,2689,0.882,2690,0.307,2691,0.307,2692,2.132,2693,0.601,2694,0.821,2695,0.307,2696,0.307,2697,0.601,2698,0.601,2699,0.601,2700,0.307,2701,0.307,2702,0.307,2703,0.307,2704,0.307,2705,0.307,2706,0.601,2707,0.307,2708,0.307,2709,0.307,2710,0.307,2711,0.347,2712,0.347,2713,0.559,2714,0.307,2715,0.307,2716,0.277,2717,0.307,2718,0.307,2719,0.307,2720,0.307,2721,0.307,2722,0.882,2723,1.152,2724,0.882,2725,1.901,2726,0.601,2727,0.601,2728,0.307,2729,0.882,2730,0.882,2731,1.152,2732,0.307,2733,0.882,2734,0.277,2735,0.307,2736,0.259,2737,0.307,2738,0.307,2739,0.277,2740,0.307,2741,0.307,2742,0.307,2743,0.307,2744,0.307,2745,0.307,2746,0.307,2747,0.307,2748,0.601,2749,0.307,2750,0.601,2751,0.307,2752,0.307,2753,0.307,2754,0.307,2755,0.307,2756,0.285]],["component/98",[7,0.401]],["title/99-1",[236,39.251]],["name/99-1",[]],["text/99-1",[]],["component/99-1",[]],["title/99-2",[96,36.21,679,30.741]],["name/99-2",[]],["text/99-2",[]],["component/99-2",[]],["title/99-3",[679,30.741,949,47.08]],["name/99-3",[]],["text/99-3",[]],["component/99-3",[]],["title/99-4",[980,68.801]],["name/99-4",[]],["text/99-4",[]],["component/99-4",[]],["title/99-5",[36,33.721,1005,26.424]],["name/99-5",[]],["text/99-5",[]],["component/99-5",[]],["title/99-6",[754,39.689]],["name/99-6",[]],["text/99-6",[]],["component/99-6",[]],["title/99-7",[2757,79.747]],["name/99-7",[]],["text/99-7",[]],["component/99-7",[]],["title/99-8",[2758,79.747]],["name/99-8",[]],["text/99-8",[]],["component/99-8",[]],["title/99-9",[2759,79.747]],["name/99-9",[]],["text/99-9",[]],["component/99-9",[]],["title/99-10",[2760,79.747]],["name/99-10",[]],["text/99-10",[]],["component/99-10",[]],["title/99-11",[2761,88.192]],["name/99-11",[]],["text/99-11",[]],["component/99-11",[]],["title/99",[402,17.184,679,30.741]],["name/99",[402,0.306,679,0.547]],["text/99",[5,3.349,8,2.272,13,0.305,14,0.387,17,2.702,19,0.558,23,0.419,24,1.329,26,2.089,29,0.677,31,0.503,34,0.401,36,2.071,45,0.417,52,0.431,68,0.544,71,0.914,76,0.565,79,0.787,84,2.878,86,0.892,88,1.289,96,3.372,99,3.333,101,4.072,105,0.387,111,1.348,115,0.529,117,1.009,118,0.576,120,1.451,127,0.589,134,0.891,136,0.808,139,2.127,142,0.926,143,0.947,144,0.749,146,0.922,148,0.309,154,0.858,155,1.129,161,0.357,163,0.465,166,1.043,168,0.476,171,1.169,172,0.396,178,0.48,186,0.922,190,0.554,192,2.155,196,0.39,224,0.459,228,0.47,245,1.195,248,2.363,249,0.486,251,0.852,252,1.676,263,1.502,264,0.836,266,0.687,275,0.868,277,3.529,280,0.419,282,0.547,283,0.544,292,0.501,296,0.381,301,1.271,319,1.027,331,2.218,341,0.535,351,0.414,375,2.39,377,0.914,394,0.589,395,0.584,401,0.421,402,0.829,406,1.586,408,0.488,415,0.618,421,0.947,424,0.655,442,0.655,445,1.94,451,0.468,465,1.044,508,2.151,509,1.94,514,2.54,521,0.607,525,0.414,531,0.451,547,0.4,549,0.878,553,0.558,570,0.547,580,1.426,583,0.521,586,0.544,593,2.017,597,0.521,608,0.899,615,0.513,617,2.853,630,0.561,668,0.903,670,0.494,673,0.861,679,1.695,683,0.492,684,0.881,686,2.172,687,0.629,697,1.018,698,0.49,711,0.568,723,0.671,733,1.173,736,1.049,742,0.641,743,0.524,754,1.351,786,2.514,790,2.332,827,0.501,830,0.568,841,1.982,865,0.926,924,0.706,925,0.706,926,0.728,927,0.696,928,0.728,929,0.678,932,1.633,934,1.94,936,0.706,943,0.613,949,3.16,961,1.233,963,0.48,967,0.572,976,1.348,981,0.728,984,0.576,989,0.769,990,0.716,991,0.728,993,0.524,994,0.769,995,0.769,996,0.769,997,0.769,998,0.655,999,0.769,1000,0.769,1001,0.696,1002,0.769,1003,0.769,1004,0.629,1005,1.912,1006,4.919,1007,0.769,1008,1.711,1009,0.769,1010,0.635,1011,0.696,1012,0.687,1013,0.696,1014,1.448,1015,1.881,1017,0.629,1018,0.769,1019,0.728,1033,0.641,1040,0.538,1053,0.623,1056,0.728,1061,0.769,1062,0.641,1063,1.448,1064,0.662,1066,0.943,1088,1.448,1106,1.933,1107,1.664,1114,0.716,1285,1.276,1479,0.769,1533,1.261,1961,0.754,1962,1.37,1964,1.448,1965,1.448,1981,0.787,1982,0.787,1983,0.787,1984,0.787,1986,0.787,1987,2.097,1988,0.787,1989,2.097,1990,0.787,1991,2.097,1992,0.754,1993,2.097,1994,0.787,1995,1.973,1996,0.716,1999,0.787,2051,0.618,2056,0.629,2068,0.806,2194,2.255,2234,1.328,2240,1.309,2310,1.309,2372,0.687,2387,0.687,2406,0.754,2415,0.754,2422,0.561,2423,0.728,2431,0.754,2432,1.419,2455,0.716,2464,1.518,2465,1.518,2466,0.938,2467,0.938,2468,0.74,2488,1.518,2489,0.806,2511,2.15,2514,0.806,2574,1.518,2586,0.696,2633,1.518,2757,0.806,2758,1.518,2762,1.679,2763,0.892,2764,1.679,2765,0.892,2766,0.892,2767,0.892,2768,0.892,2769,0.892,2770,0.892,2771,0.892,2772,0.892,2773,0.892,2774,0.892,2775,0.892,2776,0.892,2777,0.892,2778,0.892,2779,4.608,2780,1.679,2781,1.679,2782,0.892,2783,0.892,2784,0.892,2785,1.481,2786,1.679,2787,0.892,2788,0.83,2789,0.892,2790,0.892,2791,0.892,2792,0.892,2793,0.892,2794,0.892,2795,0.892,2796,0.892,2797,0.892,2798,0.892,2799,0.892,2800,0.892,2801,0.892,2802,0.892,2803,1.561,2804,0.806,2805,0.892]],["component/99",[7,0.401]],["title/100-1",[29,25.643,42,29.179,502,29.437]],["name/100-1",[]],["text/100-1",[]],["component/100-1",[]],["title/100-2",[155,27.786,308,31.436]],["name/100-2",[]],["text/100-2",[]],["component/100-2",[]],["title/100-3",[183,30.892,1128,43.146]],["name/100-3",[]],["text/100-3",[]],["component/100-3",[]],["title/100-4",[183,30.892,1129,38.042]],["name/100-4",[]],["text/100-4",[]],["component/100-4",[]],["title/100-5",[356,40.753,835,41.118]],["name/100-5",[]],["text/100-5",[]],["component/100-5",[]],["title/100-6",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/100-6",[]],["text/100-6",[]],["component/100-6",[]],["title/100-7",[227,33.834,525,23.078,861,29.474,1130,31.658,1131,32.55]],["name/100-7",[]],["text/100-7",[]],["component/100-7",[]],["title/100-8",[349,34.906,1735,35.536,2806,57.467]],["name/100-8",[]],["text/100-8",[]],["component/100-8",[]],["title/100-9",[351,34.319,1967,55.481]],["name/100-9",[]],["text/100-9",[]],["component/100-9",[]],["title/100-10",[96,36.21,2807,73.872]],["name/100-10",[]],["text/100-10",[]],["component/100-10",[]],["title/100-11",[293,47.398,1004,52.112]],["name/100-11",[]],["text/100-11",[]],["component/100-11",[]],["title/100",[13,15.31,14,19.455,84,12.931,98,29.562,502,20.744,1132,21.525]],["name/100",[1132,1.129]],["text/100",[0,0.577,3,0.465,5,0.677,6,1.017,7,0.146,8,1.597,10,0.45,11,1.198,12,0.584,13,2.471,14,2.049,17,1.508,18,0.734,19,0.353,29,1.288,30,0.255,31,0.319,32,0.848,34,0.706,35,0.874,37,0.347,38,0.323,40,0.7,42,1.298,45,0.508,46,0.798,48,1.819,52,1.544,54,1.15,56,1.405,57,0.328,60,1.286,77,0.332,79,0.509,84,3.259,88,1.317,91,1.198,92,0.353,93,0.332,96,0.277,98,0.373,99,0.285,101,0.544,104,0.291,105,0.877,110,0.27,112,0.516,117,1.887,118,2.618,120,1.725,125,0.752,127,0.373,128,1.438,130,0.351,134,0.212,136,0.292,138,0.262,139,0.753,146,0.862,147,0.373,148,0.7,151,0.395,154,0.555,155,0.759,161,0.629,163,0.818,164,0.987,166,0.351,168,0.301,171,0.278,172,1.081,179,0.398,180,0.353,183,1.613,185,0.766,186,1.338,188,0.345,189,0.33,192,0.299,194,0.376,196,0.247,202,0.441,203,0.347,206,0.415,211,1.077,214,0.965,220,0.41,224,1.039,225,0.424,227,0.74,228,1.064,236,0.251,239,0.277,240,0.816,247,0.353,251,0.287,252,0.949,262,0.339,264,1.122,265,0.753,267,0.645,268,0.365,271,0.276,275,0.562,277,0.29,279,0.514,280,0.511,282,0.347,283,0.663,285,0.441,293,1.295,296,2.127,300,1.398,301,0.239,308,1.037,311,0.31,315,0.74,316,0.283,319,0.469,324,0.419,325,1.021,327,0.454,330,1.06,331,0.855,333,0.345,338,0.836,346,0.435,349,2.442,350,0.322,351,1.313,354,0.349,356,1.761,360,0.429,361,0.52,386,0.628,402,0.822,406,0.852,412,0.398,421,0.319,438,0.415,439,0.333,445,0.365,446,0.295,450,0.388,457,0.415,459,1.007,464,0.365,465,0.248,468,0.777,474,0.402,478,0.441,482,0.353,502,1.129,508,0.947,514,0.9,517,0.343,518,0.402,521,0.385,523,0.349,525,0.938,528,1.431,531,0.794,532,0.766,539,0.435,541,0.454,547,0.704,548,0.382,549,0.568,552,0.239,556,0.353,558,0.402,570,0.667,577,0.663,580,1.696,593,0.28,596,1.029,597,0.635,602,0.429,608,0.302,618,0.419,647,0.358,666,0.675,668,0.844,670,0.602,673,1.25,677,0.362,682,0.306,689,0.766,698,0.31,706,2.51,711,1.286,728,1.402,729,1.313,730,1.179,735,1.364,736,2.411,742,0.406,743,1.185,745,0.555,758,0.435,773,0.379,786,1.119,790,0.323,827,1.986,833,0.435,835,0.874,846,3.707,861,2.95,868,0.511,890,1.014,910,0.355,963,0.584,967,0.362,972,0.579,993,0.332,1004,0.398,1010,0.402,1021,0.487,1022,0.447,1024,0.447,1040,0.655,1048,0.454,1066,0.882,1083,1.193,1087,0.419,1097,0.398,1102,0.498,1128,1.179,1129,0.808,1130,1.286,1131,1.323,1133,1.633,1134,0.429,1135,0.461,1136,0.37,1137,0.424,1138,0.781,1139,1.078,1140,0.525,1141,0.826,1142,0.86,1143,0.86,1144,0.435,1145,0.347,1146,0.461,1147,0.525,1148,0.525,1149,1.01,1150,3.467,1151,0.807,1152,1.01,1153,0.937,1154,0.435,1155,0.424,1156,0.525,1157,0.461,1158,0.419,1159,0.525,1160,1.01,1161,0.525,1162,0.902,1163,0.525,1164,0.902,1165,1.46,1166,0.461,1167,0.525,1168,0.435,1169,0.41,1170,1.01,1171,0.525,1172,1.208,1173,0.525,1174,0.385,1175,0.525,1176,0.525,1177,0.525,1178,0.525,1179,0.525,1180,1.01,1181,0.525,1182,0.525,1183,1.01,1184,1.01,1185,1.01,1186,0.525,1187,0.807,1188,1.01,1189,0.525,1190,0.525,1191,0.525,1192,0.525,1193,0.525,1194,0.525,1195,0.349,1196,0.469,1197,1.303,1198,0.525,1199,0.525,1200,0.461,1201,1.452,1202,0.525,1203,1.01,1204,0.487,1205,1.01,1206,0.525,1207,0.525,1208,0.525,1209,0.525,1210,0.498,1211,0.382,1212,0.525,1214,0.759,1219,0.391,1277,0.424,1294,0.487,1295,0.441,1296,0.487,1300,0.461,1347,1.01,1349,1.46,1356,1.781,1361,6.334,1362,2.969,1379,1.877,1382,0.525,1400,0.313,1483,0.268,1520,0.382,1556,0.362,1558,0.333,1647,0.391,1682,0.86,1733,1.242,1735,1.977,1964,0.487,1967,1.83,1996,0.454,2003,0.478,2029,0.982,2037,0.982,2055,0.454,2060,0.385,2072,0.454,2076,0.395,2134,0.478,2135,0.454,2173,2.102,2336,0.447,2342,0.478,2478,1.354,2558,1.825,2806,3.197,2808,0.487,2809,1.57,2810,0.565,2811,0.565,2812,0.565,2813,0.565,2814,0.565,2815,1.086,2816,0.565,2817,0.498,2818,0.565,2819,0.565,2820,0.565,2821,0.565,2822,1.086,2823,0.565,2824,0.565,2825,0.565,2826,0.565,2827,1.57,2828,1.57,2829,0.565,2830,1.086,2831,0.565,2832,1.086,2833,0.565,2834,1.086,2835,0.565,2836,2.827,2837,0.525,2838,3.193,2839,0.565,2840,1.086,2841,1.086,2842,1.086,2843,1.086,2844,1.01,2845,1.086,2846,0.565,2847,0.498,2848,0.565,2849,0.565,2850,0.982,2851,0.525,2852,0.565,2853,0.565,2854,1.57,2855,0.565,2856,0.565,2857,1.57,2858,0.565,2859,0.565,2860,0.565,2861,0.565,2862,0.565,2863,0.565,2864,0.565,2865,0.565,2866,0.565,2867,0.565,2868,0.565,2869,0.565,2870,0.565,2871,0.565,2872,0.525,2873,0.565,2874,0.525,2875,1.086,2876,1.086,2877,1.086,2878,0.565,2879,0.565,2880,0.565,2881,0.565,2882,0.565,2883,1.086,2884,0.565,2885,1.57,2886,0.565,2887,0.565,2888,0.565,2889,0.565,2890,0.498,2891,0.565,2892,0.565,2893,0.565,2894,0.565]],["component/100",[7,0.401]],["title/101-1",[402,20.515]],["name/101-1",[]],["text/101-1",[]],["component/101-1",[]],["title/101-2",[116,50.007]],["name/101-2",[]],["text/101-2",[]],["component/101-2",[]],["title/101-3",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/101-3",[]],["text/101-3",[]],["component/101-3",[]],["title/101-4",[33,23.693,36,20.443,111,25.393,116,25.393,118,15.366,421,25.274]],["name/101-4",[]],["text/101-4",[]],["component/101-4",[]],["title/101-5",[36,18.611,88,12.902,116,23.118,118,13.989,143,23.009,361,19.534,854,27.77]],["name/101-5",[]],["text/101-5",[]],["component/101-5",[]],["title/101-6",[33,23.693,111,25.393,118,23.373,361,21.457,421,25.274]],["name/101-6",[]],["text/101-6",[]],["component/101-6",[]],["title/101-7",[33,14.895,36,12.852,111,15.964,116,15.964,118,9.66,143,15.889,186,15.464,421,15.889,854,19.177,861,16.706,985,17.944,1153,24.29]],["name/101-7",[]],["text/101-7",[]],["component/101-7",[]],["title/101-8",[54,18.307,110,15.346,118,17.986,120,19.606,171,15.803,214,12.73,361,15.395,487,14.667,680,16.866]],["name/101-8",[]],["text/101-8",[]],["component/101-8",[]],["title/101-9",[245,52.609,528,43.37]],["name/101-9",[]],["text/101-9",[]],["component/101-9",[]],["title/101-10",[88,23.377,356,40.753]],["name/101-10",[]],["text/101-10",[]],["component/101-10",[]],["title/101-11",[48,36.208,88,20.111,356,35.06]],["name/101-11",[]],["text/101-11",[]],["component/101-11",[]],["title/101-12",[88,20.111,356,35.06,1172,48.923]],["name/101-12",[]],["text/101-12",[]],["component/101-12",[]],["title/101-13",[56,31.577,356,35.06,711,40.503]],["name/101-13",[]],["text/101-13",[]],["component/101-13",[]],["title/101-14",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/101-14",[]],["text/101-14",[]],["component/101-14",[]],["title/101-15",[1276,68.801]],["name/101-15",[]],["text/101-15",[]],["component/101-15",[]],["title/101",[13,19.063,14,24.225,88,17.646,158,30.495]],["name/101",[88,0.743]],["text/101",[0,0.694,3,0.385,4,0.271,5,0.2,7,0.337,8,1.22,10,0.85,11,0.275,12,0.25,13,1.959,14,2.076,15,0.703,17,1.749,18,0.611,19,0.29,23,0.615,24,0.731,31,0.507,32,0.549,33,3.032,34,2.054,36,0.41,40,0.454,42,0.413,45,0.217,46,1.242,48,2.194,49,0.95,52,1.315,54,3.361,56,1.502,57,1.193,58,0.573,60,1.732,63,0.304,65,2.077,71,0.712,77,0.273,80,0.331,84,2.28,88,2.557,91,1.421,92,0.562,93,1.775,94,1.038,95,1.134,96,0.829,97,1.152,100,1.43,101,2.689,103,0.692,105,2.335,106,0.589,107,1.705,110,1.714,111,2.94,113,2.544,115,1.004,116,3.989,117,0.872,118,2.993,120,4.637,121,0.268,123,0.64,125,0.431,128,0.274,129,0.435,130,0.559,134,0.769,136,0.125,143,3.329,145,0.311,146,0.255,148,0.312,155,0.901,160,0.26,161,0.524,163,0.681,164,0.566,166,1.051,168,0.48,169,0.275,170,0.817,171,1.337,172,0.399,186,1.493,188,0.283,191,0.185,192,0.476,194,0.309,196,1.894,199,0.285,202,0.701,204,0.393,211,0.48,214,1.077,215,0.653,221,0.623,224,0.463,227,0.316,234,0.525,238,0.349,243,0.292,245,0.331,248,2.597,249,0.253,252,0.795,253,0.316,255,0.278,262,0.278,263,0.232,264,0.316,271,0.227,272,0.515,275,0.24,277,0.868,280,0.218,285,0.362,292,0.261,293,0.577,296,1.417,301,1.403,304,0.345,308,0.72,313,1.721,316,2.867,319,0.389,322,0.337,325,1.336,330,0.314,335,0.784,338,0.357,340,0.562,341,1.015,344,0.385,350,1.364,351,1.113,356,3.254,360,0.353,361,1.302,377,0.253,379,0.385,384,0.401,386,0.268,389,0.836,394,0.594,397,0.367,402,0.954,403,0.345,406,0.314,408,0.254,421,1.87,429,0.325,438,1.508,439,0.531,440,0.306,441,0.294,443,0.498,446,0.47,455,0.24,470,0.214,480,0.401,487,0.937,502,0.215,505,1.981,506,0.349,508,0.542,509,1.093,519,1.205,523,0.287,525,1.405,526,0.385,528,0.273,531,1.211,549,0.684,552,0.38,553,0.817,558,0.331,570,0.552,575,0.334,577,0.549,580,0.278,602,0.353,604,0.512,613,0.353,617,0.267,619,0.322,620,0.545,664,0.379,666,0.288,668,0.25,670,0.498,677,0.298,679,0.193,680,1.078,686,0.365,697,0.282,698,0.255,706,0.302,708,0.26,711,1.732,712,1.108,728,0.752,729,1.1,732,0.876,765,0.653,766,0.612,767,0.337,768,0.683,772,0.29,773,0.603,827,0.261,835,1.143,841,0.594,854,2.954,861,2.432,869,0.692,889,0.559,890,0.845,900,0.311,910,0.566,937,1.152,949,0.296,961,0.341,963,0.25,966,0.316,968,0.496,972,1.095,980,0.362,985,0.573,993,0.273,1013,0.362,1031,0.345,1040,0.28,1047,0.379,1049,0.385,1062,1.216,1075,0.275,1076,0.439,1083,0.994,1089,0.341,1092,0.309,1129,0.239,1130,0.296,1131,1.569,1133,1.134,1139,0.898,1144,0.357,1154,0.692,1155,0.675,1162,0.385,1164,0.746,1172,4.137,1197,0.746,1213,1.462,1214,1.435,1216,0.432,1217,0.432,1218,0.432,1219,1.172,1220,1.216,1221,1.128,1222,0.432,1223,0.432,1224,0.836,1225,0.836,1226,0.432,1227,0.432,1228,0.432,1229,0.432,1230,0.432,1231,0.432,1232,0.432,1233,0.432,1234,0.432,1235,0.432,1236,0.432,1237,0.432,1238,1.216,1239,0.432,1240,0.836,1241,1.216,1242,0.432,1243,0.432,1244,0.432,1245,0.432,1246,0.701,1247,0.836,1248,1.573,1249,0.734,1250,0.675,1251,0.836,1252,0.401,1253,0.302,1254,0.432,1255,0.203,1256,1.085,1257,0.432,1258,0.793,1261,0.432,1262,0.432,1265,0.432,1266,0.432,1267,0.432,1268,0.432,1269,0.432,1270,0.432,1271,0.432,1272,0.432,1273,0.432,1274,0.432,1275,0.432,1276,0.362,1277,1.542,1278,0.432,1295,0.362,1296,0.401,1297,0.432,1298,0.432,1299,0.432,1300,1.067,1301,0.385,1302,0.432,1303,0.385,1308,0.357,1319,0.432,1320,0.432,1321,0.401,1322,0.432,1323,0.432,1324,0.432,1325,1.573,1326,0.432,1327,0.836,1328,0.432,1329,0.432,1330,0.464,1331,0.432,1332,0.432,1333,0.432,1334,0.836,1335,0.432,1336,0.836,1337,0.432,1338,0.432,1339,0.836,1340,0.836,1341,0.432,1342,0.432,1343,0.401,1344,0.432,1345,0.432,1346,0.432,1383,0.432,1384,0.432,1385,0.432,1386,0.432,1387,0.432,1388,0.793,1389,0.385,1390,0.292,1391,0.41,1392,0.432,1393,0.432,1397,0.432,1416,0.569,1456,0.21,1483,0.427,1484,0.353,1498,0.325,1513,0.66,1641,0.393,1661,0.357,1733,1.895,1768,0.836,1770,0.776,1849,0.373,1938,0.836,2042,0.623,2051,0.322,2054,0.285,2076,0.325,2083,0.373,2127,0.776,2444,0.42,2448,0.362,2518,0.42,2673,0.367,2895,0.464,2896,2.053,2897,0.42,2898,0.464,2899,0.464,2900,0.899,2901,0.464,2902,0.464,2903,0.464,2904,1.307,2905,0.464,2906,0.464,2907,0.464,2908,0.464,2909,0.464,2910,0.464,2911,0.464,2912,0.464,2913,0.464,2914,0.525,2915,0.464,2916,2.053,2917,0.464,2918,0.464,2919,0.464,2920,1.479,2921,1.307,2922,0.464,2923,0.464,2924,0.464,2925,0.464,2926,0.432,2927,0.464,2928,0.464,2929,0.899,2930,0.464,2931,0.899,2932,1.307,2933,0.464,2934,1.067,2935,1.307,2936,0.464,2937,0.464,2938,0.899,2939,0.464,2940,1.691,2941,0.464,2942,0.464,2943,0.464,2944,0.464,2945,0.446,2946,0.464,2947,0.464,2948,0.464,2949,0.464,2950,0.464,2951,0.464,2952,0.464,2953,0.464,2954,0.464,2955,0.464,2956,0.899,2957,0.464,2958,0.464,2959,0.899,2960,0.464,2961,0.464,2962,0.464,2963,0.464,2964,0.464,2965,0.464,2966,0.464,2967,0.464,2968,0.464,2969,0.464,2970,0.464,2971,0.464,2972,0.464]],["component/101",[7,0.401]],["title/102-1",[56,27.706,84,16.101,236,24.817,691,48.109]],["name/102-1",[]],["text/102-1",[]],["component/102-1",[]],["title/102-2",[1276,68.801]],["name/102-2",[]],["text/102-2",[]],["component/102-2",[]],["title/102",[13,25.254,105,32.092]],["name/102",[631,1.45]],["text/102",[7,0.664,8,1.113,13,1.939,20,1.504,24,1.44,26,2.389,30,1.162,45,1.203,52,2.744,54,2.484,56,1.279,60,2.779,71,1.402,77,1.512,84,2.495,88,1.795,92,3.545,98,1.7,101,1.288,105,1.119,112,2.07,113,1.143,117,4.157,118,3.854,125,1.234,128,1.52,134,2.124,136,2.182,139,0.961,148,1.513,155,3.05,161,1.747,168,2.325,179,1.816,183,1.077,214,2.958,226,3.744,236,1.146,239,2.137,263,1.288,264,0.905,278,1.59,292,1.446,296,3.886,301,3.162,308,1.856,313,1.63,332,2.101,357,1.52,391,1.362,402,1.553,438,1.891,443,2.416,446,1.346,451,1.352,455,1.331,458,1.664,465,2.49,487,1.175,514,0.951,519,1.834,547,1.156,549,1.346,552,1.088,556,1.61,570,1.58,604,1.467,617,1.481,661,2.137,665,1.385,670,2.416,673,2.91,674,1.754,679,1.815,680,2.289,683,1.421,684,1.352,691,2.222,723,1.029,743,1.512,746,1.101,865,1.421,909,1.852,963,2.345,966,1.754,972,1.373,1005,0.921,1031,3.237,1091,2.587,1092,1.713,1139,1.769,1157,2.101,1276,2.009,1279,1.63,1280,2.177,1281,2.395,1282,4.487,1283,2.395,1284,2.068,1285,1.957,1286,2.137,1287,1.713,1305,2.068,1306,2.137,1308,1.982,1309,2.575,1942,1.652,2973,2.912]],["component/102",[7,0.401]],["title/103-1",[78,56.976]],["name/103-1",[]],["text/103-1",[]],["component/103-1",[]],["title/103-2",[745,45.082]],["name/103-2",[]],["text/103-2",[]],["component/103-2",[]],["title/103-3",[1255,32.348,1457,33.624]],["name/103-3",[]],["text/103-3",[]],["component/103-3",[]],["title/103",[136,17.103,178,34.172,1005,22.733]],["name/103",[1473,1.613]],["text/103",[8,1.827,65,4.917,88,2.266,118,2.456,129,3.463,136,1.927,139,2.671,178,5.121,183,2.994,228,3.773,263,3.582,264,2.517,301,3.031,388,4.394,468,3.545,487,3.268,514,2.644,686,2.909,723,2.862,756,5.004,827,4.022,1005,3.828,1473,4.917,1585,4.876,2422,4.504,2566,4.762,2974,7.159,2975,8.098,2976,7.159,2977,8.098]],["component/103",[7,0.401]],["title/104-1",[78,56.976]],["name/104-1",[]],["text/104-1",[]],["component/104-1",[]],["title/104-2",[745,45.082]],["name/104-2",[]],["text/104-2",[]],["component/104-2",[]],["title/104-3",[1255,32.348,1457,33.624]],["name/104-3",[]],["text/104-3",[]],["component/104-3",[]],["title/104",[84,14.343,136,13.368,492,35.376,1005,17.769,1145,30.489]],["name/104",[492,1.672]],["text/104",[8,1.827,84,2.067,88,2.266,118,2.456,136,1.927,139,2.671,183,2.994,264,2.517,301,3.031,388,4.394,460,3.178,468,3.545,487,3.268,492,8.125,514,2.644,686,2.909,723,2.862,728,4.119,746,3.062,756,5.004,827,4.022,993,4.203,1005,3.828,1145,5.846,1472,4.368,2422,4.504,2566,4.762]],["component/104",[7,0.401]],["title/105-1",[78,56.976]],["name/105-1",[]],["text/105-1",[]],["component/105-1",[]],["title/105-2",[745,45.082]],["name/105-2",[]],["text/105-2",[]],["component/105-2",[]],["title/105-3",[1255,32.348,1457,33.624]],["name/105-3",[]],["text/105-3",[]],["component/105-3",[]],["title/105",[136,13.368,590,39.301,1005,17.769,1558,29.317,2374,38.752]],["name/105",[1558,0.776,1818,0.966]],["text/105",[8,1.736,10,2.817,30,3.07,84,1.964,88,2.153,118,3.158,136,1.831,139,2.538,214,2.695,264,2.392,301,2.88,388,4.176,460,3.019,468,3.369,486,4.365,487,3.105,514,2.512,686,2.764,723,2.72,726,4.307,756,4.755,827,3.821,1005,3.731,1472,4.151,1558,6.156,1735,3.804,1758,4.426,1816,5.171,1818,6.758,2374,5.307,2422,4.28,2566,4.525]],["component/105",[7,0.401]],["title/106-1",[78,56.976]],["name/106-1",[]],["text/106-1",[]],["component/106-1",[]],["title/106-2",[745,45.082]],["name/106-2",[]],["text/106-2",[]],["component/106-2",[]],["title/106-3",[1255,32.348,1457,33.624]],["name/106-3",[]],["text/106-3",[]],["component/106-3",[]],["title/106",[136,17.103,1005,22.733,1431,35.699]],["name/106",[1431,1.319]],["text/106",[8,1.907,65,5.132,84,2.158,88,2.365,118,2.564,136,2.011,139,2.787,183,3.125,264,2.627,279,3.535,301,3.164,388,4.586,487,3.411,514,2.759,686,3.036,723,2.987,827,4.197,1005,3.91,1431,6.517,1578,5.752,1580,6.757,2398,5.829,2422,4.701,2566,4.97]],["component/106",[7,0.401]],["title/107-1",[78,56.976]],["name/107-1",[]],["text/107-1",[]],["component/107-1",[]],["title/107-2",[745,45.082]],["name/107-2",[]],["text/107-2",[]],["component/107-2",[]],["title/107-3",[1255,32.348,1457,33.624]],["name/107-3",[]],["text/107-3",[]],["component/107-3",[]],["title/107",[136,17.103,1005,22.733,1591,42.597]],["name/107",[1591,1.574]],["text/107",[8,1.608,12,3.388,15,3.388,32,2.648,35,3.507,88,1.994,118,2.162,136,1.696,139,2.351,183,2.635,264,2.215,301,2.668,388,3.868,460,3.876,468,4.324,482,3.939,487,3.987,493,8.319,514,3.225,531,3.186,549,3.295,686,2.56,723,2.519,756,6.104,758,4.851,827,4.906,898,5.061,1005,3.585,1591,7.253,2422,3.964,2566,4.191,2978,7.127,2979,6.301]],["component/107",[7,0.401]],["title/108-1",[84,16.101,117,23.67,402,12.971,604,31.77]],["name/108-1",[]],["text/108-1",[]],["component/108-1",[]],["title/108-2",[84,12.931,117,19.01,136,12.052,139,16.706,604,25.515,1005,16.019]],["name/108-2",[]],["text/108-2",[]],["component/108-2",[]],["title/108",[402,17.184,1040,44.562]],["name/108",[402,0.306,1040,0.793]],["text/108",[0,0.907,3,0.73,6,0.86,7,0.44,8,1.281,13,1.412,14,1.324,18,0.798,23,1.942,26,0.719,29,1.666,30,1.376,34,1.372,36,0.779,37,1.048,42,0.784,45,1.93,84,0.88,86,1.619,88,0.54,108,1.216,110,0.815,112,1.447,115,1.013,117,1.753,118,0.586,125,0.818,133,1.067,134,2.78,135,0.734,136,2.208,139,3.482,144,1.36,145,2.043,148,1.058,150,0.745,151,1.193,155,1.147,158,0.933,160,0.954,161,1.655,163,2.615,172,2.228,178,0.918,180,1.067,183,1.275,189,0.997,196,3.034,202,1.332,203,1.048,214,2.285,224,2.127,225,2.289,236,0.76,248,2.151,252,1.942,263,2.066,267,1.013,268,1.969,270,1.393,271,1.489,272,0.977,280,0.803,292,0.959,296,0.73,301,0.723,319,1.785,333,1.042,354,1.054,357,1.007,386,0.987,394,2.012,395,1.119,397,1.351,401,0.805,402,2.311,406,2.238,408,1.667,418,1.371,420,1.24,441,1.081,443,0.946,445,1.969,450,1.172,455,1.576,460,0.758,465,0.749,468,0.845,474,1.216,487,0.779,514,1.126,518,1.216,523,2.55,525,1.919,548,1.153,549,0.892,552,0.721,557,1.03,583,0.997,593,1.509,617,0.982,630,3.158,665,0.918,668,2.699,674,1.163,675,1.172,678,1.024,679,3.261,683,1.682,686,1.678,695,0.873,696,1.393,719,1.771,723,0.682,733,1.193,735,1.153,741,1.095,745,0.873,754,0.768,756,1.193,779,1.088,827,0.959,835,0.95,865,2.278,903,0.997,949,1.088,967,1.095,968,0.942,970,1.204,993,1.002,1005,3.253,1033,2.192,1040,1.839,1076,0.834,1082,1.393,1097,2.15,1106,1.653,1107,0.946,1125,1.153,1126,1.228,1131,1.119,1169,2.215,1213,2.171,1308,1.314,1400,0.946,1416,1.081,1456,0.773,1477,0.982,1483,0.81,1499,1.24,1516,1.393,1555,2.076,1852,2.171,1936,1.111,1965,2.63,2042,1.183,2097,1.351,2098,1.473,2135,1.371,2136,1.443,2194,1.282,2348,1.371,2356,1.371,2387,1.314,2455,1.371,2479,1.443,2503,1.443,2586,1.332,2646,1.371,2687,1.544,2759,1.544,2760,1.544,2804,1.544,2980,1.707,2981,1.707,2982,1.707,2983,1.707,2984,1.707,2985,1.707,2986,1.707,2987,1.707,2988,1.707]],["component/108",[7,0.401]],["title/109-1",[402,17.184,1456,33.432]],["name/109-1",[]],["text/109-1",[]],["component/109-1",[]],["title/109-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/109-2",[]],["text/109-2",[]],["component/109-2",[]],["title/109-3",[8,18.856,150,32.262]],["name/109-3",[]],["text/109-3",[]],["component/109-3",[]],["title/109-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/109-4",[]],["text/109-4",[]],["component/109-4",[]],["title/109-5",[547,33.151,708,41.306]],["name/109-5",[]],["text/109-5",[]],["component/109-5",[]],["title/109-6",[350,31.77,546,42.927,830,35.539,2989,55.762]],["name/109-6",[]],["text/109-6",[]],["component/109-6",[]],["title/109-7",[8,16.222,546,48.923,830,40.503]],["name/109-7",[]],["text/109-7",[]],["component/109-7",[]],["title/109-8",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/109-8",[]],["text/109-8",[]],["component/109-8",[]],["title/109-9",[8,16.222,746,27.183,1005,22.733]],["name/109-9",[]],["text/109-9",[]],["component/109-9",[]],["title/109-10",[1255,32.348,1457,33.624]],["name/109-10",[]],["text/109-10",[]],["component/109-10",[]],["title/109",[545,55.999,862,41.88,1129,28.716]],["name/109",[545,0.919,862,0.988]],["text/109",[0,2.229,5,2.196,8,1.794,10,0.721,20,1.017,26,0.734,29,2.056,30,0.786,32,1.304,34,2.631,35,1.727,36,1.417,42,0.8,45,1.45,49,1.265,56,0.865,57,1.012,71,0.948,84,3.245,88,1.85,90,0.817,91,1.033,93,1.023,94,1.069,95,1.167,99,0.878,101,0.871,104,1.598,110,2.005,115,1.033,125,3.367,127,2.771,128,1.832,129,2.03,136,1.13,138,1.442,139,0.65,144,0.777,148,0.604,155,0.655,165,1.186,168,0.929,169,1.033,172,2.261,183,0.728,196,1.355,211,3.748,214,0.69,223,1.446,224,1.598,232,1.446,245,3.629,251,0.884,252,1.974,254,1.217,264,0.612,279,0.824,280,0.819,286,1.851,296,0.745,297,1.002,308,0.741,316,1.553,325,1.133,335,1.045,351,2.716,386,1.794,401,0.822,402,0.976,406,1.085,424,1.279,425,3.904,441,1.103,457,4.759,460,0.773,470,1.433,487,0.795,502,0.807,514,1.881,525,0.809,528,3.432,545,3.561,546,5.775,547,1.393,553,1.94,557,1.051,668,2.257,673,0.894,676,1.196,686,0.708,690,1.965,695,2.604,711,1.978,736,2.624,754,0.784,788,1.063,827,1.743,829,3.702,830,5.046,835,0.969,840,4.739,844,1.503,861,1.033,862,2.331,865,1.712,867,1.186,963,0.937,973,1.341,981,1.421,1005,0.623,1122,2.389,1123,1.279,1127,1.293,1129,0.897,1132,0.837,1201,1.253,1279,1.103,1287,1.158,1421,1.253,1472,1.063,1492,2.331,1519,1.399,1602,1.62,1639,1.575,1967,4.39,2177,0.894,2636,1.057,2642,1.082,2667,1.575,2716,1.575,2734,1.575,2739,1.575,2850,2.806,2990,1.742,2991,3.103,2992,1.742,2993,1.742,2994,1.742,2995,1.742,2996,1.742,2997,3.103,2998,1.742,2999,1.742,3000,3.103,3001,3.103,3002,1.742,3003,1.62,3004,3.103,3005,1.742,3006,1.742,3007,1.742,3008,1.742,3009,1.742,3010,3.103,3011,1.742,3012,1.742,3013,1.742,3014,3.103,3015,3.103,3016,1.742,3017,1.742,3018,3.103,3019,1.742,3020,3.103,3021,1.742,3022,1.742]],["component/109",[7,0.401]],["title/110-1",[402,17.184,1456,33.432]],["name/110-1",[]],["text/110-1",[]],["component/110-1",[]],["title/110-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/110-2",[]],["text/110-2",[]],["component/110-2",[]],["title/110-3",[8,18.856,150,32.262]],["name/110-3",[]],["text/110-3",[]],["component/110-3",[]],["title/110-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/110-4",[]],["text/110-4",[]],["component/110-4",[]],["title/110-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/110-5",[]],["text/110-5",[]],["component/110-5",[]],["title/110-6",[8,16.222,746,27.183,1005,22.733]],["name/110-6",[]],["text/110-6",[]],["component/110-6",[]],["title/110-7",[1255,32.348,1457,33.624]],["name/110-7",[]],["text/110-7",[]],["component/110-7",[]],["title/110",[178,34.172,1129,32.728,1473,43.651]],["name/110",[677,0.844,1473,0.903]],["text/110",[5,3.366,8,2.247,12,2.208,26,1.73,29,2.571,84,3.224,88,2.471,90,1.925,99,2.069,129,1.986,135,2.74,136,1.715,138,2.961,139,1.532,144,1.832,148,1.425,161,1.645,178,5.421,183,1.717,228,2.164,231,2.924,263,2.054,264,1.444,280,2.997,308,1.747,349,2.255,351,1.908,394,2.711,395,2.691,401,1.937,402,1.482,406,2.73,445,2.653,446,2.147,451,2.155,459,2.635,470,2.943,484,2.797,514,3.25,654,2.983,686,1.668,687,2.897,695,3.257,726,2.6,746,1.756,788,2.505,830,2.617,873,2.774,896,2.711,983,3.084,1005,1.469,1068,2.953,1106,2.226,1107,2.275,1187,3.049,1461,2.328,1472,2.505,1473,2.82,1474,3.819,1475,2.983,1476,5.927,1477,2.362,1478,3.472,1479,3.543,1480,3.819,1481,3.819,1482,3.713,2177,2.107,2636,2.491,2642,2.551]],["component/110",[7,0.401]],["title/111-1",[402,17.184,1456,33.432]],["name/111-1",[]],["text/111-1",[]],["component/111-1",[]],["title/111-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/111-2",[]],["text/111-2",[]],["component/111-2",[]],["title/111-3",[118,25.347,694,45.892]],["name/111-3",[]],["text/111-3",[]],["component/111-3",[]],["title/111-4",[1145,45.341,1483,35.06]],["name/111-4",[]],["text/111-4",[]],["component/111-4",[]],["title/111-5",[1091,43.832,1145,45.341]],["name/111-5",[]],["text/111-5",[]],["component/111-5",[]],["title/111-6",[88,20.111,468,31.469,532,44.832]],["name/111-6",[]],["text/111-6",[]],["component/111-6",[]],["title/111-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/111-7",[]],["text/111-7",[]],["component/111-7",[]],["title/111-8",[8,16.222,30,28.681,150,27.755]],["name/111-8",[]],["text/111-8",[]],["component/111-8",[]],["title/111-9",[104,32.728,264,22.343,686,25.822]],["name/111-9",[]],["text/111-9",[]],["component/111-9",[]],["title/111-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/111-10",[]],["text/111-10",[]],["component/111-10",[]],["title/111-11",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/111-11",[]],["text/111-11",[]],["component/111-11",[]],["title/111-12",[8,16.222,746,27.183,1005,22.733]],["name/111-12",[]],["text/111-12",[]],["component/111-12",[]],["title/111-13",[1255,32.348,1457,33.624]],["name/111-13",[]],["text/111-13",[]],["component/111-13",[]],["title/111",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/111",[728,0.757,1484,1]],["text/111",[2,0.805,5,1.057,6,1.706,7,0.346,8,1.757,10,1.016,12,0.721,13,1.43,14,1.065,15,2.619,17,0.572,29,1.965,30,1.528,32,1.423,34,1.524,35,0.747,36,0.612,37,0.824,38,0.768,40,2.635,42,0.616,45,1.583,56,1.218,57,1.425,65,0.922,79,2.564,87,1.595,88,1.072,90,1.15,96,0.658,97,0.914,98,1.619,101,2.093,104,1.263,106,2.219,110,1.171,117,1.041,118,3.119,120,2.066,134,2.247,135,0.577,136,1.472,138,2.263,139,1.817,142,0.74,144,1.867,148,0.466,155,0.922,160,0.75,161,0.538,171,0.66,172,1.857,183,1.025,184,1.184,186,1.86,189,0.784,190,0.834,191,1.665,192,0.71,196,1.479,214,0.972,234,0.784,251,0.681,252,0.631,267,2.009,271,2.38,272,0.768,275,0.694,278,0.828,279,1.979,280,0.631,292,1.377,300,0.93,308,1.441,315,1.67,316,2.093,320,1.463,330,1.657,333,0.819,340,0.839,341,0.805,401,2.297,402,1.504,406,1.462,408,0.734,412,0.947,443,1.359,451,0.704,455,0.694,468,2.709,470,1.132,482,1.533,492,4.271,502,0.622,514,2.679,525,2.263,532,2.389,539,1.033,620,0.814,656,2.407,666,0.834,679,1.409,683,1.868,686,2.223,687,0.947,694,1.523,695,0.686,698,0.737,723,0.98,726,1.553,728,3.45,746,1.049,755,1.078,765,0.975,766,0.914,835,2.328,850,1.782,890,3.875,894,0.914,896,0.886,903,0.784,972,0.716,985,2.158,1005,0.877,1076,0.656,1083,1.02,1087,1.821,1089,4.017,1090,1.699,1091,3.246,1092,0.892,1096,1.008,1133,4.02,1141,1.02,1142,1.062,1143,1.062,1145,3.968,1150,0.744,1151,4.061,1381,1.062,1400,0.744,1402,2.607,1416,0.85,1434,0.788,1456,0.607,1485,2.281,1486,1.248,1487,2.001,1488,3.472,1489,2.116,1490,0.879,1491,2.922,1492,1.008,1493,1.158,1494,1.158,1495,1.158,1496,1.158,1497,1.248,1498,0.938,1499,0.975,1500,1.248,1501,3.891,1502,2.281,1503,2.281,1504,2.987,1505,1.248,1506,2.281,1507,1.248,1508,1.02,1509,1.114,1510,1.342,1511,1.342,1512,1.342,1513,0.985,1514,2.607,1515,1.047,1516,1.095,1517,1.008,1518,2.116,1519,1.078,1520,0.906,1521,1.158,1522,1.248,1523,1.184,1524,0.947]],["component/111",[7,0.401]],["title/112-1",[402,17.184,1456,33.432]],["name/112-1",[]],["text/112-1",[]],["component/112-1",[]],["title/112-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/112-2",[]],["text/112-2",[]],["component/112-2",[]],["title/112-3",[8,18.856,150,32.262]],["name/112-3",[]],["text/112-3",[]],["component/112-3",[]],["title/112-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/112-4",[]],["text/112-4",[]],["component/112-4",[]],["title/112-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/112-5",[]],["text/112-5",[]],["component/112-5",[]],["title/112-6",[8,16.222,746,27.183,1005,22.733]],["name/112-6",[]],["text/112-6",[]],["component/112-6",[]],["title/112-7",[1255,32.348,1457,33.624]],["name/112-7",[]],["text/112-7",[]],["component/112-7",[]],["title/112",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/112",[1431,0.739,1559,0.928]],["text/112",[0,1.007,3,0.811,5,2.943,6,0.955,8,1.578,10,2.827,13,0.648,17,1.916,26,0.799,29,2.976,32,2.599,40,1.161,45,2.099,56,0.942,84,3.395,87,2.177,88,2.334,104,1.723,105,1.951,112,1.588,113,0.842,116,1.075,117,0.805,118,2.53,125,0.909,129,0.917,135,1.439,136,1.209,138,2.087,143,1.07,148,0.658,150,1.462,154,0.969,155,1.689,161,2.955,169,1.125,183,1.399,189,1.108,211,1.011,220,1.378,228,2.367,255,1.138,271,2.647,275,0.98,292,1.065,308,0.807,322,1.378,354,1.171,402,0.778,406,2.743,408,1.037,464,1.225,470,1.546,502,0.878,514,2.001,557,1.144,586,1.157,593,0.939,654,2.431,656,1.091,663,1.303,668,1.02,678,1.138,679,0.789,682,2.435,686,1.825,695,0.969,719,2.61,746,1.431,754,0.853,772,1.185,779,1.209,830,3.453,834,1.351,863,4.497,893,1.281,1005,1.197,1075,1.125,1106,1.028,1107,1.051,1150,1.051,1195,1.171,1390,1.193,1431,5.022,1434,3.63,1436,1.603,1441,2.513,1456,0.858,1461,1.075,1468,2.162,1469,1.271,1483,0.9,1490,1.243,1498,1.326,1520,1.281,1524,1.338,1526,2.431,1527,1.378,1555,2.279,1559,3.168,1560,1.896,1561,1.442,1562,1.574,1563,1.764,1578,3.457,1580,4.899,1585,2.279,1656,1.823,1880,1.547,2177,0.973,2398,1.479,2477,1.442,2587,1.574,2636,1.15,2642,1.178,2646,1.523,3023,1.764,3024,1.896,3025,3.113,3026,2.145,3027,4.581,3028,1.896,3029,1.896,3030,5.039,3031,3.347,3032,4.177,3033,1.5,3034,4.177,3035,1.764,3036,2.145,3037,1.896,3038,1.896,3039,1.896,3040,4.177,3041,1.896]],["component/112",[7,0.401]],["title/113-1",[402,17.184,1456,33.432]],["name/113-1",[]],["text/113-1",[]],["component/113-1",[]],["title/113-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/113-2",[]],["text/113-2",[]],["component/113-2",[]],["title/113-3",[8,18.856,150,32.262]],["name/113-3",[]],["text/113-3",[]],["component/113-3",[]],["title/113-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/113-4",[]],["text/113-4",[]],["component/113-4",[]],["title/113-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/113-5",[]],["text/113-5",[]],["component/113-5",[]],["title/113-6",[8,16.222,746,27.183,1005,22.733]],["name/113-6",[]],["text/113-6",[]],["component/113-6",[]],["title/113-7",[1255,32.348,1457,33.624]],["name/113-7",[]],["text/113-7",[]],["component/113-7",[]],["title/113",[402,10.417,1129,23.063,1591,45.657,3042,44.784,3043,33.634]],["name/113",[1591,0.882,3043,0.988]],["text/113",[3,1.069,8,2.174,13,0.855,14,1.086,19,3.468,29,2.641,38,1.431,40,2.271,42,1.148,56,1.242,84,3.784,99,2.142,105,2.41,115,1.483,117,1.061,118,2.246,135,1.075,136,1.144,138,3.041,139,1.586,148,0.867,150,1.092,154,1.278,155,0.94,161,2.941,162,1.835,191,2.208,214,0.99,240,1.877,248,2.89,273,3.529,280,1.175,296,1.069,324,1.856,349,1.373,351,1.161,402,1.291,406,1.486,408,1.367,415,1.732,464,1.615,474,3.028,493,6.092,502,1.158,506,1.877,514,1.57,525,1.161,541,2.007,557,2.565,593,2.105,608,1.339,621,1.877,645,2.157,656,1.438,686,2.254,690,1.583,695,1.278,708,1.398,754,1.125,861,1.483,1005,0.894,1091,1.483,1106,1.355,1107,1.385,1109,1.798,1131,1.638,1150,1.385,1195,1.543,1514,1.924,1517,1.877,1524,1.763,1556,1.604,1566,2.325,1591,4.919,1599,2.325,1600,2.325,1601,2.325,1781,2.26,2342,2.114,2897,2.26,3043,5.512,3044,4.252,3045,2.5,3046,2.5,3047,2.5,3048,2.5,3049,2.5,3050,2.5,3051,2.5,3052,2.5,3053,2.5,3054,2.5,3055,2.5,3056,2.5,3057,2.63,3058,4.252,3059,2.5,3060,2.5,3061,2.5,3062,2.5]],["component/113",[7,0.401]],["title/114-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/114-1",[]],["text/114-1",[]],["component/114-1",[]],["title/114-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/114-2",[]],["text/114-2",[]],["component/114-2",[]],["title/114-3",[8,18.856,150,32.262]],["name/114-3",[]],["text/114-3",[]],["component/114-3",[]],["title/114-4",[401,41.598]],["name/114-4",[]],["text/114-4",[]],["component/114-4",[]],["title/114-5",[191,29.399,615,42.499]],["name/114-5",[]],["text/114-5",[]],["component/114-5",[]],["title/114-6",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/114-6",[]],["text/114-6",[]],["component/114-6",[]],["title/114-7",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/114-7",[]],["text/114-7",[]],["component/114-7",[]],["title/114-8",[8,16.222,746,27.183,1005,22.733]],["name/114-8",[]],["text/114-8",[]],["component/114-8",[]],["title/114-9",[1255,32.348,1457,33.624]],["name/114-9",[]],["text/114-9",[]],["component/114-9",[]],["title/114",[615,46.09,937,37.981,1129,28.716]],["name/114",[937,0.896,1528,0.903]],["text/114",[0,0.967,3,0.779,5,2.268,6,0.917,8,1.84,10,1.337,18,0.851,26,0.767,29,3.413,30,2.375,36,0.831,38,2.49,40,1.509,42,0.836,56,0.905,58,1.16,82,1.261,84,3.227,88,1.905,96,0.892,105,1.402,108,1.297,118,1.492,129,0.881,135,1.87,136,1.416,138,1.5,148,1.509,150,0.795,155,0.685,161,3.519,183,2.518,185,2.277,191,0.725,199,1.117,201,1.323,211,0.971,228,1.701,239,0.892,262,1.092,265,1.261,271,2.941,279,1.527,308,0.775,316,0.911,319,1.395,330,2.181,350,1.037,378,2.299,401,0.859,402,0.751,406,2.52,408,0.996,446,0.952,470,1.491,486,4.929,502,0.843,514,3.243,516,1.571,528,1.069,552,0.769,601,1.42,608,1.729,615,3.832,620,1.105,630,2.031,668,1.736,674,1.24,676,1.25,677,1.168,679,1.343,683,1.004,686,1.312,687,2.277,695,1.65,719,2.527,746,1.381,754,0.819,760,2.277,788,1.111,790,1.042,830,1.16,873,1.23,937,2.199,970,1.284,1005,1.155,1075,1.08,1106,0.987,1107,1.009,1126,1.309,1127,1.352,1130,1.16,1134,1.384,1150,2.916,1169,1.323,1201,1.309,1279,2.044,1286,1.511,1305,1.462,1390,2.736,1434,1.069,1461,1.032,1469,1.22,1472,1.111,1514,4.051,1528,4.575,1529,1.462,1530,1.511,1531,1.571,1532,1.693,1533,1.367,1534,1.693,1537,1.462,1538,2.256,1540,1.511,1544,3.097,1545,1.42,1546,1.539,1552,1.571,1555,2.199,1556,2.071,1558,1.075,1590,3.492,1779,2.424,1818,1.337,2177,0.934,2301,1.42,2636,1.105,2642,1.131,3063,5.262,3064,1.821,3065,1.821,3066,1.821,3067,1.821,3068,1.821,3069,1.821,3070,1.821,3071,1.821,3072,2.059,3073,4.349,3074,2.059,3075,2.059,3076,2.059,3077,1.821,3078,2.059,3079,1.821,3080,1.821,3081,1.821,3082,1.821,3083,3.228,3084,1.821,3085,1.821,3086,1.821]],["component/114",[7,0.401]],["title/115-1",[402,17.184,1456,33.432]],["name/115-1",[]],["text/115-1",[]],["component/115-1",[]],["title/115-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/115-2",[]],["text/115-2",[]],["component/115-2",[]],["title/115-3",[8,18.856,150,32.262]],["name/115-3",[]],["text/115-3",[]],["component/115-3",[]],["title/115-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/115-4",[]],["text/115-4",[]],["component/115-4",[]],["title/115-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/115-5",[]],["text/115-5",[]],["component/115-5",[]],["title/115-6",[8,16.222,746,27.183,1005,22.733]],["name/115-6",[]],["text/115-6",[]],["component/115-6",[]],["title/115-7",[1255,32.348,1457,33.624]],["name/115-7",[]],["text/115-7",[]],["component/115-7",[]],["title/115",[138,34.207,139,18.53,677,47.243]],["name/115",[138,0.611,677,0.844]],["text/115",[5,2.558,7,0.706,8,0.699,17,1.169,26,2.926,29,1.854,34,1.233,37,1.682,40,0.951,58,1.746,84,3.395,88,1.878,90,1.285,101,1.371,110,2.834,113,1.216,129,2.223,135,1.178,136,1.597,138,3.595,142,1.512,144,1.223,146,1.505,148,1.594,150,1.197,161,3.355,163,1.427,170,1.713,180,1.713,183,1.146,191,1.09,196,3.379,199,2.82,205,2.201,264,0.963,271,1.339,279,2.174,280,3.266,301,1.16,316,1.371,331,1.492,333,1.672,351,1.273,401,1.292,402,1.069,406,1.606,408,1.498,445,1.77,459,1.758,470,2.74,474,1.951,484,3.13,508,2.772,514,2.565,521,1.866,525,1.273,531,1.386,556,1.713,570,1.682,593,1.357,608,1.467,630,3.733,677,1.758,686,1.113,695,3.955,719,1.592,728,1.576,732,1.837,745,1.401,760,1.933,864,2.478,865,1.512,910,1.724,932,3.156,949,4.931,950,2.274,1091,1.626,1106,1.486,1107,1.518,1114,2.201,1169,3.338,1255,1.2,1390,2.891,1458,2.364,1459,2.549,1460,2.549,1461,1.554,1462,2.549,1463,2.364,1465,2.201,1466,2.549,1467,2.236,1468,1.77,1469,1.837,1470,2.549,1471,2.549,1472,1.672,1484,2.083,1530,2.274,1661,2.109,2177,2.357,2348,2.201,2477,2.083,2479,2.317,2634,2.236,2636,1.662,2642,2.855,2646,2.201,3087,1.809,3088,2.74,3089,2.74,3090,2.74]],["component/115",[7,0.401]],["title/116-1",[402,17.184,1456,33.432]],["name/116-1",[]],["text/116-1",[]],["component/116-1",[]],["title/116-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/116-2",[]],["text/116-2",[]],["component/116-2",[]],["title/116-3",[8,18.856,150,32.262]],["name/116-3",[]],["text/116-3",[]],["component/116-3",[]],["title/116-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/116-4",[]],["text/116-4",[]],["component/116-4",[]],["title/116-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/116-5",[]],["text/116-5",[]],["component/116-5",[]],["title/116-6",[8,16.222,746,27.183,1005,22.733]],["name/116-6",[]],["text/116-6",[]],["component/116-6",[]],["title/116-7",[1255,32.348,1457,33.624]],["name/116-7",[]],["text/116-7",[]],["component/116-7",[]],["title/116",[311,30.628,1609,35.079,1610,36.54,1611,38.977]],["name/116",[1610,0.599,1611,0.639,1612,0.551]],["text/116",[8,1.963,10,1.661,13,1.371,17,1.711,18,1.874,26,1.689,34,1.805,45,1.874,79,1.88,84,3.434,88,1.269,99,2.02,105,1.742,117,1.702,118,1.376,121,2.318,129,1.94,136,1.079,138,1.863,139,1.496,144,1.79,148,1.391,155,3.922,168,2.138,170,2.507,174,3.22,183,1.677,214,1.589,249,2.183,251,2.035,266,3.087,296,1.715,308,1.706,311,2.202,316,2.006,391,3.31,402,0.933,406,1.402,442,2.944,460,1.78,465,1.761,470,2.889,487,1.83,514,2.31,608,2.147,617,2.307,679,2.603,686,2.542,695,2.05,708,2.242,754,1.805,963,2.156,1005,1.434,1015,3.172,1062,2.884,1075,2.379,1421,4.499,1431,3.514,1441,4.698,1562,3.328,1609,2.522,1610,5.04,1611,4.373,1612,2.419,1613,3.729,1614,3.729,1616,4.01,1619,3.272,1620,4.373,1623,3.459,2005,3.854,2006,3.854,2177,2.057,2398,3.128,2636,2.433,2642,2.491]],["component/116",[7,0.401]],["title/117-1",[3,31.597,56,36.704]],["name/117-1",[]],["text/117-1",[]],["component/117-1",[]],["title/117-2",[5,31.842,547,33.151]],["name/117-2",[]],["text/117-2",[]],["component/117-2",[]],["title/117-3",[136,23.734]],["name/117-3",[]],["text/117-3",[]],["component/117-3",[]],["title/117-4",[406,25.824,430,52.609]],["name/117-4",[]],["text/117-4",[]],["component/117-4",[]],["title/117-5",[547,28.52,1434,37.312,1624,63.552]],["name/117-5",[]],["text/117-5",[]],["component/117-5",[]],["title/117-6",[161,35.339]],["name/117-6",[]],["text/117-6",[]],["component/117-6",[]],["title/117-7",[183,30.892,1625,55.481]],["name/117-7",[]],["text/117-7",[]],["component/117-7",[]],["title/117-8",[42,29.179,502,29.437,1625,47.73]],["name/117-8",[]],["text/117-8",[]],["component/117-8",[]],["title/117-9",[191,29.399,311,40.574]],["name/117-9",[]],["text/117-9",[]],["component/117-9",[]],["title/117-10",[84,16.101,351,37.219,1626,55.762]],["name/117-10",[]],["text/117-10",[]],["component/117-10",[]],["title/117-11",[694,39.481,1526,46.175,1527,46.175]],["name/117-11",[]],["text/117-11",[]],["component/117-11",[]],["title/117-12",[355,49.513,1627,59.325]],["name/117-12",[]],["text/117-12",[]],["component/117-12",[]],["title/117-13",[1628,88.192]],["name/117-13",[]],["text/117-13",[]],["component/117-13",[]],["title/117-14",[729,48.06,1627,59.325]],["name/117-14",[]],["text/117-14",[]],["component/117-14",[]],["title/117-15",[729,48.06,1629,62.461]],["name/117-15",[]],["text/117-15",[]],["component/117-15",[]],["title/117-16",[32,26.708,35,35.374,1627,51.038]],["name/117-16",[]],["text/117-16",[]],["component/117-16",[]],["title/117-17",[32,26.708,35,35.374,1629,53.736]],["name/117-17",[]],["text/117-17",[]],["component/117-17",[]],["title/117-18",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/117-18",[]],["text/117-18",[]],["component/117-18",[]],["title/117-19",[8,16.222,746,27.183,1005,22.733]],["name/117-19",[]],["text/117-19",[]],["component/117-19",[]],["title/117-20",[8,18.856,150,32.262]],["name/117-20",[]],["text/117-20",[]],["component/117-20",[]],["title/117-21",[1255,32.348,1457,33.624]],["name/117-21",[]],["text/117-21",[]],["component/117-21",[]],["title/117",[311,30.628,678,33.45,1609,35.079,1630,55.762]],["name/117",[547,0.41,1612,0.551,1631,0.758]],["text/117",[0,0.327,2,0.707,3,0.726,5,0.732,6,0.594,8,1.277,10,0.488,15,0.331,17,1.889,18,0.287,20,1.272,24,0.95,29,0.685,30,1.705,31,0.958,32,1.102,34,1.538,35,2.629,36,1.56,38,0.972,40,0.91,42,1,45,1.765,57,1.265,58,1.082,68,0.375,71,0.642,74,0.511,75,0.487,79,1.422,84,1.091,85,0.979,87,0.4,88,0.195,90,0.553,91,0.7,99,0.31,101,1.71,103,0.473,104,1.35,105,0.738,110,0.811,113,1.164,115,1.556,117,0.501,118,0.211,119,3.562,121,1.976,122,1.166,125,1.638,127,0.406,129,0.298,130,0.382,133,0.737,134,1.541,135,0.264,136,0.457,138,1.218,139,0.978,143,0.347,146,0.338,147,0.406,148,0.91,150,0.269,154,0.868,155,1.547,161,1.648,164,0.742,165,0.419,168,0.629,171,1.071,172,0.967,174,0.494,178,0.331,180,0.384,182,1.097,183,1.429,186,1.196,188,1.036,189,0.359,190,0.382,191,1.503,196,2.184,200,0.419,201,0.447,203,0.378,211,0.629,214,0.244,223,0.979,224,0.875,225,0.462,227,0.419,228,1.148,231,0.438,239,1.487,243,2.971,249,0.335,251,0.312,263,0.85,265,0.426,271,0.576,275,0.878,277,0.605,278,0.38,279,2.366,280,0.289,282,0.378,283,0.375,286,0.367,293,0.395,296,1.121,300,0.817,301,1.741,304,3.053,308,1.291,311,3.278,316,0.85,319,0.266,331,0.642,349,0.648,350,0.672,351,0.286,355,4.642,357,1.285,360,0.468,375,0.412,386,1.516,390,0.572,402,0.143,404,1.808,406,1.061,413,1.465,414,0.48,430,0.438,431,1.321,432,3.793,440,0.406,446,0.322,450,1.496,451,0.323,457,0.452,459,0.395,465,0.956,482,0.384,484,1.483,487,1.197,502,1.405,514,1.519,531,0.859,536,0.92,547,3.774,549,1.139,580,1.019,583,1.272,586,0.375,593,0.305,601,0.48,604,0.968,608,0.329,613,0.468,615,0.977,617,2.877,656,0.678,659,0.473,663,0.81,665,0.331,672,0.422,678,0.707,679,1.091,681,0.817,682,0.333,683,0.937,686,0.69,687,0.434,694,0.382,695,0.314,698,0.338,705,0.43,706,0.767,708,1.218,723,0.679,729,2.224,736,0.384,745,0.868,751,1.749,754,0.277,763,0.473,773,0.412,779,0.392,783,0.48,784,1.465,790,0.352,827,0.954,834,0.438,835,0.656,851,0.591,853,0.511,859,0.389,889,0.382,917,0.468,927,0.48,963,0.331,972,0.328,982,0.422,993,0.692,998,0.452,1005,0.422,1024,0.933,1073,0.947,1075,0.365,1092,0.409,1108,2.205,1109,1.566,1122,0.473,1123,0.866,1130,0.392,1131,0.773,1138,0.848,1150,0.341,1201,1.221,1213,0.84,1219,0.426,1250,0.462,1285,0.468,1350,0.572,1416,1.075,1431,1.704,1434,0.692,1441,0.886,1456,0.278,1458,1.017,1468,0.762,1475,0.447,1483,0.292,1490,0.403,1508,0.896,1513,0.866,1515,0.48,1529,0.494,1551,0.426,1559,1.849,1596,0.52,1615,0.572,1619,2.139,1620,1.187,1625,5.071,1627,8.013,1629,5.996,1632,0.615,1633,0.615,1634,0.556,1635,0.615,1636,0.615,1637,0.615,1638,0.615,1639,1.969,1640,0.438,1641,0.997,1642,2.622,1643,0.487,1644,0.572,1645,1.698,1646,0.615,1647,1.177,1648,1.179,1649,0.615,1650,0.875,1651,0.615,1652,1.179,1653,0.615,1654,0.615,1655,1.698,1656,1.133,1657,0.615,1658,0.615,1659,0.494,1660,0.591,1661,0.473,1662,0.615,1663,0.615,1664,0.615,1665,0.572,1666,0.615,1667,1.179,1668,0.615,1669,0.908,1670,0.615,1671,0.572,1672,0.572,1673,0.615,1674,0.615,1675,0.615,1676,0.615,1677,0.615,1678,0.615,1679,0.615,1680,0.615,1681,0.556,1682,0.487,1683,0.615,1684,0.615,1685,0.615,1686,5.001,1687,0.615,1688,0.556,1689,0.615,1690,1.179,1691,0.502,1692,0.52,1693,0.572,1694,0.615,1695,0.615,1696,0.615,1697,0.615,1698,0.615,1699,0.615,1700,0.615,1701,0.615,1702,1.179,1703,1.698,1704,1.698,1705,0.615,1706,0.615,1707,0.615,1708,0.434,1709,1.179,1710,1.179,1711,1.179,1712,0.615,1713,0.615,1714,0.615,1715,0.494,1716,0.615,1717,0.615,1718,1.698,1719,2.178,1720,2.178,1721,1.179,1722,0.615,1723,1.179,1724,1.179,1725,0.615,1726,0.52,1727,0.442,1728,1.179,1729,1.179,1730,0.947,1731,0.615,1732,0.615,1733,1.344,1734,0.615,1735,0.344,1736,0.615,1737,1.179,1738,1.179,1739,1.179,1740,1.698,1741,0.487,1742,0.615,1743,0.615,1744,0.615,1745,0.615,1747,0.502,1748,0.591,1749,0.572,1750,0.48,1751,0.615,1752,0.572,1753,0.615,2398,0.48,3091,0.696]],["component/117",[7,0.401]],["title/118-1",[402,17.184,1456,33.432]],["name/118-1",[]],["text/118-1",[]],["component/118-1",[]],["title/118-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/118-2",[]],["text/118-2",[]],["component/118-2",[]],["title/118-3",[8,18.856,150,32.262]],["name/118-3",[]],["text/118-3",[]],["component/118-3",[]],["title/118-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/118-4",[]],["text/118-4",[]],["component/118-4",[]],["title/118-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/118-5",[]],["text/118-5",[]],["component/118-5",[]],["title/118-6",[8,16.222,746,27.183,1005,22.733]],["name/118-6",[]],["text/118-6",[]],["component/118-6",[]],["title/118-7",[1255,32.348,1457,33.624]],["name/118-7",[]],["text/118-7",[]],["component/118-7",[]],["title/118",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/118",[1612,0.793,1754,0.977]],["text/118",[5,3.061,8,1.208,13,1.617,14,2.055,17,3.636,18,2.211,26,1.993,84,3.358,88,2.697,105,3.085,118,1.623,129,2.289,136,1.911,138,3.299,139,1.765,148,1.642,155,4.009,168,2.523,214,1.874,271,2.311,308,2.013,316,2.367,391,2.503,402,1.101,406,2.482,460,2.1,470,3.279,487,2.16,514,3.147,608,2.534,617,2.722,679,2.955,686,2.885,695,2.419,708,2.646,754,2.129,963,2.544,1005,1.692,1075,4.213,1421,5.107,1468,5.506,1472,2.887,1612,2.854,1754,3.513,1755,6.649,1756,4.401,2177,2.427,2636,2.87,2642,2.939]],["component/118",[7,0.401]],["title/119-1",[402,17.184,1456,33.432]],["name/119-1",[]],["text/119-1",[]],["component/119-1",[]],["title/119-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/119-2",[]],["text/119-2",[]],["component/119-2",[]],["title/119-3",[8,18.856,150,32.262]],["name/119-3",[]],["text/119-3",[]],["component/119-3",[]],["title/119-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/119-4",[]],["text/119-4",[]],["component/119-4",[]],["title/119-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/119-5",[]],["text/119-5",[]],["component/119-5",[]],["title/119-6",[8,16.222,746,27.183,1005,22.733]],["name/119-6",[]],["text/119-6",[]],["component/119-6",[]],["title/119-7",[1255,32.348,1457,33.624]],["name/119-7",[]],["text/119-7",[]],["component/119-7",[]],["title/119",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/119",[1758,0.856,1759,0.764]],["text/119",[3,0.898,8,0.536,10,2.014,13,0.718,19,1.313,26,0.885,29,4.063,34,0.945,40,0.729,42,0.964,56,1.044,63,1.376,71,1.144,84,3.757,88,1.158,99,1.844,104,1.885,113,1.624,118,1.998,129,1.016,135,0.903,136,0.985,138,0.976,142,1.159,154,1.074,155,0.79,161,3.613,166,1.305,171,1.033,172,1.624,183,1.531,186,1.154,188,2.233,191,0.836,200,1.431,214,0.832,228,1.107,247,1.313,251,1.857,263,1.831,279,0.994,301,0.889,316,1.051,319,0.908,350,1.197,377,1.144,391,2.573,402,1.354,406,2.534,470,1.69,474,1.496,486,5.56,502,0.973,514,1.351,523,1.297,525,0.976,553,2.288,593,1.04,656,1.208,686,1.976,726,1.33,746,1.565,754,0.945,786,1.164,867,1.431,968,3.642,1005,1.309,1076,1.026,1119,1.812,1150,2.028,1195,1.297,1451,1.714,1461,2.075,1483,1.737,1487,1.714,1528,2.514,1538,2.558,1540,1.743,1544,1.496,1545,1.638,1552,1.812,1558,2.16,1585,2.493,1622,1.638,1691,1.714,1758,3.788,1759,4.53,1760,2.1,1761,1.953,1762,3.158,1763,3.31,1764,1.953,1765,1.953,1766,2.1,1767,1.953,1770,4.197,1771,1.953,1772,1.597,1773,2.1,1774,2.1,1775,3.66,1776,2.1,1777,2.1,1778,2.1,1779,1.577,1780,1.812,1781,1.899,1782,1.899,1783,1.638,1784,1.776,1785,2.1,1818,1.542,2177,1.078,2636,1.274,2642,1.305]],["component/119",[7,0.401]],["title/120-1",[402,17.184,1456,33.432]],["name/120-1",[]],["text/120-1",[]],["component/120-1",[]],["title/120-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/120-2",[]],["text/120-2",[]],["component/120-2",[]],["title/120-3",[1145,45.341,1483,35.06]],["name/120-3",[]],["text/120-3",[]],["component/120-3",[]],["title/120-4",[1091,43.832,1145,45.341]],["name/120-4",[]],["text/120-4",[]],["component/120-4",[]],["title/120-5",[88,20.111,468,31.469,532,44.832]],["name/120-5",[]],["text/120-5",[]],["component/120-5",[]],["title/120-6",[8,18.856,150,32.262]],["name/120-6",[]],["text/120-6",[]],["component/120-6",[]],["title/120-7",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/120-7",[]],["text/120-7",[]],["component/120-7",[]],["title/120-8",[36,25.454,88,17.646,148,19.348,161,22.344]],["name/120-8",[]],["text/120-8",[]],["component/120-8",[]],["title/120-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/120-9",[]],["text/120-9",[]],["component/120-9",[]],["title/120-10",[8,16.222,746,27.183,1005,22.733]],["name/120-10",[]],["text/120-10",[]],["component/120-10",[]],["title/120-11",[1255,32.348,1457,33.624]],["name/120-11",[]],["text/120-11",[]],["component/120-11",[]],["title/120",[161,13.854,968,30.686,1759,20.09,3092,44.672,3093,44.672,3094,31.263]],["name/120",[1759,0.531,3092,0.734,3093,0.734]],["text/120",[3,0.689,8,0.739,10,2.78,12,0.866,13,0.551,15,0.866,29,1.589,34,0.725,40,1.004,56,0.8,84,3.831,88,0.916,97,1.971,99,1.458,101,0.806,104,2.854,110,0.769,117,0.684,118,2.466,120,2.404,135,0.692,136,1.06,154,0.823,161,3.902,171,0.792,172,2.134,188,0.983,191,0.641,194,1.071,196,1.264,252,1.852,270,1.314,271,0.787,272,0.922,275,0.832,279,0.762,280,0.757,296,0.689,315,1.097,316,1.448,319,0.696,333,0.983,352,2.148,386,0.931,402,1.118,406,1.011,451,0.845,460,0.715,465,0.707,468,1.433,492,1.147,502,1.34,514,1.775,525,0.748,532,2.041,539,1.24,553,2.462,630,2.478,656,0.927,686,1.176,688,6.508,728,4.78,730,4.162,746,1.238,754,0.725,968,1.596,1005,1.035,1087,2.148,1091,0.956,1106,0.873,1107,0.892,1141,1.224,1142,1.274,1143,1.274,1145,4.411,1150,0.892,1151,4.115,1154,2.227,1169,2.862,1195,0.994,1381,1.274,1402,1.24,1434,0.946,1456,0.729,1461,0.913,1488,3.27,1489,1.389,1490,1.055,1491,2.496,1492,1.21,1493,2.496,1494,1.389,1495,2.496,1496,1.389,1498,1.126,1499,1.17,1524,1.136,1759,2.289,1780,1.389,1827,1.24,1889,1.498,2244,1.548,2356,2.324,2455,1.293,3092,3.164,3093,3.862,3094,3.562,3095,1.61,3096,1.61,3097,1.61,3098,1.61,3099,1.61,3100,1.61,3101,2.893,3102,1.61,3103,1.498,3104,2.893,3105,1.61,3106,1.61,3107,1.61,3108,1.61,3109,1.61,3110,1.61,3111,1.61,3112,1.61,3113,1.61,3114,1.61,3115,1.498,3116,1.61]],["component/120",[7,0.401]],["title/121-1",[402,17.184,1456,33.432]],["name/121-1",[]],["text/121-1",[]],["component/121-1",[]],["title/121-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/121-2",[]],["text/121-2",[]],["component/121-2",[]],["title/121-3",[8,18.856,150,32.262]],["name/121-3",[]],["text/121-3",[]],["component/121-3",[]],["title/121-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/121-4",[]],["text/121-4",[]],["component/121-4",[]],["title/121-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/121-5",[]],["text/121-5",[]],["component/121-5",[]],["title/121-6",[8,16.222,746,27.183,1005,22.733]],["name/121-6",[]],["text/121-6",[]],["component/121-6",[]],["title/121-7",[1255,32.348,1457,33.624]],["name/121-7",[]],["text/121-7",[]],["component/121-7",[]],["title/121",[1128,32.569,1558,47.283,1786,33.829]],["name/121",[1558,0.776,1786,0.798]],["text/121",[3,0.712,5,2.951,6,0.839,8,1.033,10,2.042,14,0.723,15,0.895,17,2.103,26,0.702,29,3.272,30,1.346,32,0.7,40,1.405,49,1.21,56,0.827,63,1.954,84,3.722,88,2.317,99,0.839,101,1.492,105,0.723,113,0.739,117,0.707,118,2.349,121,0.963,129,0.806,130,1.035,135,2.119,136,1.089,138,1.881,155,0.626,161,1.975,168,0.888,169,0.988,181,1.251,183,1.247,196,0.727,203,1.022,211,0.888,228,2.133,251,1.513,271,1.978,278,1.028,279,0.788,280,0.783,311,1.638,316,0.833,319,0.72,320,0.994,350,0.949,395,1.091,402,0.942,406,2.394,408,0.911,420,1.21,421,0.94,459,1.069,461,1.382,470,1.377,486,4.044,514,2.994,525,0.774,531,0.842,552,0.703,558,1.186,593,0.825,608,0.892,615,0.958,618,1.236,665,1.603,670,0.923,679,1.241,684,0.874,686,1.211,695,0.851,726,1.888,746,1.275,754,0.749,774,1.154,779,1.061,865,0.919,893,1.125,896,3.743,903,0.973,1005,1.067,1017,1.175,1075,0.988,1076,0.814,1106,1.617,1107,1.652,1128,0.973,1150,3.142,1214,1.164,1390,1.048,1434,1.751,1453,1.549,1461,0.944,1465,1.337,1469,1.116,1483,0.79,1517,2.239,1524,1.175,1528,1.144,1537,1.337,1538,2.084,1543,2.475,1544,2.123,1545,1.299,1551,1.154,1555,2.031,1556,1.913,1558,4.041,1565,1.337,1585,2.031,1590,1.337,1726,2.521,1759,0.968,1787,2.63,1788,1.549,1789,1.469,1790,1.299,1791,1.506,1792,1.665,1793,1.665,1794,1.382,1795,2.63,1796,1.469,1797,1.549,1798,1.469,1799,1.469,1800,1.469,1801,1.382,1802,1.382,1803,1.337,1804,1.469,1805,1.382,1806,1.408,1807,1.299,1808,1.337,1809,1.382,1810,1.549,1811,1.382,1812,1.469,1813,1.382,1815,2.773,1817,1.549,1818,1.223,2177,0.854,2211,1.359,2352,2.295,2613,1.408,2629,1.506,2636,1.01,2642,1.035,2736,1.408,3117,1.506,3118,1.506,3119,1.506,3120,1.506,3121,1.665]],["component/121",[7,0.401]],["title/122-1",[402,17.184,1456,33.432]],["name/122-1",[]],["text/122-1",[]],["component/122-1",[]],["title/122-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/122-2",[]],["text/122-2",[]],["component/122-2",[]],["title/122-3",[8,18.856,150,32.262]],["name/122-3",[]],["text/122-3",[]],["component/122-3",[]],["title/122-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/122-4",[]],["text/122-4",[]],["component/122-4",[]],["title/122-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/122-5",[]],["text/122-5",[]],["component/122-5",[]],["title/122-6",[8,16.222,746,27.183,1005,22.733]],["name/122-6",[]],["text/122-6",[]],["component/122-6",[]],["title/122-7",[1255,32.348,1457,33.624]],["name/122-7",[]],["text/122-7",[]],["component/122-7",[]],["title/122",[1128,32.569,1786,33.829,1819,55.503]],["name/122",[1786,0.798,1819,0.911]],["text/122",[3,1.041,5,3.513,6,0.671,8,1.061,10,2.471,14,1.806,17,2.546,18,0.622,26,0.561,29,2.915,30,1.518,32,2.035,34,0.599,36,0.608,40,1.443,42,0.611,56,1.21,79,1.949,84,3.637,88,2.394,94,1.494,99,0.671,101,0.666,105,0.578,112,0.632,117,1.033,118,2.048,125,0.638,129,0.644,134,0.912,135,2.082,136,1.119,138,1.563,144,0.594,146,0.731,148,0.462,150,0.581,154,0.681,155,0.501,158,1.331,161,2.18,169,0.79,172,0.591,183,1.739,194,1.619,196,1.816,199,0.817,203,0.817,211,0.71,221,0.922,228,1.283,234,0.778,251,0.676,254,1.702,267,0.79,271,2.366,279,0.63,280,0.626,301,0.564,311,1.337,320,0.794,336,1.238,388,0.817,401,0.628,402,0.967,406,2.395,408,0.728,414,1.039,420,0.967,431,0.808,455,0.688,458,0.86,465,1.069,470,1.124,486,3.829,502,1.926,508,0.803,514,2.204,520,0.967,531,0.673,547,0.597,549,1.273,552,0.562,557,0.803,558,0.948,577,2.053,615,1.935,618,0.988,647,0.843,656,0.766,665,0.716,670,0.738,679,0.554,682,0.722,684,0.699,686,1.367,695,0.681,726,2.13,746,1.041,754,0.599,772,0.832,779,0.848,788,0.812,835,0.741,893,0.899,896,3.592,903,0.778,933,0.899,964,1.053,1005,0.871,1075,0.79,1106,1.32,1107,1.349,1125,1.645,1150,2.304,1168,1.025,1214,0.931,1287,0.885,1301,1.105,1352,2.148,1390,1.532,1434,0.782,1461,0.755,1469,0.892,1483,0.632,1528,0.914,1538,0.931,1543,1.105,1544,1.734,1545,1.039,1551,0.922,1555,1.658,1556,0.854,1558,2.454,1565,1.069,1585,2.291,1669,1.025,1726,2.059,1735,0.744,1759,0.774,1790,1.039,1791,1.204,1794,1.105,1801,1.105,1802,1.105,1803,1.069,1805,1.105,1807,1.039,1808,1.069,1809,1.105,1811,1.105,1813,1.105,1816,1.851,1818,0.978,1819,5.006,1820,1.238,1821,2.021,1822,3.129,1823,2.968,1824,1.238,1825,1.238,1826,1.331,1827,1.025,1828,1.331,1829,1.331,1830,1.331,1831,1.238,1832,1.238,1833,1.331,1834,1.331,1835,1.331,1836,1.331,1837,1.331,1838,1.238,1839,1.174,1840,1.331,1841,1.331,1842,1.331,1843,1.126,1844,1.238,1845,1.174,1846,1.012,1847,1.238,1848,1.238,1849,1.069,1850,2.435,1851,2.148,1852,0.948,1853,1.238,2177,0.683,2211,1.086,2613,1.126,2636,0.808,2642,0.827,2736,1.126,3117,1.204,3118,1.204,3119,1.204,3120,1.204]],["component/122",[7,0.401]],["title/123-1",[343,64.077]],["name/123-1",[]],["text/123-1",[]],["component/123-1",[]],["title/123-2",[192,33.622,402,14.783,690,40.238]],["name/123-2",[]],["text/123-2",[]],["component/123-2",[]],["title/123-3",[402,17.184,1129,38.042]],["name/123-3",[]],["text/123-3",[]],["component/123-3",[]],["title/123-4",[402,17.184,1128,43.146]],["name/123-4",[]],["text/123-4",[]],["component/123-4",[]],["title/123-5",[311,34.906,402,14.783,1609,39.979]],["name/123-5",[]],["text/123-5",[]],["component/123-5",[]],["title/123-6",[161,25.466,402,14.783,1759,36.93]],["name/123-6",[]],["text/123-6",[]],["component/123-6",[]],["title/123-7",[264,22.343,402,14.783,1936,41.347]],["name/123-7",[]],["text/123-7",[]],["component/123-7",[]],["title/123-8",[402,17.184,1040,44.562]],["name/123-8",[]],["text/123-8",[]],["component/123-8",[]],["title/123",[7,19.043,402,17.184]],["name/123",[631,1.45]],["text/123",[3,1.83,5,1.085,8,1.092,13,1.463,14,1.094,15,1.354,17,1.825,18,2,20,1.471,23,1.184,26,2.771,29,1.726,34,2.511,40,0.874,52,2.07,56,2.126,71,1.371,77,1.478,84,1.611,88,0.797,98,1.662,104,1.297,105,1.859,110,1.203,117,1.069,118,0.864,125,2.05,128,1.486,134,2.09,135,1.839,136,1.151,144,1.124,146,3.064,148,1.936,150,1.1,151,2.991,155,0.947,158,1.377,160,1.408,161,2.636,162,1.849,163,2.228,178,1.354,183,1.789,185,1.776,192,2.264,196,1.1,221,1.745,224,1.297,248,1.312,252,1.184,255,2.567,264,2.313,275,2.212,282,1.546,286,1.502,296,1.077,297,1.449,308,1.072,311,3.613,343,1.83,391,1.332,401,1.188,402,2.709,450,1.73,465,1.879,514,2.06,531,1.273,547,1.13,548,1.701,620,1.528,643,2.09,647,1.594,665,1.354,678,1.51,679,1.048,680,1.322,686,1.023,690,2.709,698,1.383,719,2.486,728,2.462,729,1.638,865,2.36,906,2.342,931,1.891,972,1.343,1040,2.581,1128,2.499,1129,4.401,1306,2.09,1468,1.627,1477,1.449,1484,3.252,1555,2.914,1558,1.486,1609,4.138,1610,1.65,1611,1.76,1692,2.129,1708,1.776,1755,1.964,1758,1.638,1759,3.242,1779,1.891,1819,1.745,1821,2.09,1936,1.638,1937,2.342,1940,2.342,1942,1.616,1943,2.129,1944,3.979,1945,1.688,1946,2.09,2234,3.385,2477,1.914,2673,1.992,3092,2.022,3093,2.022,3122,2.518,3123,2.518,3124,2.518,3125,2.518,3126,2.518]],["component/123",[7,0.401]],["title/124-1",[402,17.184,1456,33.432]],["name/124-1",[]],["text/124-1",[]],["component/124-1",[]],["title/124-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/124-2",[]],["text/124-2",[]],["component/124-2",[]],["title/124-3",[8,18.856,150,32.262]],["name/124-3",[]],["text/124-3",[]],["component/124-3",[]],["title/124-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/124-4",[]],["text/124-4",[]],["component/124-4",[]],["title/124-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/124-5",[]],["text/124-5",[]],["component/124-5",[]],["title/124-6",[8,16.222,746,27.183,1005,22.733]],["name/124-6",[]],["text/124-6",[]],["component/124-6",[]],["title/124-7",[1255,32.348,1457,33.624]],["name/124-7",[]],["text/124-7",[]],["component/124-7",[]],["title/124",[23,26.157,40,11.996,264,19.556,547,15.516,1936,22.493,2073,27.766,2199,26.615]],["name/124",[23,0.329,264,0.246,2073,0.562,2199,0.539]],["text/124",[23,5.362,40,3.956,117,4.275,134,2.382,136,1.712,144,2.838,252,4.736,264,2.236,267,3.774,268,7.019,401,3,402,1.479,459,4.081,484,5.987,642,5.19,681,4.406,683,3.509,1456,2.878,1472,3.881,1490,4.168,1936,4.138,2199,8.778,2234,6.954,3127,5.751]],["component/124",[7,0.401]],["title/125-1",[402,17.184,1456,33.432]],["name/125-1",[]],["text/125-1",[]],["component/125-1",[]],["title/125-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/125-2",[]],["text/125-2",[]],["component/125-2",[]],["title/125-3",[8,18.856,150,32.262]],["name/125-3",[]],["text/125-3",[]],["component/125-3",[]],["title/125-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/125-4",[]],["text/125-4",[]],["component/125-4",[]],["title/125-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/125-5",[]],["text/125-5",[]],["component/125-5",[]],["title/125-6",[8,16.222,746,27.183,1005,22.733]],["name/125-6",[]],["text/125-6",[]],["component/125-6",[]],["title/125-7",[1255,32.348,1457,33.624]],["name/125-7",[]],["text/125-7",[]],["component/125-7",[]],["title/125",[13,21.665,14,17.712,105,17.712,264,22.28,1936,26.525]],["name/125",[13,0.312,14,0.397,264,0.321]],["text/125",[13,3.774,14,4.796,23,3.106,40,2.292,117,4.361,134,2.474,136,1.778,144,2.948,252,4.831,264,2.322,267,3.92,268,7.132,401,3.116,402,1.537,459,4.238,484,6.145,642,5.39,681,4.577,683,3.644,1456,2.99,1472,4.031,1490,4.329,1936,4.298,2199,5.085,2234,7.138,3127,5.973]],["component/125",[7,0.401]],["title/126-1",[406,25.824,694,45.892]],["name/126-1",[]],["text/126-1",[]],["component/126-1",[]],["title/126-2",[88,27.909]],["name/126-2",[]],["text/126-2",[]],["component/126-2",[]],["title/126-3",[30,28.681,466,37.709,2624,47.184]],["name/126-3",[]],["text/126-3",[]],["component/126-3",[]],["title/126-4",[134,23.806,264,22.343,361,30.449]],["name/126-4",[]],["text/126-4",[]],["component/126-4",[]],["title/126-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/126-5",[]],["text/126-5",[]],["component/126-5",[]],["title/126-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/126-6",[]],["text/126-6",[]],["component/126-6",[]],["title/126-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/126-7",[]],["text/126-7",[]],["component/126-7",[]],["title/126-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/126-8",[]],["text/126-8",[]],["component/126-8",[]],["title/126-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/126-9",[]],["text/126-9",[]],["component/126-9",[]],["title/126-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/126-10",[]],["text/126-10",[]],["component/126-10",[]],["title/126-11",[134,23.806,466,37.709,2627,51.038]],["name/126-11",[]],["text/126-11",[]],["component/126-11",[]],["title/126-12",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/126-12",[]],["text/126-12",[]],["component/126-12",[]],["title/126-13",[32,26.708,267,37.709,466,37.709]],["name/126-13",[]],["text/126-13",[]],["component/126-13",[]],["title/126",[129,35.736,470,34.116]],["name/126",[129,0.636,470,0.607]],["text/126",[0,0.658,3,0.53,4,1.332,7,0.588,8,0.316,15,0.667,17,0.973,18,0.579,23,1.848,26,1.656,29,1.278,30,2.074,31,0.7,32,1.652,34,2.331,36,0.566,40,0.791,45,0.579,52,1.103,54,3.509,79,1.069,84,2.418,88,1.002,91,0.736,93,0.728,101,0.62,105,0.991,111,0.703,117,0.968,118,2.606,125,0.594,127,0.818,129,3.524,134,3.661,143,5.355,148,0.791,153,0.954,154,0.634,155,0.466,161,1.575,163,0.646,166,2.442,170,1.425,171,3.029,172,1.745,180,1.98,183,0.518,188,0.756,196,1.383,199,0.761,206,0.91,214,2.44,224,0.638,248,1.188,249,0.675,255,1.368,264,2.311,271,0.606,277,2.017,279,0.586,280,1.072,288,2.629,289,1.779,292,1.281,301,3.546,308,0.528,311,2.159,316,0.62,348,0.837,350,0.706,351,1.826,355,0.831,361,3.149,374,0.931,377,1.724,378,1.624,386,0.717,401,0.585,402,0.737,428,1.893,446,0.648,455,2.678,466,1.353,468,0.614,470,3.638,482,0.775,502,0.574,513,1.029,514,0.458,517,0.752,531,0.627,545,0.866,547,2.062,553,0.775,593,0.614,597,0.724,637,1.011,649,0.995,668,0.667,670,0.687,673,0.636,679,1.318,684,2.719,686,0.504,694,1.417,719,1.325,734,0.901,760,0.874,786,2.547,788,0.756,790,0.71,850,0.901,853,1.029,862,0.931,865,1.747,900,4.406,943,0.851,967,1.463,972,0.661,984,0.801,1074,1.011,1076,0.606,1101,4.279,1128,0.724,1129,0.638,1135,1.011,1136,2.576,1211,1.541,1282,4.098,1461,0.703,1483,1.865,1609,0.78,1612,0.748,1625,0.931,1643,1.804,1647,0.859,1727,1.64,1759,0.72,1784,1.048,1786,0.752,1852,0.883,1950,1.675,2018,2.278,2042,0.859,2103,1.029,2225,1.093,2257,1.093,2300,1.093,2379,1.048,2552,1.048,2619,0.859,2625,4.23,2626,3.026,2627,0.995,2630,2.543,2634,1.011,2635,2.863,2636,3.143,2637,5.569,2638,4.684,2639,4.156,2640,2.399,2641,1.121,2642,0.77,2643,1.121,2644,1.121,2645,2.062,2647,1.069,2648,1.121,2649,1.121,2650,1.121,2651,1.121,2652,2.062,2653,1.121,2654,2.062,2655,1.121,2656,1.121,2657,1.121,2658,1.029,2663,2.732,2664,1.121,2665,2.062,2666,1.121,3128,1.24]],["component/126",[7,0.401]],["title/127-1",[87,48.06,248,38.476]],["name/127-1",[]],["text/127-1",[]],["component/127-1",[]],["title/127-2",[91,29.474,96,24.349,155,18.684,465,21.81,1448,39.301]],["name/127-2",[]],["text/127-2",[]],["component/127-2",[]],["title/127-3",[10,23.093,93,32.738,96,27.333,773,37.375]],["name/127-3",[]],["text/127-3",[]],["component/127-3",[]],["title/127-4",[593,43.669]],["name/127-4",[]],["text/127-4",[]],["component/127-4",[]],["title/127",[86,33.757,1078,41.057,3129,42.269]],["name/127",[1078,0.85,3129,0.875]],["text/127",[0,3.285,6,1.463,7,0.748,8,2.2,10,1.997,12,1.561,23,1.365,26,1.223,37,1.782,45,1.357,56,1.442,84,0.838,86,5.271,93,1.704,94,1.782,95,4.145,96,1.423,104,1.495,125,1.391,148,1.007,152,2.088,154,1.484,155,3.597,160,2.696,163,3.221,169,1.722,172,2.14,189,2.816,192,1.536,195,3.073,196,2.106,208,2.561,214,1.15,248,4.162,249,2.626,264,1.021,268,1.875,282,1.782,308,2.052,316,1.452,319,2.084,332,2.369,349,2.648,357,1.713,386,1.678,398,2.207,403,3.58,415,2.011,446,1.518,451,1.524,465,4.198,470,2.227,502,1.345,503,2.625,517,1.761,518,2.067,531,1.468,547,1.303,556,1.815,567,2.088,597,1.696,659,2.235,682,2.614,697,1.761,698,1.594,726,1.838,745,1.484,773,1.946,834,2.067,903,2.816,963,2.593,968,1.601,970,2.048,972,1.548,976,2.331,1064,3.58,1078,3.995,1118,2.561,1400,1.609,1448,5.698,1492,3.621,1650,2.155,1669,2.235,1727,2.088,1852,2.067,2417,2.297,2443,2.561,2494,2.7,2495,2.505,2563,2.7,2586,2.265,2872,2.7,3129,7.277,3130,3.054,3131,3.054,3132,2.625,3133,3.054,3134,3.054,3135,2.331,3136,3.054,3137,3.054,3138,3.054]],["component/127",[7,0.401]],["title/128-1",[139,27.557,230,66.798]],["name/128-1",[]],["text/128-1",[]],["component/128-1",[]],["title/128-2",[8,12.679,139,18.53,264,17.464,673,25.486,743,29.164]],["name/128-2",[]],["text/128-2",[]],["component/128-2",[]],["title/128-3",[8,9.551,24,20.922,84,10.804,112,17.759,118,12.839,139,13.958,264,13.155,673,19.197]],["name/128-3",[]],["text/128-3",[]],["component/128-3",[]],["title/128-4",[8,11.431,105,19.455,139,16.706,161,17.945,670,24.816,673,22.977]],["name/128-4",[]],["text/128-4",[]],["component/128-4",[]],["title/128-5",[139,27.557,764,53.128]],["name/128-5",[]],["text/128-5",[]],["component/128-5",[]],["title/128",[139,27.557,3139,66.798]],["name/128",[139,0.491,3139,1.189]],["text/128",[0,1.664,5,2.436,8,2.125,10,1.297,12,0.658,13,0.418,15,0.658,18,0.572,19,1.958,23,1.06,24,2.871,26,0.516,29,1.837,30,1.017,31,0.691,34,1.014,40,0.425,68,0.747,84,0.905,88,0.387,102,0.694,105,2.655,112,2.161,113,1,117,0.957,118,1.335,121,0.708,125,1.501,127,0.808,134,0.459,135,0.969,136,1.225,139,4.472,146,1.238,147,0.808,148,0.425,154,0.626,161,0.49,165,0.834,168,0.653,170,0.765,190,1.4,191,0.487,195,0.78,196,0.984,205,1.81,214,2.585,224,0.63,230,3.519,238,1.693,241,1.016,248,0.638,249,0.667,253,2.134,262,1.352,263,1.947,264,3.321,275,0.633,277,0.628,278,1.934,280,0.576,282,0.751,289,0.955,293,0.785,296,2.95,308,2.185,313,3.251,316,1.128,319,1.682,341,0.734,351,0.569,353,1.988,354,0.756,377,1.227,391,1.193,402,0.729,431,0.743,434,1.138,439,1.849,441,0.775,445,0.791,451,1.183,460,0.543,465,0.99,466,0.726,468,1.116,487,1.029,514,2.086,519,0.872,531,1.14,547,0.549,552,2.169,556,0.765,583,1.317,597,0.715,603,2.448,613,0.93,617,0.704,620,0.743,665,3.709,670,0.678,673,4.016,674,0.834,679,0.509,680,1.183,682,1.222,684,1.644,695,2.625,697,0.743,698,0.672,723,2.259,741,2.497,742,0.88,743,3.015,744,0.863,764,4.961,786,0.678,788,0.747,865,1.728,871,0.856,873,0.827,909,0.88,930,1.674,933,0.827,966,0.834,967,1.446,972,0.653,976,0.983,1005,0.438,1012,0.942,1040,0.738,1066,2.884,1075,0.726,1076,1.101,1077,1.81,1099,0.955,1130,0.78,1196,1.016,1210,1.08,1398,1.988,1477,0.704,1621,1.035,1692,1.035,1749,2.914,1750,0.955,1783,0.955,1933,1.016,1942,2.497,1946,1.016,2018,0.88,2024,2.833,2042,0.848,2054,0.751,2058,1.138,2093,1.056,2097,0.968,2114,1.138,2116,0.999,2127,1.056,2131,1.138,2138,2.857,2220,1.138,2240,1.758,2293,1.138,2296,1.655,2336,1.783,2356,0.983,2409,1.138,2443,1.08,2448,2.444,2478,1.056,2566,0.814,2592,1.138,2647,1.056,2785,1.08,2817,1.08,3139,1.107,3140,1.288,3141,1.288,3142,1.288,3143,4.376,3144,1.288,3145,1.288,3146,1.288,3147,1.288,3148,1.288,3149,1.288,3150,1.288,3151,1.288,3152,1.288,3153,1.288,3154,1.107,3155,1.288,3156,1.288,3157,1.288,3158,1.288,3159,1.288,3160,1.288,3161,1.288]],["component/128",[7,0.401]],["title/129-1",[0,39.238,1,51.636]],["name/129-1",[]],["text/129-1",[]],["component/129-1",[]],["title/129-2",[9,44.029,33,33.622,552,26.841]],["name/129-2",[]],["text/129-2",[]],["component/129-2",[]],["title/129",[2,44.313,3,31.597]],["name/129",[2,0.789,3,0.563]],["text/129",[0,2.565,1,5.422,2,2.178,3,3.318,4,2.121,5,0.897,6,1.049,7,0.936,8,1.477,9,5.698,10,3.72,11,5.12,12,3.877,13,0.711,14,0.904,17,3.509,18,4.033,19,1.301,20,1.216,21,1.936,22,1.727,23,0.979,24,2.03,25,1.582,26,0.877,27,1.936,28,1.836,29,1.949,30,2.18,31,1.174,32,1.526,33,5.417,34,1.634,35,2.021,36,0.95,37,1.277,38,1.191,39,1.936,40,0.722,41,1.936,42,1.667,43,1.76,44,1.936,45,1.697,46,1.528,47,1.936,48,3.296,49,1.512,50,4.26,51,1.936,52,1.007,53,1.936,54,2.069,55,1.936,56,2.4,57,2.11,58,2.314,59,1.936,60,2.314,61,1.936,62,1.795,63,1.364,64,2.727,65,1.429,66,1.936,67,1.936,68,1.27,69,1.582,70,1.647,71,1.133,72,1.936,73,1.936,74,1.727,75,1.647,76,1.318,77,1.222,79,0.976,84,0.601,121,2.099,134,0.78,141,1.528,148,0.722,158,1.138,172,0.924,186,1.143,191,2.302,194,2.415,196,0.909,234,1.216,251,1.056,263,1.041,264,0.732,272,1.191,286,2.881,287,3.547,296,1.553,325,1.354,351,0.967,361,0.997,386,1.203,406,1.269,408,1.138,517,1.263,552,1.534,604,2.069,668,1.119,751,2.916,963,1.119,1076,1.017,1078,1.344,1249,1.698,1434,1.222,1468,1.344,1492,1.563,1498,1.455,1945,1.395,2007,1.882,2008,2.081,2009,1.836,2010,1.836,2011,6.564,2012,6.564,2013,5.785,2014,4.83,2015,2.081,2016,1.468,2017,2.081,2018,1.497,2019,2.081,2020,2.081,2021,2.081,2022,2.081,2023,2.081,2024,1.882,2025,2.081,2026,2.081,2027,2.081,2028,2.081,2029,1.882]],["component/129",[7,0.401]],["title/130-1",[211,39.397,2030,73.872]],["name/130-1",[]],["text/130-1",[]],["component/130-1",[]],["title/130-2",[3,31.597,42,33.917]],["name/130-2",[]],["text/130-2",[]],["component/130-2",[]],["title/130-3",[134,33.036]],["name/130-3",[]],["text/130-3",[]],["component/130-3",[]],["title/130-4",[88,27.909]],["name/130-4",[]],["text/130-4",[]],["component/130-4",[]],["title/130-5",[11,43.832,654,53.672]],["name/130-5",[]],["text/130-5",[]],["component/130-5",[]],["title/130-6",[52,35.736,134,27.671]],["name/130-6",[]],["text/130-6",[]],["component/130-6",[]],["title/130-7",[7,16.382,32,26.708,155,23.905]],["name/130-7",[]],["text/130-7",[]],["component/130-7",[]],["title/130-8",[86,46.845]],["name/130-8",[]],["text/130-8",[]],["component/130-8",[]],["title/130-9",[118,21.806,264,22.343,743,37.312]],["name/130-9",[]],["text/130-9",[]],["component/130-9",[]],["title/130-10",[468,43.669]],["name/130-10",[]],["text/130-10",[]],["component/130-10",[]],["title/130-11",[135,37.916]],["name/130-11",[]],["text/130-11",[]],["component/130-11",[]],["title/130-12",[136,23.734]],["name/130-12",[]],["text/130-12",[]],["component/130-12",[]],["title/130-13",[23,29.884,40,22.05,547,28.52]],["name/130-13",[]],["text/130-13",[]],["component/130-13",[]],["title/130-14",[13,25.254,105,32.092]],["name/130-14",[]],["text/130-14",[]],["component/130-14",[]],["title/130",[3,31.597,7,19.043]],["name/130",[10,0.973]],["text/130",[3,1.948,6,1.712,7,1.518,8,1.682,10,3.598,11,2.016,12,0.557,13,1.162,14,0.45,17,1.943,18,1.588,22,0.859,23,1.275,24,0.579,29,2.898,32,0.435,34,0.466,36,0.472,40,0.94,42,1.84,45,1.588,48,1.099,52,2.44,54,0.59,60,0.66,70,0.819,79,2.572,83,1.449,84,1.903,85,1.602,86,1.44,87,2.608,88,2.273,90,0.485,99,1.712,105,0.838,107,0.737,110,1.295,112,0.916,113,1.779,116,1.094,117,1.151,118,1.882,121,0.598,125,0.496,133,0.647,134,1.273,135,1.461,136,1.225,139,1.495,144,1.21,145,1.293,146,1.866,155,1.897,158,1.055,160,1.516,162,0.76,163,1.005,170,0.647,171,0.509,172,1.508,177,0.963,178,0.557,180,1.206,183,0.433,185,1.361,186,0.568,189,0.605,190,0.643,191,2.183,192,1.434,196,2.571,200,0.705,203,0.635,211,0.552,220,0.752,222,0.859,224,3.552,227,0.705,228,0.545,231,0.737,234,3.204,239,1.329,243,1.214,245,0.737,247,1.206,248,0.539,249,2.479,250,0.744,251,0.979,252,0.907,253,0.705,254,0.723,256,0.913,257,0.936,258,0.807,259,0.963,260,0.787,261,1.665,262,0.621,263,0.965,264,3.356,268,0.669,272,0.593,277,0.531,280,1.598,282,0.635,283,1.177,286,1.151,292,0.581,296,1.453,308,1.153,313,1.716,319,0.834,335,0.621,346,0.797,348,0.699,349,0.568,351,0.481,352,0.768,354,0.639,355,0.694,357,0.611,377,0.564,391,1.021,401,0.91,402,0.449,406,1.188,412,1.361,418,1.55,431,1.171,438,0.76,441,0.655,443,1.069,450,1.325,451,0.543,460,0.459,465,1.19,468,1.683,487,0.881,505,0.678,509,1.247,525,1.259,547,0.464,549,0.541,552,1.145,556,1.206,567,0.744,569,1.602,593,0.513,604,1.099,615,0.595,619,0.717,630,0.651,647,0.655,654,2.469,662,0.875,663,0.711,675,0.711,679,0.431,680,0.543,682,0.561,683,1.875,684,1.423,698,0.568,711,0.66,732,0.694,741,0.664,743,1.995,751,0.831,754,1.22,774,0.717,786,1.069,790,0.593,865,1.065,871,0.723,900,1.817,903,0.605,920,0.819,933,0.699,961,0.76,968,1.065,972,0.552,983,0.777,993,0.608,1005,0.97,1076,0.506,1091,0.614,1097,0.73,1110,0.717,1125,1.304,1130,0.66,1211,0.699,1253,0.673,1300,0.845,1413,0.859,1416,0.655,1455,1.795,1456,0.468,1477,0.595,1490,0.678,1498,1.349,1520,1.304,1561,0.787,1623,0.893,1640,0.737,1644,1.795,1647,0.717,1688,1.745,1942,0.664,1947,0.859,2010,0.913,2016,0.73,2018,1.388,2031,1.035,2032,1.035,2033,1.035,2034,1.035,2035,1.035,2036,1.035,2037,0.936,2038,1.035,2039,1.035,2040,1.035,2041,1.035,2042,0.717,2043,1.632,2045,0.807,2046,0.875,2047,0.875,2050,0.845,2051,2.354,2054,0.635,2055,2.729,2056,0.73,2057,1.035,2058,0.963,2059,1.035,2060,0.705,2061,0.936,2062,1.035,2063,0.777,2064,1.035,2066,0.936,2067,1.702,2068,0.936,2069,0.875,2070,0.963,2071,0.936,2072,0.831,2073,0.831,2074,1.035,2370,0.893,2785,0.913,3003,0.963,3154,0.936,3162,1.089,3163,1.089,3164,1.089,3165,0.893,3166,1.089,3167,1.089,3168,0.893,3169,1.089,3170,1.665,3171,0.893,3172,0.893,3173,1.089]],["component/130",[7,0.401]],["title/131-1",[684,38.775,869,56.867]],["name/131-1",[]],["text/131-1",[]],["component/131-1",[]],["title/131-2",[113,39.143]],["name/131-2",[]],["text/131-2",[]],["component/131-2",[]],["title/131-3",[7,19.043,869,56.867]],["name/131-3",[]],["text/131-3",[]],["component/131-3",[]],["title/131-4",[111,50.007]],["name/131-4",[]],["text/131-4",[]],["component/131-4",[]],["title/131-5",[113,39.143]],["name/131-5",[]],["text/131-5",[]],["component/131-5",[]],["title/131-6",[13,19.063,14,24.225,264,19.605,325,36.279]],["name/131-6",[]],["text/131-6",[]],["component/131-6",[]],["title/131",[1246,68.801]],["name/131",[1246,1.832]],["text/131",[3,2.362,7,2.951,8,1.41,10,1.419,11,3.277,12,1.843,13,2.983,14,3.79,23,1.611,26,1.444,33,2.922,38,1.962,42,1.573,48,3.147,49,2.49,62,2.957,77,2.012,80,2.44,84,2.003,88,1.748,96,1.68,102,3.132,111,4.947,113,4.529,115,2.033,125,2.646,128,2.023,129,1.658,148,1.189,158,1.874,164,2.156,186,1.882,221,2.374,236,1.525,243,3.474,252,1.611,264,2.439,301,1.451,313,4.392,314,3.187,320,2.044,325,3.593,333,2.091,344,2.844,356,3.047,384,2.957,421,1.934,443,1.899,451,1.799,509,2.214,517,2.079,520,2.49,553,3.452,593,1.697,684,2.899,869,7.179,889,2.129,963,1.843,972,3.7,1062,2.465,1221,2.957,1246,6.807,1250,2.574,1289,2.898,1421,2.465,1595,5.137,1945,2.297,2075,3.427,2076,2.395,2077,5.523,2078,5.523,2079,5.523]],["component/131",[7,0.401]],["title/132-1",[296,27.183,673,32.606,743,37.312]],["name/132-1",[]],["text/132-1",[]],["component/132-1",[]],["title/132-2",[7,16.382,134,23.806,552,26.841]],["name/132-2",[]],["text/132-2",[]],["component/132-2",[]],["title/132-3",[2080,70.826]],["name/132-3",[]],["text/132-3",[]],["component/132-3",[]],["title/132-4",[86,46.845]],["name/132-4",[]],["text/132-4",[]],["component/132-4",[]],["title/132-5",[88,27.909]],["name/132-5",[]],["text/132-5",[]],["component/132-5",[]],["title/132-6",[155,27.786,465,32.434]],["name/132-6",[]],["text/132-6",[]],["component/132-6",[]],["title/132-7",[13,21.726,14,27.609,319,27.465]],["name/132-7",[]],["text/132-7",[]],["component/132-7",[]],["title/132-8",[135,31.759,319,31.924]],["name/132-8",[]],["text/132-8",[]],["component/132-8",[]],["title/132-9",[439,37.508,708,35.536,1400,35.216]],["name/132-9",[]],["text/132-9",[]],["component/132-9",[]],["title/132",[]],["name/132",[93,0.536,94,0.561,552,0.386]],["text/132",[3,0.449,5,0.842,7,0.886,8,1.516,10,2.751,13,2.03,14,2.405,17,0.448,18,0.49,20,0.613,29,2.054,30,0.882,36,0.892,38,1.119,42,0.897,45,0.49,52,0.945,68,0.64,76,1.737,84,1.598,86,2.94,87,0.683,88,1.282,90,0.492,93,1.147,94,1.684,99,0.985,102,0.595,109,0.887,112,3.675,113,0.867,115,0.623,116,0.595,117,2.161,118,1.179,125,0.936,126,0.779,130,1.214,134,1.287,135,3.757,136,1.09,139,2.065,141,2.523,148,1.596,154,0.536,155,1.524,160,0.587,161,1.843,163,0.547,165,1.331,169,1.16,171,0.516,172,1.218,181,0.788,186,0.576,191,1.092,192,0.555,194,0.698,195,0.669,196,2.418,200,0.715,201,0.762,203,0.644,211,0.56,214,1.605,220,2.497,224,3.987,226,0.693,234,1.142,238,0.788,239,0.514,247,1.715,250,0.755,253,0.715,263,0.525,264,3.413,277,0.538,279,0.496,280,1.29,283,1.674,292,0.589,296,2.54,297,1.124,308,0.832,311,2.526,315,0.715,316,0.525,319,0.845,341,0.629,348,0.709,349,0.576,391,2.694,392,0.976,402,0.244,406,0.367,408,0.574,439,0.619,441,1.237,443,0.581,446,0.549,451,0.551,455,1.01,465,1.509,468,0.968,470,0.485,476,0.856,487,0.479,514,1.496,518,3.626,525,0.908,547,0.471,549,0.549,552,2.15,556,2.875,583,2.366,603,0.66,604,0.598,613,0.798,617,2.929,630,1.229,631,0.648,658,0.949,670,1.083,673,3.972,674,0.715,680,0.551,683,1.078,684,1.44,695,0.536,697,1.664,708,1.922,735,1.853,736,0.656,743,0.616,767,0.762,786,1.083,859,1.237,865,1.078,890,0.678,894,0.715,900,0.703,903,0.613,909,0.755,961,0.771,982,3.802,993,0.616,1005,0.699,1076,0.513,1090,0.727,1095,0.871,1139,0.721,1211,0.709,1253,1.272,1277,5.815,1400,1.083,1413,0.871,1449,0.976,1467,2.804,1490,0.688,1640,0.747,1727,0.755,1942,0.673,1945,0.703,1948,1.653,1952,1.595,2051,0.727,2054,1.2,2060,3.133,2061,0.949,2073,0.843,2076,0.733,2080,4.769,2081,0.949,2082,1.049,2083,0.843,2084,0.926,2085,1.049,2086,0.949,2087,0.949,2088,0.949,2089,0.949,2090,0.949,2091,0.949,2092,0.856,2093,1.686,2094,0.949,2095,1.049,2096,0.949,2097,0.83,2098,0.905,2099,0.976,2100,1.049,2101,1.049,2102,1.049,2103,0.871,2104,0.976,2105,1.049,2106,0.949,2107,0.949,2108,0.856,2109,0.819,2110,0.949,2111,1.954,2112,2.48,2113,1.049,2114,0.976,2115,1.049,2116,0.856,2117,1.954,2118,1.653,2119,2.551,2120,1.049,2121,1.878,2122,1.049,2123,1.049,2124,1.954,2125,2.743,2126,1.818,2127,0.905,2128,1.049,2129,1.049,2130,0.949,2131,0.976,2132,0.905,2133,1.049,2134,0.887,2135,0.843,2136,0.887]],["component/132",[7,0.401]],["title/133-1",[7,16.382,134,23.806,552,26.841]],["name/133-1",[]],["text/133-1",[]],["component/133-1",[]],["title/133-2",[7,16.382,10,26.319,552,26.841]],["name/133-2",[]],["text/133-2",[]],["component/133-2",[]],["title/133-3",[40,22.05,552,26.841,1952,51.858]],["name/133-3",[]],["text/133-3",[]],["component/133-3",[]],["title/133-4",[2080,70.826]],["name/133-4",[]],["text/133-4",[]],["component/133-4",[]],["title/133-5",[86,46.845]],["name/133-5",[]],["text/133-5",[]],["component/133-5",[]],["title/133-6",[88,27.909]],["name/133-6",[]],["text/133-6",[]],["component/133-6",[]],["title/133-7",[465,32.434,548,49.907]],["name/133-7",[]],["text/133-7",[]],["component/133-7",[]],["title/133-8",[139,32.899]],["name/133-8",[]],["text/133-8",[]],["component/133-8",[]],["title/133-9",[13,25.254,14,32.092]],["name/133-9",[]],["text/133-9",[]],["component/133-9",[]],["title/133-10",[1253,48.06,2063,55.481]],["name/133-10",[]],["text/133-10",[]],["component/133-10",[]],["title/133-11",[3,23.851,349,30.628,439,32.911,708,31.18]],["name/133-11",[]],["text/133-11",[]],["component/133-11",[]],["title/133-12",[112,26.465,113,24.75,118,19.133,972,29.739]],["name/133-12",[]],["text/133-12",[]],["component/133-12",[]],["title/133-13",[139,20.802,144,24.886,673,28.61,2137,40.104]],["name/133-13",[]],["text/133-13",[]],["component/133-13",[]],["title/133-14",[16,50.316,1400,40.934]],["name/133-14",[]],["text/133-14",[]],["component/133-14",[]],["title/133-15",[139,23.708,335,38.123,624,46.666]],["name/133-15",[]],["text/133-15",[]],["component/133-15",[]],["title/133-16",[296,21.247,391,26.28,487,22.675,680,26.073,2138,36.475]],["name/133-16",[]],["text/133-16",[]],["component/133-16",[]],["title/133-17",[13,21.726,14,27.609,88,20.111]],["name/133-17",[]],["text/133-17",[]],["component/133-17",[]],["title/133-18",[260,56.153,2063,55.481]],["name/133-18",[]],["text/133-18",[]],["component/133-18",[]],["title/133-19",[10,20.571,87,32.317,129,24.03,402,11.555,470,22.941]],["name/133-19",[]],["text/133-19",[]],["component/133-19",[]],["title/133-20",[258,57.629,260,56.153]],["name/133-20",[]],["text/133-20",[]],["component/133-20",[]],["title/133-21",[258,57.629,2139,73.872]],["name/133-21",[]],["text/133-21",[]],["component/133-21",[]],["title/133-22",[112,26.465,118,19.133,552,23.551,616,45.501]],["name/133-22",[]],["text/133-22",[]],["component/133-22",[]],["title/133-23",[26,20.927,113,22.047,264,17.464,357,29.317,552,20.98]],["name/133-23",[]],["text/133-23",[]],["component/133-23",[]],["title/133-24",[13,21.726,14,27.609,552,26.841]],["name/133-24",[]],["text/133-24",[]],["component/133-24",[]],["title/133-25",[136,15.007,603,35.079,684,29.269,1001,43.502]],["name/133-25",[]],["text/133-25",[]],["component/133-25",[]],["title/133-26",[136,10.972,514,15.054,528,23.936,603,25.648,841,26.913,1201,29.322,1621,34.473]],["name/133-26",[]],["text/133-26",[]],["component/133-26",[]],["title/133",[7,14.374,102,31.619,158,30.495,552,23.551]],["name/133",[552,0.556,1608,1.189]],["text/133",[3,0.946,4,1.008,5,0.27,6,0.315,7,0.686,8,1.063,10,0.715,13,1.185,14,1.337,16,0.426,17,0.736,23,0.811,24,2.14,26,0.727,29,1.398,30,0.541,32,0.263,33,0.634,35,0.667,36,0.547,37,1.059,38,0.358,40,1.202,42,0.792,45,2.234,52,1.489,58,0.399,63,0.41,68,0.382,79,2.101,84,2.197,86,3.085,88,1.097,90,1.037,92,0.391,96,0.307,97,0.816,104,0.322,105,0.272,110,1.828,111,0.68,112,3.058,113,1.989,115,0.371,116,0.978,117,1.903,118,1.736,125,0.3,128,0.369,134,1.679,136,1.206,138,0.557,139,2.404,141,1.624,144,0.987,148,0.599,154,0.882,155,0.649,160,0.965,161,0.691,162,0.88,163,0.899,168,0.334,169,1.024,170,1.079,171,0.308,172,0.981,178,0.645,183,0.262,185,0.441,189,1.554,190,1.374,191,1.658,192,0.331,195,0.399,196,1.671,203,0.384,208,0.552,211,0.334,214,0.475,224,0.889,226,0.413,234,0.365,239,0.307,241,0.519,243,0.394,247,2.604,248,0.624,249,0.94,250,0.45,252,1.447,253,0.426,258,2.076,260,0.476,261,0.54,262,0.719,263,0.863,264,1.681,265,0.434,267,0.711,268,1.719,271,0.586,273,0.519,275,0.62,278,0.74,279,0.296,280,1.251,282,0.384,283,0.382,296,1.917,297,0.993,301,1.467,304,0.89,317,0.446,319,0.956,324,0.465,330,0.81,331,0.341,335,0.375,337,0.54,340,0.391,346,0.482,349,0.658,354,1.065,355,1.156,356,0.345,361,1.275,374,0.47,377,0.653,378,0.446,388,0.384,391,0.913,401,0.295,402,0.716,408,0.656,424,0.88,429,0.437,430,0.446,431,0.727,439,0.707,440,0.413,443,1.225,445,0.404,446,0.327,450,0.43,451,0.629,452,0.862,455,1.978,458,0.404,465,1.168,468,0.31,470,0.554,476,0.978,483,0.566,487,2.046,506,0.47,509,0.404,514,1.765,517,0.38,518,3.404,519,0.446,523,0.386,525,0.557,528,0.704,547,0.774,548,1.494,549,1.391,552,3.328,556,2.802,575,0.45,580,1.326,583,1.008,586,0.382,593,0.594,603,0.754,604,0.357,616,0.511,619,0.83,620,0.38,622,0.47,623,1.034,624,0.459,665,0.928,668,0.645,670,1.705,673,2.452,675,0.823,676,0.43,678,1.326,679,0.718,680,2.509,681,0.434,682,0.936,683,1.468,684,1.615,686,0.701,695,0.32,697,1.341,706,0.407,708,0.67,712,0.786,723,0.69,724,1.014,732,0.803,734,0.455,735,1.166,736,1.079,738,0.519,740,0.511,741,1.707,742,0.862,745,0.32,780,1.034,781,1.489,786,0.664,788,0.731,834,0.446,841,1.46,865,0.952,889,0.745,894,0.816,903,0.7,918,0.482,930,0.465,962,0.511,963,0.336,972,1.179,973,0.923,982,0.823,985,0.399,993,0.367,1001,0.488,1008,0.983,1066,1.242,1068,0.862,1076,1.08,1090,0.434,1091,0.371,1096,0.47,1097,0.846,1108,0.871,1122,0.482,1138,0.45,1150,0.347,1155,0.47,1157,0.511,1201,0.45,1211,0.423,1253,2.49,1256,0.519,1277,4.185,1279,0.396,1400,1.474,1416,0.396,1431,0.352,1447,1.034,1461,0.355,1490,0.41,1498,0.437,1515,2.401,1516,0.511,1556,1.107,1621,0.529,1650,0.89,1661,0.482,1708,0.441,1782,1.084,1924,1.56,1950,0.459,1952,2.511,1962,0.511,1978,0.552,2018,0.862,2051,1.843,2052,0.582,2053,0.54,2054,0.384,2056,0.846,2060,0.426,2063,0.9,2080,1.386,2083,0.503,2084,1.057,2086,0.566,2087,0.566,2088,0.566,2089,0.566,2090,0.566,2091,0.566,2092,0.511,2106,0.566,2107,1.56,2108,0.511,2109,0.488,2110,0.566,2134,0.529,2135,0.503,2136,0.529,2140,0.626,2141,1.152,2142,1.199,2143,0.626,2144,0.626,2145,0.566,2146,0.626,2147,0.626,2148,0.566,2149,1.199,2150,0.552,2151,0.626,2152,0.566,2153,0.626,2154,0.626,2155,0.626,2156,0.626,2157,0.626,2158,0.626,2159,0.626,2160,1.199,2161,0.566,2162,0.626,2163,0.626,2164,0.54,2165,0.626,2166,0.582,2167,0.626,2168,0.626,2169,0.529,2170,3.465,2171,0.626,2172,0.626,2173,2.295,2174,1.199,2175,2.66,2176,1.199,2177,0.885,2178,1.199,2179,1.199,2180,1.199,2181,1.199,2182,0.626,2183,0.626,2184,0.626,2185,0.626,2186,0.626,2187,0.626,2188,0.626,2189,1.199,2190,0.626,2191,1.605,2192,0.626,2193,0.626,2194,0.47,2195,0.626,2196,0.626,2197,0.626,2198,0.626,2199,0.482,2200,0.626,2201,0.626,2202,0.626,2203,0.626,2204,0.626,2205,0.626,2206,0.626,2207,0.626,2208,0.626,2209,0.626,2210,0.626,2211,0.511,2212,0.626,2213,0.626,2214,0.626,2215,0.626,2216,0.626,2217,0.626,2218,1.199,2219,0.626,2220,0.582,2221,0.626,2222,0.626,3174,1.261,3175,0.658]],["component/133",[7,0.401]],["title/134",[158,40.398,502,34.217]],["name/134",[502,1.088]],["text/134",[134,3.739,158,5.459,251,5.065,967,6.404,1936,6.494,3176,10.501]],["component/134",[7,0.401]],["title/135-1",[2258,66.798,2259,66.798]],["name/135-1",[]],["text/135-1",[]],["component/135-1",[]],["title/135-2",[23,34.737,1619,60.278]],["name/135-2",[]],["text/135-2",[]],["component/135-2",[]],["title/135-3",[42,29.179,436,54.829,514,23.467]],["name/135-3",[]],["text/135-3",[]],["component/135-3",[]],["title/135-4",[23,34.737,1936,48.06]],["name/135-4",[]],["text/135-4",[]],["component/135-4",[]],["title/135-5",[23,29.884,521,43.287,723,25.408]],["name/135-5",[]],["text/135-5",[]],["component/135-5",[]],["title/135",[7,19.043,23,34.737]],["name/135",[23,1.104]],["text/135",[1,2.249,5,3.304,7,1.713,8,0.821,19,3.28,23,5.375,24,2.934,26,3.23,34,1.448,36,1.469,40,1.116,42,1.477,58,2.05,84,0.929,88,1.661,110,2.506,118,1.8,125,2.514,128,3.097,129,1.556,130,1.999,133,2.011,134,3.579,144,1.436,158,1.759,172,2.329,183,2.194,188,1.963,191,2.645,203,1.975,234,1.879,252,1.513,264,3.185,270,2.625,271,2.564,296,2.244,301,2.222,319,1.39,337,2.776,377,1.752,406,1.125,436,4.527,458,2.078,470,2.423,514,2.454,525,1.495,552,1.359,583,1.879,586,1.963,604,1.833,659,2.477,668,2.822,682,1.744,683,1.775,694,1.999,697,1.952,698,1.767,736,2.011,772,2.011,830,2.05,833,2.477,895,2.477,984,2.078,1004,2.27,1013,2.51,1017,2.27,1139,3.604,1168,2.477,1204,2.776,1211,4.489,1402,2.477,1499,2.338,1561,2.446,1641,2.72,1669,2.477,1727,2.314,1747,2.625,1877,2.838,2054,1.975,2056,2.27,2081,2.909,2259,4.745,2260,2.909,2261,3.217,2262,3.217,2263,3.217,2264,3.217,2265,3.217,2266,3.217,2267,3.217,2268,3.217,2269,3.217,2270,3.217,2271,3.217,2272,3.217]],["component/135",[7,0.401]],["title/136-1",[7,22.734]],["name/136-1",[]],["text/136-1",[]],["component/136-1",[]],["title/136-2",[264,25.971,522,71]],["name/136-2",[]],["text/136-2",[]],["component/136-2",[]],["title/136-3",[264,19.605,343,40.515,1750,43.502,2619,38.632]],["name/136-3",[]],["text/136-3",[]],["component/136-3",[]],["title/136-4",[4,43.146,7,19.043]],["name/136-4",[]],["text/136-4",[]],["component/136-4",[]],["title/136-5",[239,31.151,308,27.045,629,59.109]],["name/136-5",[]],["text/136-5",[]],["component/136-5",[]],["title/136-6",[191,35.099]],["name/136-6",[]],["text/136-6",[]],["component/136-6",[]],["title/136-7",[2273,88.192]],["name/136-7",[]],["text/136-7",[]],["component/136-7",[]],["title/136-8",[209,31.893,790,25.639,968,24.706,3177,47.115,3178,47.115,3179,47.115]],["name/136-8",[]],["text/136-8",[]],["component/136-8",[]],["title/136-9",[95,42.597,2282,59.109,3180,57.467]],["name/136-9",[]],["text/136-9",[]],["component/136-9",[]],["title/136-10",[94,39.007,2275,61.082,2276,63.552]],["name/136-10",[]],["text/136-10",[]],["component/136-10",[]],["title/136-11",[93,37.312,1715,51.038,2274,61.082]],["name/136-11",[]],["text/136-11",[]],["component/136-11",[]],["title/136-12",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2277,40.77,2278,40.77]],["name/136-12",[]],["text/136-12",[]],["component/136-12",[]],["title/136-13",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2279,40.77,2280,40.77]],["name/136-13",[]],["text/136-13",[]],["component/136-13",[]],["title/136-14",[8,10.407,191,16.226,854,27.77,2119,30.27,2281,37.92,2282,37.92,2283,40.77]],["name/136-14",[]],["text/136-14",[]],["component/136-14",[]],["title/136",[7,19.043,78,47.724]],["name/136",[631,1.45]],["text/136",[0,0.515,3,0.776,4,0.566,5,1.103,7,0.468,8,1.34,10,2.174,11,0.575,12,1.376,13,1.646,14,1.111,15,0.521,16,0.66,17,0.774,18,0.453,23,1.513,24,2.425,26,2.211,29,2.118,31,0.547,32,1.352,34,1.448,36,1.168,40,1.321,42,0.833,45,0.848,52,1.557,54,0.552,56,0.481,57,0.563,58,2.427,60,0.618,64,0.728,71,0.988,84,1.252,88,1.018,90,0.851,93,0.569,94,1.114,95,1.715,96,1.254,97,0.66,102,1.029,104,2.479,105,1.398,110,0.463,113,2.137,117,0.77,118,2.061,125,0.869,129,0.878,133,0.606,134,0.68,135,1.637,136,1.617,139,2.241,144,1.436,146,2.091,148,0.63,150,1.117,153,0.746,154,0.495,155,1.631,158,0.992,160,1.015,163,0.505,168,1.364,172,1.428,178,0.521,183,0.405,186,0.997,191,2.246,194,1.207,195,1.156,196,1.117,200,0.66,214,0.384,215,4.101,221,0.671,224,1.317,226,0.64,234,1.06,235,0.901,247,0.606,248,0.505,249,0.988,252,0.456,254,0.677,263,1.61,264,2.969,275,0.501,278,0.598,280,0.456,296,1.376,297,0.557,308,1.62,313,2.038,319,1.874,320,0.578,322,0.704,330,0.655,333,1.107,341,1.088,349,0.997,351,0.45,354,0.598,375,0.649,377,0.528,382,0.901,391,1.353,401,1.207,402,1.397,406,0.339,415,2.638,438,0.712,439,0.572,446,0.507,450,0.666,455,1.322,458,0.626,460,1.136,464,0.626,465,0.425,466,0.575,468,1.594,470,1.486,502,1.491,514,1.188,517,0.588,519,0.69,521,0.66,525,0.45,547,1.444,552,2.807,567,0.697,583,0.566,593,0.898,597,1.06,603,0.61,633,0.901,634,1.688,635,0.876,637,0.791,638,0.901,643,1.506,644,0.819,645,0.836,646,0.876,647,0.614,648,0.901,649,0.778,650,0.901,651,0.901,654,0.704,656,1.851,663,1.246,673,0.497,678,1.088,679,2.184,684,1.343,686,0.737,690,0.614,705,1.788,723,0.725,728,0.557,736,0.606,743,2.546,745,1.308,774,0.671,788,0.591,790,1.465,794,0.969,835,0.539,841,1.198,848,0.969,859,0.614,865,2.896,873,0.655,890,0.626,895,1.397,896,1.198,898,0.778,900,0.649,910,3.029,921,0.778,925,0.767,943,0.666,962,0.791,967,0.622,970,0.684,972,2.031,984,0.626,1005,0.649,1053,0.677,1064,0.719,1066,1.019,1073,0.778,1078,1.172,1130,1.156,1133,0.649,1134,0.737,1136,0.635,1187,0.719,1213,0.69,1253,1.18,1310,0.756,1343,0.836,1367,0.901,1394,4.033,1400,0.537,1417,0.855,1424,0.931,1431,0.544,1448,1.436,1457,0.441,1477,0.557,1483,1.527,1508,0.737,1520,0.655,1523,0.855,1533,0.728,1558,0.572,1559,0.684,1591,0.649,1610,0.635,1671,0.901,1708,0.684,1735,0.542,1754,0.719,1772,1.945,1783,0.756,1819,0.671,1843,0.819,1908,0.901,1942,1.164,1945,0.649,1947,0.804,2053,0.836,2054,1.57,2060,2.593,2076,0.677,2126,0.901,2145,0.876,2253,0.969,2289,3.218,2291,0.969,2292,0.791,2293,1.688,2294,0.876,2295,0.969,2296,1.332,2297,0.969,2298,0.969,2299,1.641,2301,0.756,2304,0.855,2305,0.969,2306,0.737,2307,1.688,2308,0.876,2309,0.704,2310,0.756,2311,0.876,2312,0.901,2545,0.901,2548,0.901,2673,0.767,3043,0.728,3129,0.644,3181,1.019,3182,1.019,3183,1.019,3184,1.019,3185,1.019,3186,1.019,3187,1.019,3188,1.019,3189,3.386,3190,1.019,3191,1.019,3192,1.019,3193,0.931,3194,0.931,3195,1.019,3196,1.019,3197,1.019,3198,1.019]],["component/136",[7,0.401]],["title/137-1",[136,15.007,191,22.192,296,23.851,552,23.551]],["name/137-1",[]],["text/137-1",[]],["component/137-1",[]],["title/137",[102,41.887,136,19.88]],["name/137",[102,1.332]],["text/137",[6,1.778,8,2.169,10,1.461,18,0.941,24,1.126,25,1.531,30,1.592,31,1.136,34,1.588,36,0.919,42,0.925,52,1.707,79,0.944,84,1.019,88,2.239,90,2.207,99,1.015,112,1.674,117,0.855,118,1.21,134,2.855,136,2.821,139,3.702,146,1.106,147,1.329,148,0.699,152,1.448,154,1.029,158,1.101,163,1.837,172,1.566,190,1.251,191,2.25,192,1.065,196,2.807,203,1.236,209,1.434,214,1.865,224,2.424,227,1.372,234,2.061,239,0.987,264,3.561,279,1.669,280,0.947,286,1.201,292,1.131,296,3.26,297,2.03,308,3.01,319,2.443,377,1.097,402,1.315,431,1.222,443,1.955,446,1.053,460,0.894,465,1.549,466,1.195,514,1.738,552,2.715,593,0.997,620,1.222,647,1.275,665,1.083,668,1.083,673,3.298,681,1.395,682,1.092,683,1.111,684,3.713,690,1.275,697,2.14,723,2.57,733,1.408,741,2.264,743,3.319,772,1.259,774,1.395,788,1.229,790,2.695,889,1.251,903,1.176,909,2.537,933,2.383,972,1.074,982,1.383,1005,2.53,1053,1.408,1066,3.176,1092,1.339,1099,1.571,1110,1.395,1150,1.116,1772,2.682,1942,1.292,2016,1.421,2043,3.981,2045,1.571,2046,1.703,2047,1.703,2050,1.643,2051,1.395,2055,1.617,2069,1.703,2072,1.617,2098,4.062,2099,1.873,2104,1.873,2138,1.479,2223,3.391,2296,1.479,2634,1.643,3154,1.821,3165,1.737,3168,1.737,3170,3.044,3171,1.737,3172,1.737,3199,1.821,3200,1.821,3201,1.821,3202,1.821,3203,1.821,3204,2.118,3205,1.821,3206,1.671]],["component/137",[7,0.401]],["title/138",[136,15.007,214,22.092,264,19.605,1005,19.947]],["name/138",[214,0.521,1005,0.471]],["text/138",[0,2.012,4,2.212,5,2.579,8,2.341,10,2.477,12,2.037,17,2.552,18,1.77,30,1.709,36,2.731,40,1.314,42,1.739,68,2.311,69,2.879,86,2.012,88,2.346,110,1.809,118,1.3,133,3.739,135,2.572,136,1.995,139,3.421,142,2.09,155,2.25,160,2.118,172,1.681,211,2.02,214,3.862,215,2.752,249,2.062,264,1.332,377,2.062,402,0.881,412,2.672,487,3.384,536,6.57,556,2.368,557,2.285,608,2.028,612,3.144,674,2.58,716,3.144,717,5.568,718,3.523,719,3.476,722,6.896,723,1.514,724,3.203,725,3.523,726,3.788,727,3.341,728,2.179,746,1.62,752,3.907,757,3.523,762,2.879,763,2.916,764,2.724,765,2.752,766,2.58,1005,3.28,1137,2.845,1166,3.091,1483,1.798,1877,3.341,2169,5.058,2304,5.277,2313,3.203,2314,3.788,2315,3.788,3129,2.519,3207,3.985,3208,3.64,3209,3.985,3210,3.64]],["component/138",[7,0.401]],["title/139",[136,23.734]],["name/139",[631,1.45]],["text/139",[5,4.01,7,2.398,34,4.186,36,4.246,136,2.503,139,4.196,155,3.499,179,6.562,214,3.686,690,5.89]],["component/139",[7,0.401]],["title/140-1",[88,23.377,142,40.753]],["name/140-1",[]],["text/140-1",[]],["component/140-1",[]],["title/140-2",[6,37.221,687,52.112]],["name/140-2",[]],["text/140-2",[]],["component/140-2",[]],["title/140-3",[123,52.609,124,56.867]],["name/140-3",[]],["text/140-3",[]],["component/140-3",[]],["title/140",[136,19.88,684,38.775]],["name/140",[684,1.233]],["text/140",[6,3.164,15,1.595,17,2.094,26,1.25,32,2.063,35,2.732,36,1.354,38,2.81,40,1.029,57,1.724,75,2.347,77,2.882,84,3.179,88,2.559,91,1.76,96,2.406,121,1.715,123,4.472,124,4.834,129,2.374,130,3.901,135,3.138,136,2.963,142,1.636,144,2.191,155,1.846,166,1.843,171,1.459,172,2.178,192,1.569,196,2.742,202,2.314,211,3.349,214,2.488,264,1.726,308,2.672,313,1.878,316,3.651,321,4.565,331,1.615,377,1.615,388,3.013,401,2.315,411,3.883,509,4.056,570,1.82,663,3.371,668,3.376,682,1.608,686,1.205,697,1.799,698,1.629,699,2.759,700,2.759,702,2.759,703,2.759,704,2.759,705,2.073,706,3.193,707,2.759,708,1.658,709,2.759,711,3.128,713,2.759,714,2.759,786,2.72,889,1.843,917,3.731,949,3.128,1092,1.973,1138,2.133,1187,2.202,1467,2.42,1661,2.283,2316,2.966,2317,2.966,2318,2.966,2319,2.966,2320,2.966,2321,2.966,2322,2.966,2323,2.966,2324,2.966,2325,4.908,2326,2.966,2327,2.966,2328,4.438,2329,3.942,2330,2.966,2331,2.966]],["component/140",[7,0.401]],["title/141-1",[729,57.377]],["name/141-1",[]],["text/141-1",[]],["component/141-1",[]],["title/141-2",[84,21.33,706,48.06]],["name/141-2",[]],["text/141-2",[]],["component/141-2",[]],["title/141-3",[514,27.277,706,48.06]],["name/141-3",[]],["text/141-3",[]],["component/141-3",[]],["title/141-4",[786,48.87]],["name/141-4",[]],["text/141-4",[]],["component/141-4",[]],["title/141-5",[1967,66.236]],["name/141-5",[]],["text/141-5",[]],["component/141-5",[]],["title/141-6",[52,30.744,350,36.208,680,33.358]],["name/141-6",[]],["text/141-6",[]],["component/141-6",[]],["title/141-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/141-7",[]],["text/141-7",[]],["component/141-7",[]],["title/141-8",[502,40.851]],["name/141-8",[]],["text/141-8",[]],["component/141-8",[]],["title/141",[136,17.103,487,29.01,680,33.358]],["name/141",[487,0.6,680,0.69]],["text/141",[4,0.88,7,0.703,8,0.385,13,0.515,14,0.655,17,2.258,18,0.705,20,0.88,26,2.23,29,0.608,32,0.634,35,2.946,36,0.688,38,2.136,46,1.107,52,2.86,71,0.821,84,2.412,96,0.739,101,3.673,108,1.074,110,0.72,112,1.771,117,3.275,118,2.213,121,0.872,125,1.788,134,2.593,136,1.736,142,0.832,148,0.523,155,2.224,157,2.224,161,0.604,163,0.785,164,0.948,165,1.027,170,0.942,171,1.341,172,2.349,178,0.811,180,0.942,195,0.961,196,1.998,214,1.08,226,1.799,239,0.739,245,1.074,247,0.942,248,1.42,250,1.084,252,1.755,255,2.744,263,2.648,275,1.409,277,1.914,279,0.713,280,1.282,297,2.147,301,2.731,315,1.027,319,1.178,327,1.211,331,2.032,340,0.942,346,1.16,347,1.211,351,0.7,375,1.01,377,1.484,378,1.074,386,0.872,391,1.974,395,0.988,398,1.146,418,1.211,430,1.074,439,0.89,446,0.788,451,0.791,452,1.084,455,3.795,458,1.761,465,0.662,487,3.522,505,0.988,508,1.644,514,1.378,525,2.125,547,0.677,583,1.592,596,0.988,597,0.88,604,2.126,608,0.807,622,2.802,665,0.811,673,1.399,679,3.693,680,4.99,682,0.817,683,1.504,686,1.516,689,1.063,698,0.828,705,1.054,708,0.843,712,2.998,729,0.981,730,2.802,731,2.189,732,2.501,733,1.054,734,1.095,735,2.521,736,2.333,737,1.33,738,1.251,741,1.749,744,2.632,745,0.771,770,1.402,771,3.733,772,2.86,774,1.044,775,1.176,776,1.402,777,1.402,778,1.402,779,2.378,780,1.301,781,2.352,782,1.33,783,1.176,785,2.405,786,2.068,787,1.402,788,0.92,789,1.363,790,0.863,889,1.693,973,1.16,985,0.961,993,0.885,1010,1.074,1033,2.684,1066,0.847,1076,0.736,1097,1.923,1219,1.044,1400,0.835,1416,0.954,1478,1.275,1551,1.044,1640,1.074,1659,1.211,1730,1.211,1733,1.193,1933,1.251,1943,1.275,1967,1.132,1968,1.449,1969,1.301,1970,1.33,1971,2.62,1972,1.449,1973,2.405,1974,1.363,1975,1.449,1976,1.449,1977,1.449,1978,1.33,1979,1.449,1980,1.449,2051,1.044,2054,0.925,2332,1.507,2333,1.507,2334,1.507,2335,1.507,2336,1.193]],["component/141",[7,0.401]],["title/142-1",[191,22.192,296,23.851,468,27.611,552,23.551]],["name/142-1",[]],["text/142-1",[]],["component/142-1",[]],["title/142",[102,41.887,468,36.578]],["name/142",[102,1.332]],["text/142",[3,0.951,4,1.299,5,0.958,6,1.937,8,2.168,10,2.104,18,1.039,23,1.045,25,1.69,30,1.735,31,1.255,42,1.021,52,1.86,79,1.042,84,0.642,86,2.043,88,2.688,90,1.803,99,1.12,112,1.055,117,0.944,118,1.319,134,3.008,139,3.446,146,1.221,147,1.468,148,0.771,154,1.966,158,1.216,163,2.003,172,2.255,188,1.357,190,1.381,191,3.196,192,1.176,196,2.644,200,1.514,203,2.36,209,1.583,214,0.881,224,1.98,227,1.514,234,2.968,239,1.09,264,3.449,279,2.404,280,1.045,286,1.326,292,1.249,296,3.435,297,1.279,308,2.576,317,1.583,319,2.616,391,1.176,431,1.349,443,2.131,446,1.162,460,0.987,465,0.976,468,5.179,514,1.876,552,2.889,593,1.101,597,1.299,604,1.267,620,1.349,665,1.195,668,1.195,673,1.973,681,1.54,682,1.205,683,1.226,684,1.167,690,1.408,697,1.349,723,2.42,733,1.554,741,2.467,743,2.983,790,2.909,889,1.381,901,1.961,902,1.961,903,2.246,909,2.766,933,1.502,1053,1.554,1066,2.854,1078,1.436,1099,1.734,1110,1.54,1123,1.633,1174,1.514,2016,1.568,2043,4.296,2045,1.734,2046,1.88,2047,1.88,2050,1.814,2051,1.54,2054,1.365,2055,1.785,2069,1.88,2070,2.068,2072,1.785,2138,1.633,2296,1.633,2353,1.961,3129,1.479,3135,1.785,3143,3.696,3165,1.918,3168,1.918,3170,3.318,3171,1.918,3172,1.918,3199,2.01,3200,2.01,3201,2.01,3202,2.01,3203,2.01,3205,2.01,3206,1.845,3211,2.137,3212,2.137,3213,2.339,3214,2.339]],["component/142",[7,0.401]],["title/143",[468,43.669]],["name/143",[631,1.45]],["text/143",[]],["component/143",[7,0.401]],["title/144",[32,26.708,45,29.703,130,39.481]],["name/144",[45,0.615,559,1.223]],["text/144",[11,7.224,26,3.255,45,3.611,48,4.402,52,3.737,54,4.402,60,4.924,77,5.878,91,4.584,155,4.178,191,3.075,232,6.413,560,7.185,561,7.185,562,7.185,563,7.185,566,7.185,567,5.556,568,7.185]],["component/144",[7,0.401]],["title/145-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/145-1",[]],["text/145-1",[]],["component/145-1",[]],["title/145-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/145-2",[]],["text/145-2",[]],["component/145-2",[]],["title/145-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/145-3",[]],["text/145-3",[]],["component/145-3",[]],["title/145-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/145-4",[]],["text/145-4",[]],["component/145-4",[]],["title/145-5",[148,25.631,582,61.318]],["name/145-5",[]],["text/145-5",[]],["component/145-5",[]],["title/145-6",[84,9.983,136,9.304,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156,1005,12.367]],["name/145-6",[]],["text/145-6",[]],["component/145-6",[]],["title/145-7",[586,53.814]],["name/145-7",[]],["text/145-7",[]],["component/145-7",[]],["title/145",[587,73.205]],["name/145",[587,1.949]],["text/145",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303,1005,1.27]],["component/145",[7,0.401]],["title/146-1",[88,17.646,142,30.762,604,31.77,910,35.079]],["name/146-1",[]],["text/146-1",[]],["component/146-1",[]],["title/146-2",[135,23.974,191,22.192,296,23.851,552,23.551]],["name/146-2",[]],["text/146-2",[]],["component/146-2",[]],["title/146",[102,41.887,135,31.759]],["name/146",[102,1.332]],["text/146",[3,0.967,5,0.974,6,2.592,8,2.067,10,2.131,11,1.341,14,0.982,17,0.964,18,1.056,23,1.063,25,1.718,29,0.912,30,1.02,31,2.201,34,1.755,42,1.038,48,1.288,52,1.887,79,1.059,84,0.653,86,2.072,88,2.563,90,1.828,99,1.139,112,1.851,113,1.731,117,0.959,118,1.765,134,3.034,135,3.998,136,0.608,139,2.577,142,1.247,146,1.241,147,1.492,148,0.784,154,1.994,155,0.85,158,1.236,163,1.177,172,2.283,190,1.404,191,3.007,192,1.196,196,2.247,203,1.387,209,1.609,214,0.895,224,2.008,227,1.539,234,3.005,239,1.108,243,1.422,264,3.376,268,1.46,275,1.168,279,1.845,280,1.063,286,1.348,296,3.464,297,1.3,308,2.189,313,1.431,317,2.778,319,2.223,356,2.152,386,1.307,391,2.063,431,1.371,443,2.161,446,1.182,460,1.003,465,0.992,514,1.9,552,2.173,553,1.413,593,1.119,620,1.371,665,1.215,668,2.097,673,2.001,681,1.566,682,1.225,683,1.247,684,1.186,689,1.594,695,1.155,697,1.371,712,1.481,719,1.313,723,2.057,741,2.502,743,3.021,790,2.233,889,1.404,901,1.994,902,1.994,903,2.278,909,2.805,910,1.422,933,1.527,1053,1.58,1078,2.52,1106,1.225,1110,1.566,1134,1.718,2016,1.594,2043,4.35,2045,1.763,2046,1.911,2047,1.911,2050,1.844,2051,1.566,2055,1.815,2069,1.911,2072,1.815,2138,1.66,2296,1.66,2353,1.994,3129,1.503,3135,1.815,3165,1.95,3168,1.95,3170,3.365,3171,1.95,3172,1.95,3199,2.044,3200,2.044,3201,2.044,3202,2.044,3203,2.044,3205,2.044,3206,1.876,3211,2.172,3212,2.172,3215,2.378,3216,2.378,3217,2.378,3218,2.378,3219,2.378]],["component/146",[7,0.401]],["title/147-1",[406,22.217,1106,34.459,1107,35.216]],["name/147-1",[]],["text/147-1",[]],["component/147-1",[]],["title/147-2",[136,17.103,679,26.447,752,33.489]],["name/147-2",[]],["text/147-2",[]],["component/147-2",[]],["title/147-3",[42,22.807,142,27.403,143,28.034,752,26.176,2337,44.917]],["name/147-3",[]],["text/147-3",[]],["component/147-3",[]],["title/147-4",[5,21.411,42,22.807,135,21.356,138,23.078,752,26.176]],["name/147-4",[]],["text/147-4",[]],["component/147-4",[]],["title/147",[135,37.916]],["name/147",[631,1.45]],["text/147",[8,0.699,17,3.573,20,1.6,23,1.288,29,2.394,31,1.546,40,0.951,42,2.11,45,2.148,76,1.735,84,2.418,92,1.713,96,2.909,99,1.381,101,1.371,104,1.411,106,1.796,118,2.036,125,1.313,134,1.026,135,4.428,138,2.135,142,2.535,143,1.546,144,1.223,152,1.971,155,1.031,161,1.098,164,2.891,170,1.713,171,1.348,183,3.236,189,1.6,192,1.45,195,1.746,196,2.007,211,4.127,251,2.332,252,2.79,254,1.915,255,1.644,280,1.288,301,1.946,308,1.166,320,1.635,341,1.644,351,1.273,357,1.617,374,2.058,377,1.492,391,1.45,406,1.606,415,1.898,439,1.617,451,1.438,455,1.416,502,1.269,531,1.386,583,1.6,593,3.439,608,1.467,668,1.473,719,2.67,752,2.421,754,1.233,756,1.915,764,1.971,771,2.236,772,1.713,786,1.518,859,1.735,890,2.968,891,2.549,892,2.549,893,1.851,894,1.866,895,2.109,896,1.809,897,2.417,898,2.201,899,2.549,904,2.138,913,2.236,972,1.461,1075,1.626,1076,1.339,1109,1.971,1133,3.08,1150,1.518,1151,2.034,1284,2.201,1348,2.274,1389,2.274,1647,1.898,1747,2.236,2016,3.241,2130,2.478,2337,2.478,2338,2.74,2339,2.74,2340,2.74,2341,2.74,2342,2.317,2343,2.74,2344,2.74,2345,2.74,2346,2.74,2347,2.74,2348,2.201,2351,2.74,2352,2.109,2353,2.417,2356,2.201,2357,2.74,2358,2.74,2359,2.74,2360,2.74,2361,2.74,2362,2.74,2363,4.155,2364,2.74,2365,2.478,2366,2.74,2367,2.74,2368,2.74,2369,2.417,2370,2.364,2371,2.478,3220,2.883,3221,2.883,3222,2.883,3223,2.883,3224,2.883]],["component/147",[7,0.401]],["title/148-1",[45,34.526,90,34.631]],["name/148-1",[]],["text/148-1",[]],["component/148-1",[]],["title/148-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/148-2",[]],["text/148-2",[]],["component/148-2",[]],["title/148-3",[79,26.141,134,20.888,552,23.551,686,22.657]],["name/148-3",[]],["text/148-3",[]],["component/148-3",[]],["title/148-4",[84,11.772,112,19.35,139,15.209,335,24.457,429,28.498,624,29.938,673,20.918]],["name/148-4",[]],["text/148-4",[]],["component/148-4",[]],["title/148-5",[26,26.774,465,27.903,2372,48.923]],["name/148-5",[]],["text/148-5",[]],["component/148-5",[]],["title/148-6",[319,31.924,2373,60.278]],["name/148-6",[]],["text/148-6",[]],["component/148-6",[]],["title/148-7",[26,26.774,308,27.045,767,46.175]],["name/148-7",[]],["text/148-7",[]],["component/148-7",[]],["title/148-8",[106,36.54,136,15.007,137,27.802,2374,43.502]],["name/148-8",[]],["text/148-8",[]],["component/148-8",[]],["title/148-9",[86,33.757,191,25.292,296,27.183]],["name/148-9",[]],["text/148-9",[]],["component/148-9",[]],["title/148-10",[144,24.886,547,25.024,673,28.61,2137,40.104]],["name/148-10",[]],["text/148-10",[]],["component/148-10",[]],["title/148-11",[296,31.597,745,37.762]],["name/148-11",[]],["text/148-11",[]],["component/148-11",[]],["title/148-12",[135,27.323,893,42.936,2375,53.736]],["name/148-12",[]],["text/148-12",[]],["component/148-12",[]],["title/148-13",[2313,74.57]],["name/148-13",[]],["text/148-13",[]],["component/148-13",[]],["title/148-14",[84,16.101,586,34.025,672,38.3,1255,24.418]],["name/148-14",[]],["text/148-14",[]],["component/148-14",[]],["title/148",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,1253,29.136]],["name/148",[2376,2.348]],["text/148",[0,0.824,3,0.664,4,0.906,5,0.669,7,0.4,8,1.676,10,1.159,13,0.957,14,0.674,17,0.662,26,2.965,29,1.542,31,0.876,33,1.481,45,1.308,57,2.221,71,0.845,77,0.911,79,0.728,84,2.032,86,1.486,88,0.886,90,1.312,101,1.4,102,0.88,106,1.017,110,1.337,111,1.587,112,2.859,113,0.689,117,1.622,118,1.605,126,1.152,128,0.916,134,0.581,135,1.643,136,1.621,137,3.004,139,3.045,143,0.876,144,2.411,155,1.438,160,0.868,161,0.622,163,1.991,172,0.689,178,0.834,180,0.97,186,0.852,189,1.635,191,1.114,196,0.678,214,2.14,224,0.799,231,1.105,236,0.691,247,3.377,249,0.845,251,0.788,252,3.31,263,1.912,264,3.071,268,1.003,277,0.796,292,1.572,296,3.011,300,1.075,301,1.618,308,1.99,313,0.983,316,0.776,319,1.652,335,1.679,340,0.97,349,0.852,354,2.36,355,1.04,356,0.856,357,2.76,361,1.341,375,1.04,386,0.897,401,1.803,402,0.889,429,1.085,440,2.523,446,0.811,465,1.229,476,2.284,487,1.277,514,1.033,517,0.942,518,1.993,520,1.128,525,0.721,545,1.085,547,1.256,552,2.545,556,1.749,577,2.332,580,0.931,586,0.947,624,2.806,665,2.055,670,0.86,672,2.625,673,3.091,679,0.646,680,0.815,681,1.075,686,1.137,698,2.569,723,0.62,744,1.095,745,0.793,752,0.818,767,1.128,841,1.024,867,1.057,889,0.964,893,1.891,938,2.183,939,1.443,943,1.066,945,1.443,946,1.443,947,1.246,948,1.339,951,2.414,967,0.996,1066,1.572,1076,0.758,1077,1.246,1150,0.86,1174,1.057,1253,3.514,1255,0.68,1289,1.312,1291,1.18,1400,0.86,1403,1.105,1416,0.983,1421,1.116,1533,1.166,1557,1.339,1558,1.652,1610,1.017,1611,1.085,1612,1.688,1650,1.152,1708,1.095,1754,1.152,1786,1.698,1818,1.14,1855,3.119,1942,1.796,1962,3.119,2042,1.075,2063,1.166,2066,1.403,2097,1.228,2137,1.116,2138,1.14,2152,1.403,2161,2.531,2310,1.211,2311,2.531,2313,2.366,2372,2.154,2373,1.266,2374,1.211,2375,2.366,2377,1.403,2378,1.552,2379,1.312,2380,2.799,2381,1.552,2382,1.552,2383,1.552,2384,1.552,2385,1.552,2386,1.552,2387,2.154,2388,1.552,2389,1.552,2390,1.552,2391,1.312,2392,1.552,2393,1.552,2394,1.552,2395,1.552,2396,1.552,2397,1.552]],["component/148",[7,0.401]],["title/149-1",[264,19.605,296,23.851,673,28.61,743,32.738]],["name/149-1",[]],["text/149-1",[]],["component/149-1",[]],["title/149-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/149-2",[]],["text/149-2",[]],["component/149-2",[]],["title/149-3",[136,15.007,144,24.886,319,24.098,401,26.302]],["name/149-3",[]],["text/149-3",[]],["component/149-3",[]],["title/149-4",[679,26.447,754,28.6,2306,48.309]],["name/149-4",[]],["text/149-4",[]],["component/149-4",[]],["title/149-5",[678,44.313,1291,56.153]],["name/149-5",[]],["text/149-5",[]],["component/149-5",[]],["title/149-6",[139,23.708,319,27.465,1005,22.733]],["name/149-6",[]],["text/149-6",[]],["component/149-6",[]],["title/149-7",[120,38.779,319,27.465,949,40.503]],["name/149-7",[]],["text/149-7",[]],["component/149-7",[]],["title/149-8",[0,33.757,139,23.708,1066,35.699]],["name/149-8",[]],["text/149-8",[]],["component/149-8",[]],["title/149-9",[136,15.007,139,20.802,319,24.098,1005,19.947]],["name/149-9",[]],["text/149-9",[]],["component/149-9",[]],["title/149-10",[40,19.348,871,38.977,1431,31.324,2398,43.502]],["name/149-10",[]],["text/149-10",[]],["component/149-10",[]],["title/149-11",[136,12.052,249,24.386,452,32.208,1005,16.019,1403,31.893,1483,21.255]],["name/149-11",[]],["text/149-11",[]],["component/149-11",[]],["title/149",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2060,30.503]],["name/149",[2399,2.348]],["text/149",[0,0.405,5,0.329,7,0.197,8,1.727,10,0.856,13,1.382,14,0.898,15,1.414,17,1.724,18,0.677,20,1.208,23,0.681,26,0.322,29,0.834,30,0.345,32,1.699,34,0.344,35,2.471,36,0.661,37,0.469,40,0.265,45,0.357,52,0.369,54,0.435,56,0.379,63,0.5,68,0.466,77,0.448,79,0.679,84,2.075,88,0.242,93,0.448,94,0.469,95,0.971,96,1.014,101,0.725,102,0.822,103,0.588,112,1.918,113,0.918,115,0.86,118,0.497,120,1.605,125,1.506,126,0.567,128,0.451,129,0.369,134,0.543,135,0.889,136,2.125,137,2.396,139,3.111,143,0.431,144,1.174,146,0.796,154,0.39,155,0.989,160,0.81,161,0.306,163,0.398,166,0.474,171,0.375,178,0.41,180,0.477,189,0.846,190,0.474,192,1.094,195,0.923,196,1.765,214,0.819,224,1.354,228,0.402,239,0.71,243,0.48,247,4.23,248,0.398,249,1.126,251,1.335,252,1.237,255,0.458,263,1.316,264,2.526,272,0.437,275,0.395,278,0.471,282,0.469,283,1.262,286,0.455,292,0.429,296,2.582,297,0.439,301,0.876,308,1.119,317,0.544,319,2.72,324,0.567,333,0.466,340,0.477,341,0.458,351,0.355,354,0.471,374,0.573,375,0.512,377,0.416,391,0.404,398,1.101,401,0.683,402,1.197,421,0.431,424,1.931,431,0.463,440,0.957,441,0.483,443,0.803,446,1.081,451,0.761,452,1.042,455,0.395,459,0.49,465,0.335,468,1.302,470,0.353,487,0.944,492,1.473,505,0.5,508,0.461,514,1.639,517,1.255,520,0.555,523,0.471,525,0.355,531,0.733,547,0.65,549,1.081,552,1.111,577,0.466,586,0.466,597,0.446,603,0.48,604,0.435,615,0.834,617,0.439,620,1.255,665,1.112,668,0.41,670,1.146,673,2.278,678,0.869,679,1.503,680,1.086,684,1.381,686,1.804,690,0.483,705,0.534,743,1.544,744,0.539,754,2.459,755,0.613,773,0.512,783,0.596,841,0.504,854,1.409,865,1.141,871,1.838,873,0.516,894,0.52,909,0.549,910,0.48,918,1.115,931,1.088,932,1.806,933,1.397,934,2.564,936,2.081,938,0.596,940,1.31,942,0.69,947,2.112,948,0.659,949,3.063,951,0.659,958,0.673,959,0.71,963,0.41,966,0.52,967,0.93,970,1.022,974,0.659,975,1.25,982,0.995,984,0.493,993,0.448,998,1.064,1005,2.824,1010,1.032,1017,1.022,1025,0.659,1033,0.549,1040,0.874,1056,1.182,1066,1.765,1076,1.285,1078,0.493,1086,0.673,1096,0.573,1112,1.146,1125,0.516,1126,0.549,1136,0.5,1138,1.042,1146,1.182,1252,0.659,1253,1.711,1277,1.553,1290,0.71,1291,1.101,1400,2.001,1403,1.032,1416,0.483,1431,2.7,1456,0.345,1473,0.995,1483,0.688,1499,1.053,1518,0.659,1520,0.516,1521,0.659,1531,0.659,1558,1.221,1559,1.022,1561,0.58,1578,0.588,1591,1.386,1597,0.71,1610,0.95,1611,1.013,1612,1.587,1631,1.203,1708,0.539,1772,0.58,1786,0.463,1818,1.519,1819,0.529,1849,0.613,1942,1.688,1945,1.763,1955,0.71,1969,0.659,1973,0.673,2054,0.469,2056,0.539,2060,4.111,2083,0.613,2109,0.596,2116,0.623,2118,0.645,2119,0.567,2137,0.549,2169,0.645,2194,1.088,2230,0.645,2258,0.69,2286,0.734,2296,0.561,2299,1.31,2301,1.13,2306,1.999,2309,0.555,2329,1.164,2352,0.588,2365,0.69,2372,0.588,2373,1.182,2377,0.69,2387,2.78,2391,0.645,2398,1.13,2400,0.763,2401,1.348,2402,0.763,2403,0.69,2404,0.763,2405,1.449,2406,0.645,2407,0.645,2408,1.25,2409,0.71,2410,0.763,2411,0.645,2412,1.182,2413,0.623,2414,0.69,2415,1.225,2416,0.763,2417,1.636,2418,1.182,2419,1.115,2420,0.763,2421,0.645,2422,2.543,2423,0.623,2424,0.69,2425,0.69,2426,0.69,2427,0.763,2428,0.763,2429,0.71,2430,0.763,2431,0.645,2432,0.645,2433,0.69,2434,0.69,2435,0.763,2436,0.763,2437,0.763,2438,0.69,2439,0.71,2440,1.449,2441,0.763,2442,0.763,2443,0.673,2444,0.69,2445,0.673,2446,0.763,2447,0.69,2448,0.596,2449,0.763,2450,0.763,2451,0.763,2452,1.278,2453,0.763,2454,0.763,2455,0.613,2456,0.763,2457,0.659,2458,0.763,2459,0.763,2460,0.763]],["component/149",[7,0.401]],["title/150-1",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/150-1",[]],["text/150-1",[]],["component/150-1",[]],["title/150-2",[136,17.103,144,28.362,401,29.976]],["name/150-2",[]],["text/150-2",[]],["component/150-2",[]],["title/150-3",[296,31.597,3225,71]],["name/150-3",[]],["text/150-3",[]],["component/150-3",[]],["title/150-4",[308,31.436,465,32.434]],["name/150-4",[]],["text/150-4",[]],["component/150-4",[]],["title/150-5",[3129,58.657]],["name/150-5",[]],["text/150-5",[]],["component/150-5",[]],["title/150-6",[96,31.151,754,28.6,3226,61.082]],["name/150-6",[]],["text/150-6",[]],["component/150-6",[]],["title/150-7",[1483,35.06,3227,71]],["name/150-7",[]],["text/150-7",[]],["component/150-7",[]],["title/150-8",[45,26.062,319,24.098,1448,44.118,2292,45.501]],["name/150-8",[]],["text/150-8",[]],["component/150-8",[]],["title/150-9",[402,17.184,1076,36.09]],["name/150-9",[]],["text/150-9",[]],["component/150-9",[]],["title/150-10",[402,10.417,452,32.208,547,20.098,1483,21.255,1612,27.015,1631,37.173]],["name/150-10",[]],["text/150-10",[]],["component/150-10",[]],["title/150-11",[1610,41.527,1611,28.498,1612,38.229,2306,30.991,3228,32.742]],["name/150-11",[]],["text/150-11",[]],["component/150-11",[]],["title/150",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2292,36.543]],["name/150",[3229,2.471]],["text/150",[5,0.505,7,0.302,8,1.271,13,0.401,17,0.5,19,1.886,24,0.655,26,2.098,29,1.218,31,0.661,32,0.91,45,0.548,54,0.668,68,0.715,71,1.643,77,0.688,79,0.549,84,1.585,86,1.996,88,0.685,92,0.732,94,1.329,95,0.785,96,2.16,105,0.94,112,1.783,117,1.281,118,1.512,121,0.677,122,0.805,125,0.561,128,0.691,134,1.65,136,1.6,139,1.857,142,0.646,144,1.966,146,2.064,148,0.407,155,2.391,158,0.641,161,0.469,163,1.128,165,0.798,178,1.164,180,0.732,189,1.264,191,1.201,195,0.747,196,0.512,214,1.196,224,0.603,247,4.417,248,1.572,251,1.531,252,1.419,263,1.88,264,2.09,267,0.695,268,1.399,275,1.119,277,0.601,279,0.554,280,0.551,282,0.719,286,1.292,292,0.658,296,1.607,301,1.278,308,2.863,316,1.083,319,2.152,349,1.189,350,0.668,354,1.863,357,1.278,361,1.037,377,1.643,401,0.553,402,1.478,404,0.972,406,0.41,421,0.661,440,1.429,443,0.649,446,1.132,447,1.126,452,2.703,455,2.278,465,3.103,470,0.541,487,0.535,502,1.741,505,0.768,513,0.972,517,0.711,520,0.851,523,0.723,525,0.544,547,1.354,549,0.613,552,1.861,567,1.557,580,0.703,586,0.715,644,0.991,665,0.63,670,0.649,673,2.554,675,3.42,677,0.752,679,2.8,680,0.615,682,0.635,684,1.136,690,0.742,697,1.313,698,1.189,712,0.768,723,0.865,727,1.033,731,1.739,735,0.792,740,2.462,741,1.936,742,0.843,744,2.129,745,1.107,754,1.691,772,0.732,774,0.812,775,0.914,790,0.671,850,0.851,859,0.742,865,1.194,867,0.798,889,0.728,900,0.785,918,0.902,919,1.033,936,0.927,963,0.63,966,0.798,967,0.752,970,2.129,972,1.155,982,1.487,984,1.95,985,1.38,1005,1.079,1008,0.668,1040,1.306,1064,2.24,1066,1.695,1076,1.474,1078,1.399,1089,0.86,1125,0.792,1136,0.768,1144,0.902,1174,0.798,1255,0.513,1287,0.779,1400,1.2,1448,0.927,1457,0.533,1483,2.605,1610,2.887,1611,2.109,1612,3.834,1622,0.914,1631,2.505,1682,0.927,1708,0.826,1730,2.423,1752,1.09,1754,0.87,1783,0.914,1786,0.711,1843,0.991,1942,1.389,1945,0.785,1974,1.059,2042,0.812,2054,0.719,2056,0.826,2060,1.475,2108,0.956,2132,1.011,2137,1.557,2194,1.626,2230,0.991,2292,3.595,2296,0.86,2306,0.891,2401,1.09,2412,0.956,2413,1.766,2417,1.713,2418,1.766,2419,1.667,2421,0.991,2422,1.362,2423,0.956,2445,1.91,2457,1.011,2469,1.172,2493,1.033,2512,1.09,2586,0.914,2713,1.09,3129,3.954,3225,1.126,3226,1.126,3227,1.126,3228,1.739,3230,1.233,3231,1.233,3232,1.233,3233,1.233,3234,1.011,3235,1.233,3236,1.233,3237,2.278,3238,1.126,3239,1.233,3240,1.233,3241,1.233,3242,1.233,3243,1.233,3244,1.126,3245,1.233,3246,1.126,3247,1.126,3248,1.233,3249,1.233,3250,1.233,3251,1.233,3252,1.233,3253,1.233,3254,1.233,3255,1.233,3256,1.233,3257,0.972,3258,1.059,3259,1.233,3260,1.126]],["component/150",[7,0.401]],["title/151-1",[236,39.251]],["name/151-1",[]],["text/151-1",[]],["component/151-1",[]],["title/151-2",[96,36.21,679,30.741]],["name/151-2",[]],["text/151-2",[]],["component/151-2",[]],["title/151-3",[679,30.741,949,47.08]],["name/151-3",[]],["text/151-3",[]],["component/151-3",[]],["title/151-4",[32,18.821,79,20.995,84,12.931,421,25.274,455,23.149,917,34.042]],["name/151-4",[]],["text/151-4",[]],["component/151-4",[]],["title/151-5",[351,40.973]],["name/151-5",[]],["text/151-5",[]],["component/151-5",[]],["title/151-6",[980,68.801]],["name/151-6",[]],["text/151-6",[]],["component/151-6",[]],["title/151-7",[36,33.721,1005,26.424]],["name/151-7",[]],["text/151-7",[]],["component/151-7",[]],["title/151-8",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/151-8",[]],["text/151-8",[]],["component/151-8",[]],["title/151-9",[155,18.684,183,20.773,308,21.139,465,21.81,593,24.597]],["name/151-9",[]],["text/151-9",[]],["component/151-9",[]],["title/151-10",[52,35.736,1137,55.481]],["name/151-10",[]],["text/151-10",[]],["component/151-10",[]],["title/151-11",[29,25.643,287,46.666,679,26.447]],["name/151-11",[]],["text/151-11",[]],["component/151-11",[]],["title/151-12",[754,39.689]],["name/151-12",[]],["text/151-12",[]],["component/151-12",[]],["title/151-13",[3244,84.764]],["name/151-13",[]],["text/151-13",[]],["component/151-13",[]],["title/151-14",[2352,67.892]],["name/151-14",[]],["text/151-14",[]],["component/151-14",[]],["title/151-15",[96,43.229]],["name/151-15",[]],["text/151-15",[]],["component/151-15",[]],["title/151-16",[3261,92.783]],["name/151-16",[]],["text/151-16",[]],["component/151-16",[]],["title/151-17",[3262,92.783]],["name/151-17",[]],["text/151-17",[]],["component/151-17",[]],["title/151-18",[96,43.229]],["name/151-18",[]],["text/151-18",[]],["component/151-18",[]],["title/151-19",[2411,74.57]],["name/151-19",[]],["text/151-19",[]],["component/151-19",[]],["title/151-20",[96,43.229]],["name/151-20",[]],["text/151-20",[]],["component/151-20",[]],["title/151-21",[2412,71.964]],["name/151-21",[]],["text/151-21",[]],["component/151-21",[]],["title/151-22",[96,43.229]],["name/151-22",[]],["text/151-22",[]],["component/151-22",[]],["title/151-23",[2461,84.764]],["name/151-23",[]],["text/151-23",[]],["component/151-23",[]],["title/151-24",[96,43.229]],["name/151-24",[]],["text/151-24",[]],["component/151-24",[]],["title/151-25",[2413,71.964]],["name/151-25",[]],["text/151-25",[]],["component/151-25",[]],["title/151-26",[3129,58.657]],["name/151-26",[]],["text/151-26",[]],["component/151-26",[]],["title/151-27",[86,46.845]],["name/151-27",[]],["text/151-27",[]],["component/151-27",[]],["title/151-28",[96,43.229]],["name/151-28",[]],["text/151-28",[]],["component/151-28",[]],["title/151-29",[0,23.788,86,23.788,308,19.058,597,26.157,2373,36.543,3129,29.786]],["name/151-29",[]],["text/151-29",[]],["component/151-29",[]],["title/151-30",[2414,79.747]],["name/151-30",[]],["text/151-30",[]],["component/151-30",[]],["title/151-31",[96,43.229]],["name/151-31",[]],["text/151-31",[]],["component/151-31",[]],["title/151-32",[3263,92.783]],["name/151-32",[]],["text/151-32",[]],["component/151-32",[]],["title/151-33",[96,43.229]],["name/151-33",[]],["text/151-33",[]],["component/151-33",[]],["title/151",[26,31.122,679,30.741]],["name/151",[26,0.554,679,0.547]],["text/151",[0,0.1,2,0.113,3,0.081,4,0.218,5,1.678,7,0.049,8,1.721,10,0.507,14,0.082,15,0.482,17,1.786,18,0.258,19,0.345,20,0.11,22,0.309,23,0.175,24,0.594,26,0.95,29,1.57,30,0.249,31,0.6,32,1.059,34,0.327,35,0.404,36,0.902,37,0.339,38,0.316,40,0.252,42,0.171,45,0.258,52,1.219,54,0.108,56,0.185,57,0.98,63,0.587,68,0.337,71,0.918,76,0.349,79,1.871,82,0.258,84,2.702,86,1.725,88,0.877,90,0.42,91,0.112,92,1.146,96,1.908,97,0.376,98,0.125,99,1.91,101,3.644,104,0.097,105,0.316,106,0.244,108,0.134,110,0.806,111,0.211,112,0.504,113,0.472,115,0.221,117,0.839,118,1.035,120,0.747,121,0.319,122,0.499,123,0.517,124,0.287,125,0.878,127,0.125,128,0.111,129,0.18,130,0.117,133,0.454,134,1.039,135,0.526,136,0.532,138,0.569,139,2.184,141,0.139,142,0.206,143,0.952,144,0.4,145,0.25,146,0.205,148,0.48,154,0.097,155,1.306,160,0.501,161,0.291,162,0.139,163,2.027,165,0.941,166,0.859,168,0.199,169,0.221,170,0.56,171,0.756,172,0.749,179,0.263,180,0.345,183,0.943,186,0.303,188,0.115,189,0.322,190,0.66,191,0.423,192,0.197,194,0.126,196,0.925,199,0.229,200,0.254,201,0.401,203,0.229,206,0.139,209,0.134,211,0.199,214,0.355,224,0.462,225,0.28,226,0.364,228,0.099,231,0.134,238,0.414,239,2.188,243,0.347,245,0.134,246,0.163,248,0.467,249,0.3,250,0.136,251,0.621,252,0.576,254,0.627,255,2.511,262,0.331,263,2.49,264,0.43,266,0.145,267,0.327,272,0.416,275,0.872,277,1.837,278,0.23,279,0.344,280,0.862,282,0.116,283,0.547,285,0.291,286,0.535,287,1.128,289,0.291,292,0.504,293,0.239,296,0.383,297,1.449,301,2.072,304,0.277,308,0.959,309,0.167,311,0.205,313,0.12,315,0.254,316,0.449,317,0.134,319,1.144,320,0.329,322,0.772,330,0.128,331,0.998,332,0.154,333,0.115,335,0.113,340,0.118,341,0.224,347,0.583,348,0.491,349,0.303,350,0.605,351,1.663,352,0.666,353,0.167,356,0.206,357,0.22,361,0.179,377,0.488,386,0.109,391,0.292,394,0.125,395,0.587,398,0.552,401,0.423,403,0.277,404,0.157,406,0.788,408,0.103,411,0.149,415,0.131,420,0.137,421,1.116,424,0.139,430,0.265,431,0.115,432,5.102,439,0.429,440,0.808,441,0.973,442,0.139,443,0.306,445,0.122,446,0.38,450,0.13,451,0.196,455,3.922,458,1.871,465,1.049,467,0.176,468,0.979,470,0.847,474,0.757,481,0.176,482,0.345,484,0.254,487,0.086,502,0.849,505,0.124,508,1.277,509,0.469,514,1.581,517,0.335,518,0.757,521,0.376,523,0.554,525,0.416,528,0.219,531,0.537,536,0.291,547,0.248,549,0.882,552,0.449,553,0.118,556,0.233,557,0.114,570,0.55,575,0.522,577,0.547,580,0.922,581,0.567,583,1.237,586,0.443,593,0.684,596,0.244,597,0.322,598,0.167,599,0.163,601,0.147,603,0.119,604,0.212,615,0.214,617,0.884,619,0.503,621,0.673,624,0.139,625,0.154,630,0.869,652,0.773,663,0.13,665,1.138,668,0.297,670,1.467,672,0.13,673,0.373,675,1.905,676,0.256,679,1.205,682,0.102,683,0.104,684,1.935,686,0.685,689,0.389,690,0.46,696,0.154,697,0.645,698,0.303,708,0.106,711,0.352,712,1.105,717,0.414,719,0.617,723,0.674,726,0.673,730,0.142,731,0.152,732,0.25,733,0.508,735,0.128,736,1.324,741,0.121,742,0.136,744,0.389,745,1.542,752,1.651,754,2.049,760,0.133,762,1.168,763,0.145,764,0.994,766,0.254,767,0.137,771,0.304,772,0.345,773,0.25,774,1.921,775,2.259,779,0.352,783,0.147,786,0.402,788,0.115,790,0.966,827,0.106,833,0.287,834,0.134,835,0.105,841,0.125,844,0.163,854,0.254,859,0.568,861,0.112,865,0.495,867,0.495,871,0.743,873,0.373,889,0.117,893,0.128,894,0.611,896,0.701,897,0.167,900,1.03,904,0.147,907,0.666,908,0.176,909,0.268,910,0.119,913,0.304,917,0.552,918,1.298,920,0.575,921,0.443,924,0.149,925,0.149,926,0.154,927,0.147,928,0.304,929,0.144,930,0.14,931,0.142,932,0.616,933,0.128,934,0.304,936,0.437,938,0.147,943,0.499,949,1.349,950,0.309,955,0.347,956,0.176,960,0.176,961,1.239,962,0.593,963,0.297,964,0.575,965,0.834,966,0.254,967,0.785,968,0.104,969,0.176,970,0.263,971,0.176,972,0.199,973,0.559,974,0.322,975,0.773,976,0.583,977,0.176,978,0.167,979,0.176,981,0.154,982,0.13,983,0.142,984,0.579,985,0.238,987,0.988,988,0.176,989,0.322,990,0.152,991,0.154,993,0.111,994,0.163,995,0.163,996,0.163,997,0.163,998,0.405,999,0.163,1000,0.163,1001,0.147,1002,0.163,1003,0.163,1004,0.133,1005,0.55,1006,1.455,1007,0.163,1008,1.045,1009,0.163,1010,0.517,1011,0.147,1012,0.145,1013,0.147,1014,0.322,1015,0.437,1017,0.512,1018,0.163,1019,0.154,1020,0.347,1021,0.322,1022,0.709,1023,0.347,1024,0.295,1025,0.163,1026,0.176,1027,0.176,1028,0.176,1029,0.176,1031,0.14,1032,0.176,1033,1.105,1034,0.513,1035,0.176,1036,0.176,1037,0.176,1038,0.176,1039,0.176,1040,0.114,1041,0.176,1042,0.176,1043,0.176,1044,0.176,1045,0.163,1046,0.167,1047,0.999,1048,1.11,1049,0.157,1051,0.176,1052,0.176,1053,0.508,1054,0.176,1055,0.176,1056,0.154,1059,0.176,1061,0.163,1062,0.136,1063,0.322,1064,0.14,1066,1.266,1068,0.268,1069,0.176,1070,0.171,1071,0.176,1072,0.176,1073,0.152,1074,0.154,1075,0.112,1076,0.182,1077,0.299,1078,0.241,1079,0.72,1080,0.176,1082,0.154,1083,0.283,1087,0.14,1088,0.322,1089,0.274,1090,0.382,1091,0.112,1092,0.126,1093,0.329,1094,0.329,1095,0.309,1098,0.167,1103,0.329,1105,0.167,1106,0.299,1107,0.207,1108,0.271,1109,0.136,1110,0.131,1111,0.167,1112,0.149,1113,0.181,1126,0.136,1127,0.14,1134,0.283,1137,0.142,1141,0.283,1146,0.154,1150,0.207,1155,0.28,1158,0.14,1166,0.154,1168,0.145,1195,0.117,1196,0.309,1211,0.252,1219,0.621,1249,0.154,1250,0.142,1253,0.123,1258,0.167,1280,0.16,1285,0.283,1288,0.347,1291,0.144,1293,0.171,1295,0.147,1308,0.145,1312,0.181,1361,0.458,1389,0.458,1400,0.306,1416,0.46,1417,0.167,1447,0.322,1451,0.154,1477,0.109,1483,1.257,1508,0.419,1513,0.139,1515,0.147,1519,0.299,1520,0.252,1529,0.152,1533,0.28,1647,0.131,1650,0.41,1682,0.149,1730,0.853,1750,0.147,1880,0.304,1946,0.309,1947,0.157,1948,0.16,1950,0.274,1961,0.16,1970,0.167,1981,0.167,1982,0.167,1983,0.167,1984,0.167,1986,0.167,1987,0.487,1988,0.167,1989,0.487,1990,0.167,1991,0.487,1992,0.16,1993,0.487,1994,0.167,1995,0.458,1996,0.152,1997,0.181,1998,0.181,1999,0.167,2003,0.16,2007,0.171,2016,0.133,2042,0.382,2045,0.147,2054,0.116,2056,0.512,2060,0.376,2071,0.171,2093,1.056,2094,0.171,2108,0.45,2112,0.337,2119,0.14,2137,0.397,2138,1.239,2164,0.163,2173,0.322,2177,0.191,2194,0.546,2229,0.181,2230,0.16,2237,2.278,2240,0.147,2256,1.035,2296,0.274,2304,1.488,2308,0.337,2309,0.271,2310,0.291,2328,0.171,2329,0.983,2348,0.152,2352,0.425,2372,0.145,2375,0.16,2387,0.145,2391,0.16,2403,0.171,2411,0.16,2412,0.304,2413,0.304,2415,0.315,2417,0.295,2418,0.154,2419,0.145,2421,0.16,2422,0.234,2423,0.304,2424,0.337,2425,0.337,2426,0.171,2431,0.467,2432,0.315,2433,0.171,2434,0.337,2438,0.171,2439,0.176,2448,0.147,2452,0.167,2457,0.322,2463,0.726,2464,0.337,2465,0.337,2468,0.157,2472,0.373,2473,0.373,2474,0.189,2475,0.373,2476,0.189,2477,0.144,2478,0.322,2479,0.16,2480,0.373,2481,0.189,2482,0.189,2483,0.189,2484,0.171,2485,0.176,2486,0.189,2487,0.189,2488,0.337,2489,0.171,2491,0.189,2492,0.189,2493,0.167,2494,0.347,2495,0.322,2496,0.373,2497,0.189,2498,0.189,2499,0.189,2500,0.189,2501,0.171,2502,0.171,2503,0.16,2504,0.189,2505,0.189,2506,0.189,2507,0.171,2508,0.373,2509,0.373,2510,0.373,2511,1.525,2512,1.285,2513,0.373,2514,0.337,2515,0.373,2516,0.189,2517,0.373,2518,0.171,2519,0.189,2520,0.189,2521,0.189,2522,0.189,2523,0.552,2524,0.726,2525,0.189,2526,0.189,2527,0.189,2528,0.337,2529,0.189,2530,0.189,2531,0.552,2532,0.189,2533,0.552,2534,0.373,2535,0.189,2536,0.189,2537,0.189,2538,0.189,2539,0.373,2540,1.224,2541,0.189,2542,0.189,2543,0.189,2544,0.189,2545,0.347,2546,0.189,2547,0.189,2548,0.176,2549,0.189,2550,0.189,2551,0.189,2552,0.16,2553,0.189,2554,0.189,2555,0.189,2556,0.189,2557,0.189,2558,0.171,2559,0.176,2560,0.189,2561,0.373,2562,0.154,2563,0.347,2564,0.189,2565,0.726,2566,1.761,2567,1.536,2568,0.552,2569,0.896,2570,0.189,2571,0.189,2572,0.347,2573,0.189,2574,0.961,2575,0.189,2577,0.189,2578,0.189,2579,0.189,2580,0.171,2583,0.373,2584,0.373,2585,0.189,2587,0.157,2588,0.167,2589,0.171,2590,0.189,2591,0.373,2592,0.347,2593,0.176,2594,0.373,2595,0.171,2596,0.176,2597,0.189,2598,0.171,2599,0.189,2600,0.189,2601,0.189,2602,0.189,2603,0.189,2604,0.189,2605,0.189,2606,0.189,2607,0.189,2608,0.189,2609,0.189,2610,0.329,2611,0.373,2612,0.189,2613,0.16,2614,0.189,2615,0.189,2616,0.189,2617,0.189,2619,0.258,2621,0.167,2622,0.189,2663,0.163,2673,0.149,2788,0.176,2803,0.176,2874,0.176,3043,0.28,3129,1.761,3135,1.234,3206,0.157,3208,1.177,3210,0.181,3246,0.181,3264,0.392,3265,0.181,3266,0.181,3267,0.199,3268,0.199,3269,0.199,3270,0.199,3271,0.392,3272,0.392,3273,0.199,3274,0.199,3275,0.199,3276,0.199,3277,0.199,3278,0.392,3279,0.392,3280,1.118,3281,0.581,3282,0.581,3283,0.581,3284,0.199,3285,0.392,3286,0.392,3287,0.163,3288,0.392,3289,0.199,3290,0.392,3291,0.199,3292,0.764,3293,0.392,3294,0.199,3295,0.199,3296,0.199,3297,0.199,3298,0.199,3299,0.199,3300,0.199,3301,0.214,3302,0.199,3303,0.199,3304,0.199,3305,0.764,3306,0.199,3307,0.199,3308,0.199,3309,1.774,3310,0.199,3311,0.358,3312,0.392,3313,0.392,3314,0.199,3315,0.392,3316,0.199,3317,0.199,3318,0.199,3319,0.392,3320,0.392,3321,0.199,3322,0.199,3323,0.199,3324,0.199,3325,0.199,3326,0.199,3327,0.392,3328,0.199,3329,0.199,3330,0.199,3331,0.199,3332,0.199,3333,0.199,3334,0.392,3335,0.199,3336,0.199,3337,0.199,3338,0.199,3339,0.199,3340,0.199,3341,0.199,3342,0.199,3343,0.581,3344,0.199,3345,0.199,3346,0.199,3347,0.199,3348,0.199,3349,0.392,3350,0.199,3351,0.199,3352,0.199,3353,0.199,3354,0.392]],["component/151",[7,0.401]],["title/152-1",[923,82.026]],["name/152-1",[]],["text/152-1",[]],["component/152-1",[]],["title/152",[136,17.103,144,28.362,401,29.976]],["name/152",[631,1.45]],["text/152",[6,3.272,7,1.085,8,2.024,13,1.438,18,1.966,24,2.352,26,2.736,34,2.922,71,2.291,105,1.828,113,1.867,118,1.444,129,2.035,134,2.97,136,1.748,144,3.539,145,2.82,168,2.244,214,1.667,252,1.978,263,2.105,275,2.175,300,2.915,401,3.063,402,1.845,415,2.915,470,2.999,514,2.398,523,2.598,552,1.777,597,2.457,676,2.89,679,4.866,686,1.709,688,3.433,705,2.941,790,2.409,835,2.342,924,3.329,925,3.329,926,3.433,927,3.282,928,3.433,929,3.198,930,3.124,931,3.16,966,2.866,968,2.321,984,4.195,1031,3.124,1040,2.538,1116,3.913,1117,3.913,1118,5.728,1119,3.63,1120,3.913,1121,3.913,1122,3.239,1123,3.089,1124,3.913,1125,2.842,1126,3.026,1127,3.124,1136,4.255,1310,3.282,1483,1.997,1950,3.089,2018,3.026,2329,3.379,2406,3.557,2407,3.557,2623,4.207]],["component/152",[7,0.401]],["title/153-1",[86,33.757,343,46.175,1008,36.208]],["name/153-1",[]],["text/153-1",[]],["component/153-1",[]],["title/153-2",[236,39.251]],["name/153-2",[]],["text/153-2",[]],["component/153-2",[]],["title/153-3",[331,40.225,341,44.313]],["name/153-3",[]],["text/153-3",[]],["component/153-3",[]],["title/153-4",[3355,79.747]],["name/153-4",[]],["text/153-4",[]],["component/153-4",[]],["title/153-5",[3356,84.764]],["name/153-5",[]],["text/153-5",[]],["component/153-5",[]],["title/153-6",[3357,79.747]],["name/153-6",[]],["text/153-6",[]],["component/153-6",[]],["title/153-7",[3358,79.747]],["name/153-7",[]],["text/153-7",[]],["component/153-7",[]],["title/153-8",[3359,79.747]],["name/153-8",[]],["text/153-8",[]],["component/153-8",[]],["title/153-9",[3360,84.764]],["name/153-9",[]],["text/153-9",[]],["component/153-9",[]],["title/153-10",[3361,76.088]],["name/153-10",[]],["text/153-10",[]],["component/153-10",[]],["title/153-11",[191,29.399,3361,63.732]],["name/153-11",[]],["text/153-11",[]],["component/153-11",[]],["title/153-12",[3362,84.764]],["name/153-12",[]],["text/153-12",[]],["component/153-12",[]],["title/153-13",[3363,79.747]],["name/153-13",[]],["text/153-13",[]],["component/153-13",[]],["title/153-14",[3364,79.747]],["name/153-14",[]],["text/153-14",[]],["component/153-14",[]],["title/153-15",[301,31.278,3365,71]],["name/153-15",[]],["text/153-15",[]],["component/153-15",[]],["title/153-16",[191,29.399,3363,66.798]],["name/153-16",[]],["text/153-16",[]],["component/153-16",[]],["title/153-17",[1554,62.461,3366,71]],["name/153-17",[]],["text/153-17",[]],["component/153-17",[]],["title/153",[86,29.619,155,20.975,465,24.483,1008,31.77]],["name/153",[1008,1.338]],["text/153",[0,0.365,4,1.939,7,0.742,8,1.138,12,1.01,13,0.235,15,0.369,17,3.841,23,0.323,24,0.733,26,3.408,29,0.529,31,1.624,33,0.994,34,0.309,40,0.238,63,0.45,71,0.713,76,1.189,84,1.84,86,1.274,90,0.322,101,3.396,104,0.675,105,2.67,110,0.328,111,0.389,113,1.065,117,0.797,118,1.642,121,1.086,125,1.967,129,2.464,130,0.814,133,0.429,134,0.257,138,0.873,139,0.701,143,2.702,144,0.306,145,0.46,148,0.652,150,0.3,154,0.351,155,1.402,160,0.733,161,0.275,167,0.581,168,0.699,172,0.582,183,0.287,189,1.401,191,2.702,192,0.693,195,0.438,199,0.421,206,1.762,214,0.519,215,2.091,224,0.675,248,1.25,249,0.374,251,0.348,255,0.412,262,1.127,263,0.344,264,1.31,265,1.302,272,0.393,277,5.234,278,0.424,283,0.799,286,2.66,292,0.386,296,0.294,301,2.956,308,1.412,311,0.72,317,0.489,319,1.434,322,2.708,331,0.374,335,0.412,341,0.412,348,0.464,350,0.746,351,2.626,357,1.416,361,1.59,375,0.46,377,1.306,386,0.758,391,1.522,396,0.621,401,0.618,402,0.772,403,0.51,405,0.621,406,1.559,420,0.499,441,0.435,442,0.504,443,0.726,445,0.444,460,0.305,465,1.264,470,1.533,475,1.699,484,0.468,492,1.338,510,1.259,514,0.484,523,0.809,525,0.319,528,0.769,531,0.662,547,1.077,549,0.685,577,0.799,580,0.412,596,0.45,597,0.401,617,0.395,621,1.411,640,0.57,665,0.704,672,0.472,675,0.472,679,1.551,697,0.795,698,0.72,733,0.916,735,3.012,744,1.325,754,0.309,768,0.996,779,0.438,785,0.606,786,2.47,841,0.865,859,1.189,861,0.407,862,0.516,865,0.379,867,0.892,890,1.859,910,0.824,943,1.648,961,1.38,963,0.369,968,0.379,970,0.924,972,1.535,978,1.156,984,0.444,985,0.438,993,1.103,1008,5.778,1010,0.933,1011,0.536,1017,0.924,1031,0.51,1047,0.56,1053,0.916,1064,0.51,1066,0.386,1076,1.406,1099,5.138,1128,0.765,1129,0.675,1132,0.903,1133,1.929,1136,0.859,1139,0.9,1145,1.153,1195,0.424,1200,0.56,1219,1.994,1279,3.408,1280,0.581,1400,1.33,1456,0.311,1477,0.395,1483,0.326,1551,0.476,1554,1.589,1609,0.432,1612,0.414,1659,0.551,1786,0.795,1796,0.606,1852,0.933,1945,1.259,1948,1.108,2054,0.804,2067,0.606,2076,0.48,2096,1.185,2097,0.543,2138,1.762,2150,0.606,2177,2.287,2249,2.232,2281,0.639,2374,0.536,2419,1.446,2452,0.606,2468,3.094,2562,1.533,2619,1.302,2621,1.156,2636,2.491,2662,0.639,2684,0.606,2685,0.606,2756,1.219,2847,0.606,2890,0.606,3043,0.516,3129,3.184,3132,1.185,3135,1.509,3206,0.57,3247,0.66,3287,0.592,3355,2.17,3356,0.66,3357,0.621,3358,0.621,3359,1.185,3360,0.66,3361,1.621,3362,0.66,3363,1.185,3364,0.621,3365,0.66,3366,0.66,3367,0.722,3368,0.722,3369,1.378,3370,2.863,3371,1.378,3372,1.378,3373,0.722,3374,0.722,3375,0.722,3376,1.259,3377,1.31,3378,1.259,3379,1.185,3380,1.806,3381,4.32,3382,0.933,3383,1.378,3384,0.722,3385,0.66,3386,0.66,3387,1.259,3388,0.66,3389,0.66,3390,0.66,3391,0.621,3392,2.766,3393,1.259,3394,0.66,3395,1.378,3396,0.66,3397,0.66,3398,1.259,3399,0.621,3400,0.621,3401,0.722,3402,1.259,3403,0.722,3404,0.722,3405,0.66,3406,1.259,3407,0.66,3408,0.66,3409,0.66,3410,0.722,3411,0.722,3412,0.722,3413,0.592]],["component/153",[7,0.401]],["title/154-1",[236,39.251]],["name/154-1",[]],["text/154-1",[]],["component/154-1",[]],["title/154-2",[88,27.909]],["name/154-2",[]],["text/154-2",[]],["component/154-2",[]],["title/154-3",[30,28.681,466,37.709,2624,47.184]],["name/154-3",[]],["text/154-3",[]],["component/154-3",[]],["title/154-4",[134,23.806,264,22.343,361,30.449]],["name/154-4",[]],["text/154-4",[]],["component/154-4",[]],["title/154-5",[134,20.888,264,19.605,361,26.717,3413,48.109]],["name/154-5",[]],["text/154-5",[]],["component/154-5",[]],["title/154-6",[134,18.607,264,17.464,361,23.8,547,22.292,3258,44.917]],["name/154-6",[]],["text/154-6",[]],["component/154-6",[]],["title/154-7",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/154-7",[]],["text/154-7",[]],["component/154-7",[]],["title/154-8",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/154-8",[]],["text/154-8",[]],["component/154-8",[]],["title/154-9",[134,16.775,264,15.745,361,21.457,401,21.124,745,22.893,2817,39.504]],["name/154-9",[]],["text/154-9",[]],["component/154-9",[]],["title/154-10",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/154-10",[]],["text/154-10",[]],["component/154-10",[]],["title/154-11",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/154-11",[]],["text/154-11",[]],["component/154-11",[]],["title/154-12",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/154-12",[]],["text/154-12",[]],["component/154-12",[]],["title/154-13",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/154-13",[]],["text/154-13",[]],["component/154-13",[]],["title/154-14",[134,23.806,466,37.709,2627,51.038]],["name/154-14",[]],["text/154-14",[]],["component/154-14",[]],["title/154-15",[26,26.774,1772,48.309,2628,57.467]],["name/154-15",[]],["text/154-15",[]],["component/154-15",[]],["title/154-16",[859,40.238,1279,40.238,2629,57.467]],["name/154-16",[]],["text/154-16",[]],["component/154-16",[]],["title/154-17",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/154-17",[]],["text/154-17",[]],["component/154-17",[]],["title/154-18",[63,48.407,1513,54.244]],["name/154-18",[]],["text/154-18",[]],["component/154-18",[]],["title/154-19",[54,42.087,2631,66.798]],["name/154-19",[]],["text/154-19",[]],["component/154-19",[]],["title/154-20",[32,31.045,2309,53.672]],["name/154-20",[]],["text/154-20",[]],["component/154-20",[]],["title/154-21",[32,26.708,745,32.486,2309,46.175]],["name/154-21",[]],["text/154-21",[]],["component/154-21",[]],["title/154-22",[183,26.577,593,31.469,1079,51.038]],["name/154-22",[]],["text/154-22",[]],["component/154-22",[]],["title/154-23",[470,34.116,1846,56.153]],["name/154-23",[]],["text/154-23",[]],["component/154-23",[]],["title/154-24",[32,37.063]],["name/154-24",[]],["text/154-24",[]],["component/154-24",[]],["title/154-25",[36,25.454,88,17.646,129,26.976,470,25.753]],["name/154-25",[]],["text/154-25",[]],["component/154-25",[]],["title/154-26",[581,57.629,2610,65.163]],["name/154-26",[]],["text/154-26",[]],["component/154-26",[]],["title/154-27",[2632,88.192]],["name/154-27",[]],["text/154-27",[]],["component/154-27",[]],["title/154-28",[36,25.454,338,42.927,470,25.753,1846,42.387]],["name/154-28",[]],["text/154-28",[]],["component/154-28",[]],["title/154-29",[88,20.111,155,23.905,1040,38.337]],["name/154-29",[]],["text/154-29",[]],["component/154-29",[]],["title/154-30",[1255,32.348,1457,33.624]],["name/154-30",[]],["text/154-30",[]],["component/154-30",[]],["title/154",[679,30.741,1136,48.407]],["name/154",[679,0.547,1136,0.862]],["text/154",[0,0.954,2,0.173,3,0.671,4,0.634,5,0.574,6,0.284,7,0.214,8,0.768,10,0.744,13,0.098,15,0.155,17,0.86,18,0.507,19,0.18,23,0.626,24,1.579,26,2.292,29,1.14,30,0.811,31,0.318,32,2.811,34,0.599,35,0.16,36,0.379,38,0.165,40,0.288,45,0.135,52,0.401,54,1.5,57,0.631,65,0.198,68,0.344,71,0.854,79,0.842,84,1.398,86,0.3,88,1.532,91,0.335,92,1.123,93,0.169,94,0.509,96,0.141,98,0.19,101,1.218,102,0.163,105,0.125,110,0.137,111,0.163,112,0.853,113,0.696,115,0.492,117,1.765,118,1.617,120,0.176,121,0.166,122,0.198,125,1.528,127,0.548,129,2.011,133,1.261,134,2.68,135,0.243,136,0.709,138,0.134,139,0.752,141,3.053,143,2.66,144,0.484,146,0.31,147,0.19,148,0.623,153,0.222,154,0.555,155,1.618,158,0.157,160,0.744,161,1.206,163,0.565,165,0.196,166,1.385,167,0.243,168,0.153,169,0.644,170,0.519,171,0.771,172,0.797,178,0.155,180,1.393,183,0.843,186,0.31,188,0.506,190,0.179,191,1.876,192,0.152,195,0.529,196,1.543,199,0.509,200,0.384,201,0.41,205,0.231,206,0.211,214,1.119,215,1.465,221,0.199,224,0.559,228,0.152,231,0.205,238,0.623,239,0.407,240,0.216,242,0.216,243,0.181,246,0.716,247,0.353,248,2.088,249,1.214,250,0.597,251,0.421,252,0.39,253,0.196,255,0.498,262,0.173,263,1.506,264,1.355,265,0.391,267,0.171,268,0.364,271,0.878,272,0.165,275,0.688,277,1.544,278,0.178,279,0.742,280,0.626,282,0.346,283,0.176,286,0.337,287,0.211,288,0.468,289,0.225,292,0.748,293,0.185,296,0.953,297,0.477,301,1.822,308,0.667,311,0.731,313,0.525,316,0.785,319,1.379,328,0.225,330,0.194,333,0.506,335,0.941,340,0.832,345,0.468,347,0.453,348,0.194,350,0.164,351,1.036,354,0.512,355,0.378,357,0.333,360,1.012,361,1.92,374,0.216,375,0.193,377,1.214,378,0.402,379,0.239,386,0.77,393,0.277,394,0.19,395,0.37,397,0.228,401,1.42,402,0.365,406,1.553,412,0.398,413,0.248,421,0.162,428,0.689,429,0.201,430,0.205,431,0.175,432,0.666,440,0.19,441,1.411,443,0.738,446,0.15,451,0.436,452,0.207,455,2.568,460,0.368,461,0.239,464,0.364,465,0.789,466,0.492,468,0.142,470,3.493,480,0.487,482,0.18,502,1.033,505,0.544,508,0.174,509,0.536,513,0.239,514,0.745,516,0.248,517,0.342,523,0.968,525,0.134,528,0.169,531,0.549,542,0.268,547,1,549,0.434,553,0.18,557,0.174,577,0.344,580,1.21,581,0.647,583,0.329,586,0.344,590,0.228,591,0.936,593,0.776,596,0.37,597,0.634,603,0.181,604,0.164,608,0.154,615,0.166,617,0.477,619,1.397,620,0.658,630,1.13,636,0.248,637,0.46,640,0.239,641,0.487,649,0.231,660,0.26,662,0.243,665,0.446,668,0.716,670,2.952,673,1.544,674,0.384,675,0.387,679,2.64,682,0.85,683,0.159,684,1.674,686,0.989,694,0.35,696,0.46,697,1.09,698,0.31,708,0.315,711,0.183,712,1.177,716,0.689,719,0.631,723,0.226,732,0.378,734,0.209,745,0.68,752,0.297,754,0.373,760,0.203,768,0.219,772,0.519,774,0.199,779,0.36,786,1.565,788,0.506,790,1.028,827,0.162,834,0.205,841,0.716,850,0.209,853,0.239,859,0.182,861,0.335,865,1.343,889,0.515,893,0.381,894,0.196,900,1.352,903,0.168,910,0.522,913,0.235,929,0.219,930,0.214,932,0.198,937,0.196,938,0.44,943,1.234,963,0.584,964,3.931,966,0.739,967,0.532,968,0.458,972,0.71,982,0.57,983,0.216,984,0.364,985,0.692,990,0.231,991,0.235,993,0.331,998,0.797,1005,0.202,1008,0.618,1017,0.939,1019,0.886,1022,1.053,1033,3.662,1040,0.803,1045,0.248,1053,0.58,1066,1.792,1074,0.235,1076,0.276,1077,0.231,1079,0.453,1082,0.235,1091,0.171,1097,1.573,1101,1.674,1108,0.41,1109,0.406,1110,0.752,1112,0.228,1125,0.194,1126,0.207,1128,0.168,1129,0.148,1130,0.529,1135,0.235,1136,3.491,1155,0.216,1169,0.41,1211,0.194,1213,0.205,1219,0.391,1255,0.247,1282,2.524,1284,0.231,1285,0.219,1287,0.191,1294,0.248,1295,0.225,1308,0.222,1310,0.225,1311,0.268,1321,0.248,1348,1.302,1356,0.254,1398,0.254,1399,1.624,1403,0.205,1416,0.182,1451,0.886,1457,0.257,1463,0.487,1477,0.477,1483,0.744,1499,0.209,1508,0.429,1513,0.797,1520,0.194,1554,0.477,1556,0.185,1609,0.181,1612,0.174,1620,0.394,1625,0.216,1640,0.205,1643,0.656,1647,0.391,1650,0.214,1681,0.26,1682,0.228,1727,0.207,1759,0.167,1772,0.825,1779,0.216,1784,0.243,1786,0.175,1846,3.27,1852,0.402,1942,0.696,1945,0.193,1950,0.414,1963,1.55,1992,0.477,1995,0.239,2003,0.243,2009,0.254,2016,0.398,2018,0.597,2042,0.752,2054,0.962,2056,0.203,2076,0.201,2092,0.235,2109,0.225,2116,0.46,2118,0.243,2132,0.248,2148,0.26,2225,0.254,2238,1.043,2240,0.225,2256,0.918,2257,0.254,2260,0.26,2292,0.235,2294,0.26,2300,0.254,2306,0.219,2307,0.268,2309,2.444,2310,0.44,2336,0.446,2363,0.26,2370,0.248,2371,0.26,2379,0.477,2407,0.477,2417,0.228,2418,0.235,2419,0.222,2447,0.26,2448,0.647,2484,0.26,2495,0.248,2501,0.26,2502,0.26,2503,0.243,2507,0.26,2528,0.26,2552,0.243,2572,0.525,2580,0.26,2586,0.44,2587,0.239,2589,0.26,2595,0.26,2598,0.26,2610,0.498,2619,0.575,2625,1.334,2626,0.835,2627,0.231,2628,0.75,2630,0.453,2631,0.75,2633,0.51,2634,0.235,2635,1.624,2636,2.041,2637,2.201,2638,0.981,2639,0.75,2641,0.26,2642,0.179,2643,0.26,2644,0.26,2645,0.981,2646,0.453,2647,0.248,2648,0.26,2649,0.26,2650,0.26,2651,0.26,2652,0.51,2653,0.26,2654,0.51,2655,0.26,2656,0.26,2657,0.26,2658,0.239,2659,0.288,2660,0.288,2661,0.564,2662,0.268,2663,0.487,2664,0.26,2665,0.26,2666,0.26,2667,0.26,2668,4.969,2669,0.288,2670,0.288,2671,0.288,2672,0.564,2673,1.421,2674,0.564,2675,0.288,2676,0.288,2677,0.288,2678,0.288,2679,0.542,2680,0.288,2681,0.288,2682,0.268,2683,1.085,2684,0.254,2685,0.254,2686,0.288,2687,0.26,2688,0.83,2689,0.83,2690,0.288,2691,0.288,2692,2.017,2693,0.564,2694,0.772,2695,0.288,2696,0.288,2697,0.564,2698,0.564,2699,0.564,2700,0.564,2701,0.288,2702,0.288,2703,0.288,2704,0.288,2705,0.288,2706,0.564,2707,0.288,2708,0.288,2709,0.288,2710,0.288,2713,0.525,2714,0.288,2715,0.288,2716,0.26,2717,0.288,2718,0.288,2719,0.288,2720,0.288,2721,0.288,2722,0.83,2723,1.085,2724,0.83,2725,1.796,2726,0.564,2727,0.564,2728,0.288,2729,0.83,2730,0.83,2731,1.085,2732,0.288,2733,0.83,2734,0.26,2735,0.288,2736,0.243,2737,0.288,2738,0.288,2739,0.26,2740,0.288,2741,0.288,2742,0.288,2743,0.288,2744,0.288,2745,0.288,2746,0.288,2747,0.288,2748,0.564,2749,0.288,2750,0.564,2751,0.288,2752,0.288,2753,0.288,2754,0.288,2755,0.288,2756,0.268,3238,0.277,3257,0.239,3258,0.51,3413,0.248,3414,0.303,3415,0.594,3416,0.231,3417,0.288,3418,0.303,3419,0.303,3420,0.303,3421,0.303,3422,0.303,3423,0.303,3424,0.303,3425,0.873,3426,0.303,3427,0.873,3428,0.303,3429,0.873,3430,0.303]],["component/154",[7,0.401]],["title/155-1",[236,39.251]],["name/155-1",[]],["text/155-1",[]],["component/155-1",[]],["title/155-2",[96,36.21,679,30.741]],["name/155-2",[]],["text/155-2",[]],["component/155-2",[]],["title/155-3",[679,30.741,949,47.08]],["name/155-3",[]],["text/155-3",[]],["component/155-3",[]],["title/155-4",[980,68.801]],["name/155-4",[]],["text/155-4",[]],["component/155-4",[]],["title/155-5",[36,33.721,1005,26.424]],["name/155-5",[]],["text/155-5",[]],["component/155-5",[]],["title/155-6",[754,39.689]],["name/155-6",[]],["text/155-6",[]],["component/155-6",[]],["title/155-7",[2757,79.747]],["name/155-7",[]],["text/155-7",[]],["component/155-7",[]],["title/155-8",[2758,79.747]],["name/155-8",[]],["text/155-8",[]],["component/155-8",[]],["title/155-9",[2759,79.747]],["name/155-9",[]],["text/155-9",[]],["component/155-9",[]],["title/155-10",[2760,79.747]],["name/155-10",[]],["text/155-10",[]],["component/155-10",[]],["title/155-11",[2761,88.192]],["name/155-11",[]],["text/155-11",[]],["component/155-11",[]],["title/155",[402,17.184,679,30.741]],["name/155",[402,0.306,679,0.547]],["text/155",[5,3.213,8,2.229,13,0.28,14,0.356,17,3.002,19,0.513,23,0.386,24,1.234,26,2.275,29,0.626,31,0.463,34,0.369,36,1.947,45,0.383,52,0.397,68,0.5,71,0.845,76,0.519,79,1.034,84,2.849,86,0.824,88,1.209,96,3.217,99,3.175,101,4.083,105,0.356,111,1.251,115,0.487,117,1.187,118,0.532,120,1.346,127,0.541,129,0.397,134,0.826,136,0.897,139,2.135,142,0.856,143,0.875,144,0.985,146,0.852,148,0.285,154,0.793,155,1.253,161,0.329,163,0.427,166,0.963,168,0.437,171,1.085,172,0.364,178,0.441,186,0.852,190,0.963,192,2.021,196,0.358,199,0.503,214,0.325,224,0.422,228,0.432,241,1.287,245,1.105,248,2.222,249,0.447,251,0.787,252,1.567,263,1.399,264,1.172,266,0.631,275,0.802,277,3.367,280,0.386,282,0.503,283,0.5,292,0.461,296,0.663,301,1.184,319,0.953,331,2.08,341,0.93,351,0.381,357,1.302,375,2.859,377,1.201,394,0.541,395,0.537,401,0.732,402,0.992,406,1.491,408,0.449,415,0.568,421,0.875,424,0.602,442,0.602,445,1.807,451,0.431,465,1.228,508,2.01,509,1.807,514,2.598,521,0.559,525,0.381,531,0.415,547,0.368,549,0.811,552,0.346,553,0.513,570,0.952,580,1.323,583,0.479,586,0.5,593,1.891,597,0.479,608,0.831,615,0.472,617,2.689,630,0.516,668,0.834,670,0.454,673,0.796,679,1.775,683,0.452,684,1.158,686,2.052,687,0.579,697,0.941,698,0.45,711,0.523,723,0.62,733,1.084,736,0.969,742,0.59,743,0.482,754,1.259,768,0.623,786,2.799,790,2.187,827,0.461,830,0.523,841,1.846,865,0.856,924,0.649,925,0.649,926,0.669,927,0.64,928,0.669,929,0.623,932,1.515,934,1.8,936,0.649,943,0.563,949,2.979,961,1.139,963,0.441,967,0.995,976,1.246,981,0.669,984,0.53,989,0.708,990,0.659,991,0.669,993,0.482,994,0.708,995,0.708,996,0.708,997,0.708,998,0.602,999,0.708,1000,0.708,1001,0.64,1002,0.708,1003,0.708,1004,0.579,1005,1.807,1006,4.658,1007,0.708,1008,2.43,1009,0.708,1010,0.584,1011,0.64,1012,0.631,1013,0.64,1014,1.338,1015,1.745,1017,0.579,1018,0.708,1019,0.669,1033,0.59,1040,0.495,1053,0.573,1056,0.669,1061,0.708,1062,0.59,1063,1.338,1064,0.609,1066,1.239,1088,1.338,1099,0.64,1106,1.807,1107,1.55,1114,0.659,1195,0.506,1285,1.179,1479,0.708,1533,1.165,1852,0.584,1961,0.694,1962,1.266,1964,1.338,1965,1.338,1981,0.723,1982,0.723,1983,0.723,1984,0.723,1986,0.723,1987,1.946,1988,0.723,1989,1.946,1990,0.723,1991,1.946,1992,0.694,1993,1.946,1994,0.723,1995,1.831,1996,0.659,1999,0.723,2051,0.568,2056,0.579,2068,0.742,2177,0.421,2194,2.101,2234,1.227,2240,1.21,2310,1.21,2372,0.631,2387,0.631,2406,3.607,2415,0.694,2422,0.516,2423,0.669,2431,0.694,2432,1.311,2455,0.659,2464,1.402,2465,1.402,2468,0.681,2488,1.402,2489,0.742,2511,1.995,2514,0.742,2574,1.402,2586,0.64,2633,2.529,2757,0.742,2758,1.402,2762,1.551,2763,0.82,2764,1.551,2765,0.82,2766,0.82,2767,0.82,2768,0.82,2769,0.82,2770,0.82,2771,0.82,2772,0.82,2773,0.82,2774,0.82,2775,0.82,2776,0.82,2777,0.82,2778,0.82,2780,1.551,2781,1.551,2782,0.82,2783,0.82,2784,0.82,2785,1.368,2786,1.551,2787,0.82,2788,0.763,2789,0.82,2790,0.82,2791,0.82,2792,0.82,2793,0.82,2794,0.82,2795,0.82,2796,0.82,2797,0.82,2798,0.82,2799,0.82,2800,0.82,2801,0.82,2802,0.82,2803,1.442,2804,0.742,2805,0.82,3132,0.742,3265,0.788,3266,0.788,3370,0.708,3431,0.863,3432,1.632,3433,0.863,3434,1.632,3435,0.863,3436,0.863]],["component/155",[7,0.401]],["title/156-1",[29,25.643,42,29.179,502,29.437]],["name/156-1",[]],["text/156-1",[]],["component/156-1",[]],["title/156-2",[155,27.786,308,31.436]],["name/156-2",[]],["text/156-2",[]],["component/156-2",[]],["title/156-3",[183,30.892,1128,43.146]],["name/156-3",[]],["text/156-3",[]],["component/156-3",[]],["title/156-4",[183,30.892,1129,38.042]],["name/156-4",[]],["text/156-4",[]],["component/156-4",[]],["title/156-5",[356,40.753,835,41.118]],["name/156-5",[]],["text/156-5",[]],["component/156-5",[]],["title/156-6",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/156-6",[]],["text/156-6",[]],["component/156-6",[]],["title/156-7",[227,33.834,525,23.078,861,29.474,1130,31.658,1131,32.55]],["name/156-7",[]],["text/156-7",[]],["component/156-7",[]],["title/156-8",[349,34.906,1735,35.536,2806,57.467]],["name/156-8",[]],["text/156-8",[]],["component/156-8",[]],["title/156-9",[351,34.319,1967,55.481]],["name/156-9",[]],["text/156-9",[]],["component/156-9",[]],["title/156-10",[96,36.21,2807,73.872]],["name/156-10",[]],["text/156-10",[]],["component/156-10",[]],["title/156-11",[293,47.398,1004,52.112]],["name/156-11",[]],["text/156-11",[]],["component/156-11",[]],["title/156",[13,15.31,14,19.455,84,12.931,98,29.562,502,20.744,1132,21.525]],["name/156",[1132,1.129]],["text/156",[0,0.577,3,0.465,5,0.677,6,1.017,7,0.146,8,1.597,10,0.45,11,1.198,12,0.584,13,2.471,14,2.049,17,1.508,18,0.734,19,0.353,29,1.288,30,0.255,31,0.319,32,0.848,34,0.706,35,0.874,37,0.347,38,0.323,40,0.7,42,1.298,45,0.508,46,0.798,48,1.819,52,1.544,54,1.15,56,1.405,57,0.328,60,1.286,77,0.332,79,0.509,84,3.259,88,1.317,91,1.198,92,0.353,93,0.332,96,0.277,98,0.373,99,0.285,101,0.544,104,0.291,105,0.877,110,0.27,112,0.516,117,1.887,118,2.618,120,1.725,125,0.752,127,0.373,128,1.438,130,0.351,134,0.212,136,0.292,138,0.262,139,0.753,146,0.862,147,0.373,148,0.7,151,0.395,154,0.555,155,0.759,161,0.629,163,0.818,164,0.987,166,0.351,168,0.301,171,0.278,172,1.081,179,0.398,180,0.353,183,1.613,185,0.766,186,1.338,188,0.345,189,0.33,192,0.299,194,0.376,196,0.247,202,0.441,203,0.347,206,0.415,211,1.077,214,0.965,220,0.41,224,1.039,225,0.424,227,0.74,228,1.064,236,0.251,239,0.277,240,0.816,247,0.353,251,0.287,252,0.949,262,0.339,264,1.122,265,0.753,267,0.645,268,0.365,271,0.276,275,0.562,277,0.29,279,0.514,280,0.511,282,0.347,283,0.663,285,0.441,293,1.295,296,2.127,300,1.398,301,0.239,308,1.037,311,0.31,315,0.74,316,0.283,319,0.469,324,0.419,325,1.021,327,0.454,330,1.06,331,0.855,333,0.345,338,0.836,346,0.435,349,2.442,350,0.322,351,1.313,354,0.349,356,1.761,360,0.429,361,0.52,386,0.628,402,0.822,406,0.852,412,0.398,421,0.319,438,0.415,439,0.333,445,0.365,446,0.295,450,0.388,457,0.415,459,1.007,464,0.365,465,0.248,468,0.777,474,0.402,478,0.441,482,0.353,502,1.129,508,0.947,514,0.9,517,0.343,518,0.402,521,0.385,523,0.349,525,0.938,528,1.431,531,0.794,532,0.766,539,0.435,541,0.454,547,0.704,548,0.382,549,0.568,552,0.239,556,0.353,558,0.402,570,0.667,577,0.663,580,1.696,593,0.28,596,1.029,597,0.635,602,0.429,608,0.302,618,0.419,647,0.358,666,0.675,668,0.844,670,0.602,673,1.25,677,0.362,682,0.306,689,0.766,698,0.31,706,2.51,711,1.286,728,1.402,729,1.313,730,1.179,735,1.364,736,2.411,742,0.406,743,1.185,745,0.555,758,0.435,773,0.379,786,1.119,790,0.323,827,1.986,833,0.435,835,0.874,846,3.707,861,2.95,868,0.511,890,1.014,910,0.355,963,0.584,967,0.362,972,0.579,993,0.332,1004,0.398,1010,0.402,1021,0.487,1022,0.447,1024,0.447,1040,0.655,1048,0.454,1066,0.882,1083,1.193,1087,0.419,1097,0.398,1102,0.498,1128,1.179,1129,0.808,1130,1.286,1131,1.323,1133,1.633,1134,0.429,1135,0.461,1136,0.37,1137,0.424,1138,0.781,1139,1.078,1140,0.525,1141,0.826,1142,0.86,1143,0.86,1144,0.435,1145,0.347,1146,0.461,1147,0.525,1148,0.525,1149,1.01,1150,3.467,1151,0.807,1152,1.01,1153,0.937,1154,0.435,1155,0.424,1156,0.525,1157,0.461,1158,0.419,1159,0.525,1160,1.01,1161,0.525,1162,0.902,1163,0.525,1164,0.902,1165,1.46,1166,0.461,1167,0.525,1168,0.435,1169,0.41,1170,1.01,1171,0.525,1172,1.208,1173,0.525,1174,0.385,1175,0.525,1176,0.525,1177,0.525,1178,0.525,1179,0.525,1180,1.01,1181,0.525,1182,0.525,1183,1.01,1184,1.01,1185,1.01,1186,0.525,1187,0.807,1188,1.01,1189,0.525,1190,0.525,1191,0.525,1192,0.525,1193,0.525,1194,0.525,1195,0.349,1196,0.469,1197,1.303,1198,0.525,1199,0.525,1200,0.461,1201,1.452,1202,0.525,1203,1.01,1204,0.487,1205,1.01,1206,0.525,1207,0.525,1208,0.525,1209,0.525,1210,0.498,1211,0.382,1212,0.525,1214,0.759,1219,0.391,1277,0.424,1294,0.487,1295,0.441,1296,0.487,1300,0.461,1347,1.01,1349,1.46,1356,1.781,1361,6.334,1362,2.969,1379,1.877,1382,0.525,1400,0.313,1483,0.268,1520,0.382,1556,0.362,1558,0.333,1647,0.391,1682,0.86,1733,1.242,1735,1.977,1964,0.487,1967,1.83,1996,0.454,2003,0.478,2029,0.982,2037,0.982,2055,0.454,2060,0.385,2072,0.454,2076,0.395,2134,0.478,2135,0.454,2173,2.102,2336,0.447,2342,0.478,2478,1.354,2558,1.825,2806,3.197,2808,0.487,2809,1.57,2810,0.565,2811,0.565,2812,0.565,2813,0.565,2814,0.565,2815,1.086,2816,0.565,2817,0.498,2818,0.565,2819,0.565,2820,0.565,2821,0.565,2822,1.086,2823,0.565,2824,0.565,2825,0.565,2826,0.565,2827,1.57,2828,1.57,2829,0.565,2830,1.086,2831,0.565,2832,1.086,2833,0.565,2834,1.086,2835,0.565,2836,2.827,2837,0.525,2838,3.193,2839,0.565,2840,1.086,2841,1.086,2842,1.086,2843,1.086,2844,1.01,2845,1.086,2846,0.565,2847,0.498,2848,0.565,2849,0.565,2850,0.982,2851,0.525,2852,0.565,2853,0.565,2854,1.57,2855,0.565,2856,0.565,2857,1.57,2858,0.565,2859,0.565,2860,0.565,2861,0.565,2862,0.565,2863,0.565,2864,0.565,2865,0.565,2866,0.565,2867,0.565,2868,0.565,2869,0.565,2870,0.565,2871,0.565,2872,0.525,2873,0.565,2874,0.525,2875,1.086,2876,1.086,2877,1.086,2878,0.565,2879,0.565,2880,0.565,2881,0.565,2882,0.565,2883,1.086,2884,0.565,2885,1.57,2886,0.565,2887,0.565,2888,0.565,2889,0.565,2890,0.498,2891,0.565,2892,0.565,2893,0.565,2894,0.565]],["component/156",[7,0.401]],["title/157-1",[402,20.515]],["name/157-1",[]],["text/157-1",[]],["component/157-1",[]],["title/157-2",[116,50.007]],["name/157-2",[]],["text/157-2",[]],["component/157-2",[]],["title/157-3",[52,35.736,116,41.887]],["name/157-3",[]],["text/157-3",[]],["component/157-3",[]],["title/157-4",[118,25.347,2619,51.178]],["name/157-4",[]],["text/157-4",[]],["component/157-4",[]],["title/157-5",[134,27.671,2619,51.178]],["name/157-5",[]],["text/157-5",[]],["component/157-5",[]],["title/157-6",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/157-6",[]],["text/157-6",[]],["component/157-6",[]],["title/157-7",[33,23.693,36,20.443,111,25.393,116,25.393,118,15.366,421,25.274]],["name/157-7",[]],["text/157-7",[]],["component/157-7",[]],["title/157-8",[36,18.611,88,12.902,116,23.118,118,13.989,143,23.009,361,19.534,854,27.77]],["name/157-8",[]],["text/157-8",[]],["component/157-8",[]],["title/157-9",[33,23.693,111,25.393,118,23.373,361,21.457,421,25.274]],["name/157-9",[]],["text/157-9",[]],["component/157-9",[]],["title/157-10",[33,14.895,36,12.852,111,15.964,116,15.964,118,9.66,143,15.889,186,15.464,421,15.889,854,19.177,861,16.706,985,17.944,1153,24.29]],["name/157-10",[]],["text/157-10",[]],["component/157-10",[]],["title/157-11",[54,18.307,110,15.346,118,17.986,120,19.606,171,15.803,214,12.73,361,15.395,487,14.667,680,16.866]],["name/157-11",[]],["text/157-11",[]],["component/157-11",[]],["title/157-12",[245,52.609,528,43.37]],["name/157-12",[]],["text/157-12",[]],["component/157-12",[]],["title/157-13",[88,23.377,356,40.753]],["name/157-13",[]],["text/157-13",[]],["component/157-13",[]],["title/157-14",[48,36.208,88,20.111,356,35.06]],["name/157-14",[]],["text/157-14",[]],["component/157-14",[]],["title/157-15",[88,20.111,356,35.06,1172,48.923]],["name/157-15",[]],["text/157-15",[]],["component/157-15",[]],["title/157-16",[56,31.577,356,35.06,711,40.503]],["name/157-16",[]],["text/157-16",[]],["component/157-16",[]],["title/157-17",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/157-17",[]],["text/157-17",[]],["component/157-17",[]],["title/157-18",[88,27.909]],["name/157-18",[]],["text/157-18",[]],["component/157-18",[]],["title/157-19",[1276,68.801]],["name/157-19",[]],["text/157-19",[]],["component/157-19",[]],["title/157",[13,19.063,14,24.225,88,17.646,158,30.495]],["name/157",[88,0.743]],["text/157",[0,0.755,2,0.231,3,0.32,4,0.225,5,0.166,7,0.282,8,1.117,10,0.718,11,0.228,12,0.207,13,1.844,14,1.901,15,0.588,17,2.235,18,0.511,19,0.24,23,0.514,24,0.612,30,0.173,31,0.422,32,0.46,33,2.599,34,1.792,36,0.342,40,0.38,42,0.344,45,0.18,46,1.044,48,1.896,49,0.795,52,1.496,54,2.985,56,1.285,57,1.181,58,0.477,60,1.648,63,0.49,65,2.735,71,0.596,77,0.439,80,0.274,84,2.053,88,2.369,91,1.206,92,0.684,93,1.518,94,0.873,95,0.953,96,0.85,97,0.969,100,1.203,101,2.846,102,0.424,103,0.576,105,2.276,106,0.49,107,1.447,110,1.802,111,3.598,112,0.964,113,3.199,115,0.844,116,5.071,117,0.736,118,3.011,120,4.821,121,2.53,123,0.533,125,0.524,128,0.227,129,0.362,130,0.465,134,1.639,136,0.294,143,2.957,144,0.334,145,0.258,146,0.211,147,0.494,148,0.26,151,0.269,152,0.276,153,0.296,155,0.871,160,0.215,161,0.438,162,0.55,163,0.741,164,0.471,166,0.884,168,0.399,169,0.228,170,0.684,171,1.139,172,0.77,186,1.272,188,0.235,191,0.153,192,0.396,194,0.498,196,1.739,199,0.236,202,0.584,204,0.325,211,0.399,214,0.917,215,0.544,221,0.519,224,0.385,227,0.262,234,0.437,238,0.289,243,0.242,245,0.274,248,1.965,249,0.408,252,0.669,253,0.262,254,0.269,255,0.449,262,0.231,263,0.192,264,0.714,271,0.188,272,0.429,275,0.199,277,1.327,280,0.352,283,0.235,285,0.3,292,0.216,293,0.48,296,1.217,301,1.204,304,0.285,308,0.605,313,2.648,315,0.262,316,2.541,319,0.323,322,0.279,325,1.128,330,0.26,335,0.656,338,0.842,340,0.684,341,1.04,344,0.319,348,0.26,350,1.158,351,1.076,352,0.285,356,2.891,360,0.292,361,1.595,377,0.209,379,0.319,384,0.332,386,0.222,388,0.236,389,0.696,394,0.254,397,0.304,401,0.353,402,0.926,403,0.285,406,0.382,408,0.21,421,1.745,429,0.269,438,1.274,439,0.442,440,0.254,441,0.9,443,0.415,446,0.391,455,0.199,470,0.178,480,0.646,482,0.24,487,0.792,502,0.178,505,2.33,506,0.289,508,0.452,509,0.919,519,1.013,523,0.237,525,1.201,526,0.319,528,0.226,531,1.171,547,0.172,549,0.744,552,0.316,553,0.684,558,0.274,570,0.459,575,0.276,577,0.457,580,0.231,602,0.292,604,0.426,613,0.292,617,0.221,619,0.266,620,0.454,664,0.314,666,0.239,668,0.207,670,0.415,677,0.247,679,0.16,680,0.91,686,0.304,697,0.233,698,0.211,706,0.25,708,0.215,711,1.476,712,0.932,728,0.629,729,0.925,732,0.953,765,0.544,766,0.51,767,0.279,768,0.569,772,0.24,773,0.502,784,0.332,827,0.216,835,0.965,841,0.494,854,2.57,861,2.11,865,0.413,869,0.576,889,0.465,890,0.707,900,0.733,910,0.471,937,0.969,949,0.245,961,0.55,963,0.207,966,0.262,968,0.785,972,1.517,980,0.3,985,0.477,993,0.642,1013,0.3,1031,0.285,1040,0.232,1047,0.314,1049,0.319,1062,1.023,1075,0.228,1076,0.695,1083,1.081,1089,0.282,1092,0.256,1129,0.198,1130,0.245,1131,1.331,1133,0.953,1139,0.751,1144,0.296,1154,0.842,1155,0.562,1162,0.319,1164,0.621,1172,3.649,1197,0.621,1213,1.447,1214,1.212,1216,0.358,1217,0.358,1218,0.358,1219,0.985,1220,1.018,1221,0.944,1222,0.358,1223,0.358,1224,0.696,1225,0.696,1226,0.358,1227,0.358,1228,0.358,1229,0.358,1230,0.358,1231,0.358,1232,0.358,1233,0.358,1234,0.358,1235,0.358,1236,0.358,1237,0.358,1238,1.018,1239,0.358,1240,0.696,1241,1.018,1242,0.358,1243,0.358,1244,0.358,1245,0.358,1246,0.584,1247,0.696,1248,1.323,1249,0.611,1250,0.562,1251,0.696,1252,0.332,1253,0.25,1254,0.358,1255,0.168,1256,0.908,1257,0.358,1258,0.66,1261,0.358,1262,0.358,1265,0.358,1266,0.358,1267,0.358,1268,0.358,1269,0.358,1270,0.358,1271,0.358,1272,0.358,1273,0.358,1274,0.358,1275,0.358,1276,0.3,1277,1.303,1278,0.358,1295,0.3,1296,0.332,1297,0.358,1298,0.358,1299,0.358,1300,0.893,1301,0.319,1302,0.358,1303,0.319,1307,0.369,1308,0.296,1319,0.358,1320,0.696,1321,0.332,1322,0.358,1323,0.358,1324,0.358,1325,1.613,1326,0.358,1327,0.696,1328,0.358,1329,0.358,1331,0.358,1332,0.358,1333,0.358,1334,0.696,1335,0.358,1336,0.696,1337,0.358,1338,0.358,1339,0.696,1340,0.696,1341,0.358,1342,0.358,1343,0.332,1344,0.358,1345,0.358,1346,0.358,1383,0.358,1384,0.358,1385,0.358,1386,0.358,1387,0.358,1388,0.66,1389,0.319,1390,0.242,1391,0.339,1392,0.358,1393,0.358,1397,0.358,1416,0.474,1456,0.174,1483,0.519,1484,0.292,1498,0.269,1513,0.55,1641,0.925,1661,0.296,1733,1.607,1768,0.696,1770,1.227,1779,0.289,1849,0.309,1938,0.696,2042,0.519,2051,0.266,2054,0.236,2076,0.523,2083,0.309,2127,0.646,2166,0.696,2240,0.3,2444,0.348,2448,0.3,2518,0.348,2562,0.314,2619,1.791,2673,0.304,2895,0.384,2896,1.734,2897,0.348,2898,0.384,2899,0.384,2900,0.749,2901,0.384,2902,0.384,2903,0.384,2904,1.094,2905,0.384,2906,0.384,2907,0.384,2908,0.384,2909,0.384,2910,0.384,2911,0.384,2912,0.384,2913,0.384,2915,0.384,2916,1.734,2917,0.384,2918,0.384,2919,0.384,2921,1.094,2922,0.384,2923,0.384,2924,0.384,2925,0.384,2926,0.358,2927,0.384,2928,0.384,2929,0.749,2930,0.384,2931,0.749,2932,1.094,2933,0.384,2934,0.893,2935,1.094,2936,0.384,2937,0.384,2938,0.749,2939,0.384,2940,1.422,2941,0.384,2942,0.384,2943,0.384,2944,0.384,2945,0.369,2946,0.384,2947,0.384,2948,0.384,2949,0.384,2950,0.384,2951,0.384,2952,0.384,2953,0.384,2954,0.384,2955,0.384,2956,0.749,2957,0.384,2958,0.384,2959,0.749,2960,0.384,2961,0.384,2962,0.384,2963,0.384,2964,0.384,2965,0.384,2966,0.384,2967,0.384,2968,0.384,2969,0.384,2970,0.384,2971,0.749,2972,0.749,3370,2.667,3396,0.369,3400,0.989,3437,2.992,3438,0.404,3439,0.404,3440,1.825,3441,0.787,3442,0.787,3443,1.151,3444,0.404,3445,0.404,3446,0.404,3447,0.404]],["component/157",[7,0.401]],["title/158-1",[117,26.976,118,21.806,296,27.183]],["name/158-1",[]],["text/158-1",[]],["component/158-1",[]],["title/158-2",[8,10.407,26,17.177,117,17.306,118,13.989,168,21.743,296,17.438,402,9.484]],["name/158-2",[]],["text/158-2",[]],["component/158-2",[]],["title/158-3",[1276,68.801]],["name/158-3",[]],["text/158-3",[]],["component/158-3",[]],["title/158",[13,25.254,105,32.092]],["name/158",[631,1.45]],["text/158",[7,0.622,8,0.616,13,2.456,14,1.048,20,1.408,24,2.306,26,2.694,29,0.973,30,1.088,34,1.085,45,1.127,52,3.093,54,2.349,60,2.628,71,1.313,84,2.547,88,1.305,102,1.367,105,2.347,112,1.957,113,1.07,116,2.338,117,3.552,118,3.957,125,1.155,126,3.062,129,1.167,134,2.395,136,2.252,138,1.12,139,1.538,148,1.431,150,1.053,155,1.551,161,1.652,171,1.186,179,1.701,181,1.811,183,1.008,196,1.053,199,1.48,214,2.846,226,1.592,239,2.021,264,2.526,275,1.246,292,1.355,296,4.209,301,2.707,308,3.057,313,1.527,320,1.439,324,1.79,341,1.447,357,1.423,391,1.276,395,1.58,402,1.487,438,1.771,443,1.336,451,2.165,453,2.318,455,1.246,458,1.558,460,1.07,465,1.059,487,1.101,503,2.181,514,1.523,519,1.717,547,1.082,552,1.018,557,1.455,570,1.48,617,1.387,661,2.002,665,1.297,667,2.243,670,2.994,671,2.243,672,1.656,673,3.28,676,1.656,677,1.547,678,1.447,679,1.004,680,2.165,683,1.33,684,1.266,723,1.649,743,2.421,746,1.031,865,1.33,963,2.217,966,1.642,972,1.286,1005,0.863,1092,1.604,1125,1.629,1279,1.527,1280,2.039,1281,2.243,1282,1.908,1283,2.243,1284,1.937,1285,1.833,1286,2.002,1287,1.604,1305,1.937,1306,2.002,1477,1.387,1640,1.717,2054,1.48,3193,2.318,3370,3.558]],["component/158",[7,0.401]],["title/159-1",[78,56.976]],["name/159-1",[]],["text/159-1",[]],["component/159-1",[]],["title/159-2",[745,45.082]],["name/159-2",[]],["text/159-2",[]],["component/159-2",[]],["title/159-3",[1255,32.348,1457,33.624]],["name/159-3",[]],["text/159-3",[]],["component/159-3",[]],["title/159",[136,17.103,178,34.172,1005,22.733]],["name/159",[1473,1.613]],["text/159",[8,1.827,65,4.917,88,2.266,118,2.456,129,3.463,136,1.927,139,2.671,178,5.121,183,2.994,228,3.773,263,3.582,264,2.517,301,3.031,388,4.394,468,3.545,487,3.268,514,2.644,686,2.909,723,2.862,756,5.004,827,4.022,1005,3.828,1473,4.917,1585,4.876,2422,4.504,2566,4.762,2974,7.159,2976,7.159,3448,8.098,3449,8.098]],["component/159",[7,0.401]],["title/160-1",[78,56.976]],["name/160-1",[]],["text/160-1",[]],["component/160-1",[]],["title/160-2",[745,45.082]],["name/160-2",[]],["text/160-2",[]],["component/160-2",[]],["title/160-3",[1255,32.348,1457,33.624]],["name/160-3",[]],["text/160-3",[]],["component/160-3",[]],["title/160",[136,17.103,1005,22.733,3450,44.422]],["name/160",[3416,1.056,3450,0.919]],["text/160",[8,2.443,12,2.598,31,2.727,91,4.28,104,2.488,118,1.658,136,2.891,139,1.802,150,2.11,161,1.936,183,2.021,191,1.923,192,2.556,263,2.417,264,1.699,297,2.78,301,2.046,308,2.056,379,4.011,388,2.966,465,2.121,470,2.231,675,3.319,686,1.963,723,1.932,963,2.598,984,3.121,1005,4.259,1400,2.677,1472,2.948,1483,2.293,2063,3.629,2137,3.475,2422,4.537,2566,3.214,3257,4.011,3450,8.448,3451,6.522,3452,5.083,3453,7.588,3454,5.083,3455,5.083,3456,5.083,3457,5.083,3458,5.083,3459,4.168,3460,4.369,3461,4.369]],["component/160",[7,0.401]],["title/161-1",[78,56.976]],["name/161-1",[]],["text/161-1",[]],["component/161-1",[]],["title/161-2",[745,45.082]],["name/161-2",[]],["text/161-2",[]],["component/161-2",[]],["title/161-3",[191,25.292,728,36.562,1483,30.163]],["name/161-3",[]],["text/161-3",[]],["component/161-3",[]],["title/161-4",[10,30.592,228,38.927]],["name/161-4",[]],["text/161-4",[]],["component/161-4",[]],["title/161-5",[1255,32.348,1457,33.624]],["name/161-5",[]],["text/161-5",[]],["component/161-5",[]],["title/161",[136,17.103,538,50.281,1005,22.733]],["name/161",[538,1.858]],["text/161",[6,3.125,8,1.583,10,2.004,29,1.176,32,2.607,34,2.792,45,2.262,84,2.642,88,0.923,94,1.789,101,1.459,118,1.66,136,1.943,139,1.088,172,1.294,183,1.219,186,1.601,190,3.006,191,3.188,196,1.273,228,1.536,263,1.459,264,1.701,271,2.364,283,1.779,301,1.234,317,2.076,319,1.26,341,1.749,351,1.354,352,2.164,388,1.789,402,0.678,443,1.615,468,1.444,487,1.331,492,2.076,514,2.666,538,5.713,570,1.789,580,1.749,686,1.185,717,2.19,723,1.166,728,6.907,773,1.954,827,1.638,907,2.164,932,2.002,1005,2.865,1078,3.126,1106,1.581,1145,2.97,1150,1.615,1151,3.593,1174,4.918,1472,1.779,1483,1.384,1484,2.216,1488,2.42,1640,2.076,1727,2.097,1827,3.725,1945,1.954,2301,3.775,2408,2.515,2422,1.834,2566,1.939,2808,6.91,3462,7.449,3463,7.242,3464,2.915,3465,4.651,3466,2.572,3467,4.839,3468,2.802,3469,2.802,3470,2.915,3471,2.572,3472,2.915,3473,8.638,3474,6.203,3475,7.016,3476,3.297]],["component/161",[7,0.401]],["title/162-1",[78,56.976]],["name/162-1",[]],["text/162-1",[]],["component/162-1",[]],["title/162-2",[745,45.082]],["name/162-2",[]],["text/162-2",[]],["component/162-2",[]],["title/162-3",[1255,32.348,1457,33.624]],["name/162-3",[]],["text/162-3",[]],["component/162-3",[]],["title/162",[136,15.007,1005,19.947,1769,50.423,3477,38.977]],["name/162",[3478,2.257]],["text/162",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1769,5.173,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3478,7.843,3479,4.936,3480,6.019,3481,4.936]],["component/162",[7,0.401]],["title/163-1",[78,56.976]],["name/163-1",[]],["text/163-1",[]],["component/163-1",[]],["title/163-2",[745,45.082]],["name/163-2",[]],["text/163-2",[]],["component/163-2",[]],["title/163-3",[1255,32.348,1457,33.624]],["name/163-3",[]],["text/163-3",[]],["component/163-3",[]],["title/163",[136,15.007,1005,19.947,3477,38.977,3482,53.595]],["name/163",[3483,2.257]],["text/163",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3482,5.499,3483,7.843,3484,6.019]],["component/163",[7,0.401]],["title/164-1",[78,56.976]],["name/164-1",[]],["text/164-1",[]],["component/164-1",[]],["title/164-2",[745,45.082]],["name/164-2",[]],["text/164-2",[]],["component/164-2",[]],["title/164-3",[1255,32.348,1457,33.624]],["name/164-3",[]],["text/164-3",[]],["component/164-3",[]],["title/164",[136,15.007,1005,19.947,3477,38.977,3485,50.423]],["name/164",[3486,2.257]],["text/164",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3485,5.173,3486,7.843,3487,6.019]],["component/164",[7,0.401]],["title/165-1",[78,56.976]],["name/165-1",[]],["text/165-1",[]],["component/165-1",[]],["title/165-2",[745,45.082]],["name/165-2",[]],["text/165-2",[]],["component/165-2",[]],["title/165-3",[1255,32.348,1457,33.624]],["name/165-3",[]],["text/165-3",[]],["component/165-3",[]],["title/165",[136,15.007,1005,19.947,1741,44.118,3477,38.977]],["name/165",[3488,2.257]],["text/165",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1741,4.527,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3488,7.843,3489,6.019]],["component/165",[7,0.401]],["title/166-1",[78,56.976]],["name/166-1",[]],["text/166-1",[]],["component/166-1",[]],["title/166-2",[745,45.082]],["name/166-2",[]],["text/166-2",[]],["component/166-2",[]],["title/166-3",[1255,32.348,1457,33.624]],["name/166-3",[]],["text/166-3",[]],["component/166-3",[]],["title/166",[136,17.103,1005,22.733,1431,35.699]],["name/166",[1431,1.319]],["text/166",[8,1.565,65,4.212,84,1.77,88,1.94,118,2.104,136,1.65,139,2.287,183,2.564,191,3.41,252,2.883,264,2.156,279,2.901,301,2.596,357,3.619,388,3.764,451,3.219,487,2.799,514,3.164,567,4.41,686,2.491,723,2.451,827,3.444,1005,3.533,1076,2.996,1158,4.552,1431,6.722,1483,2.91,1578,4.72,1580,5.545,1617,7.748,2398,4.784,2422,3.857,2566,4.078,3180,5.545,3490,5.893,3491,6.451,3492,6.451,3493,6.451]],["component/166",[7,0.401]],["title/167-1",[78,56.976]],["name/167-1",[]],["text/167-1",[]],["component/167-1",[]],["title/167-2",[745,45.082]],["name/167-2",[]],["text/167-2",[]],["component/167-2",[]],["title/167-3",[1255,32.348,1457,33.624]],["name/167-3",[]],["text/167-3",[]],["component/167-3",[]],["title/167",[136,17.103,1005,22.733,3494,51.038]],["name/167",[3494,1.886]],["text/167",[8,2.095,12,3.102,31,3.256,40,2.002,65,3.963,84,1.666,88,1.826,118,1.98,136,1.553,139,2.152,158,3.155,183,2.413,191,3.267,252,2.713,264,2.028,279,2.73,301,2.443,357,3.405,388,3.541,440,5.419,451,3.028,487,2.634,514,3.031,686,2.344,723,2.307,827,3.241,1005,3.418,1076,2.819,1483,2.738,1555,3.93,2422,3.629,2562,4.708,2566,3.837,3180,5.217,3494,9.654,3495,6.07,3496,6.07,3497,6.526,3498,5.77,3499,4.978,3500,5.545,3501,5.545,3502,5.545]],["component/167",[7,0.401]],["title/168-1",[78,56.976]],["name/168-1",[]],["text/168-1",[]],["component/168-1",[]],["title/168-2",[745,45.082]],["name/168-2",[]],["text/168-2",[]],["component/168-2",[]],["title/168-3",[1255,32.348,1457,33.624]],["name/168-3",[]],["text/168-3",[]],["component/168-3",[]],["title/168",[136,17.103,1005,22.733,1591,42.597]],["name/168",[1591,1.574]],["text/168",[8,1.608,12,3.388,15,3.388,32,2.648,35,3.507,88,1.994,118,2.162,136,1.696,139,2.351,183,2.635,264,2.215,301,2.668,388,3.868,460,3.876,468,4.324,482,3.939,487,3.987,493,8.319,514,3.225,531,3.186,549,3.295,686,2.56,723,2.519,756,6.104,758,4.851,827,4.906,898,5.061,1005,3.585,1591,7.253,2422,3.964,2566,4.191,2979,6.301,3503,6.629]],["component/168",[7,0.401]],["title/169-1",[84,16.101,117,23.67,402,12.971,604,31.77]],["name/169-1",[]],["text/169-1",[]],["component/169-1",[]],["title/169-2",[84,12.931,117,19.01,136,12.052,139,16.706,604,25.515,1005,16.019]],["name/169-2",[]],["text/169-2",[]],["component/169-2",[]],["title/169",[402,17.184,1040,44.562]],["name/169",[402,0.306,1040,0.793]],["text/169",[0,0.862,3,0.694,6,0.817,7,0.418,8,1.422,13,1.653,14,1.265,17,0.692,18,1.361,23,1.863,26,1.227,29,1.599,30,1.314,34,1.31,36,0.74,37,0.996,40,0.563,42,0.745,45,1.852,84,0.841,86,1.547,88,0.513,101,1.457,108,1.155,110,0.775,112,1.382,115,0.962,117,1.682,118,0.557,125,0.777,133,1.014,134,2.703,135,0.697,136,2.154,139,3.412,144,1.299,145,1.952,148,1.01,150,0.708,151,1.134,155,1.49,158,0.887,160,0.907,161,1.588,163,2.518,172,2.145,178,0.872,180,1.014,183,1.218,189,1.701,196,2.944,202,1.265,203,0.996,214,2.206,224,2.04,225,2.187,236,0.722,248,2.064,252,1.863,262,0.973,263,1.982,267,0.962,268,1.881,270,1.323,271,1.423,272,0.929,277,1.494,280,0.763,292,1.636,296,1.245,301,0.687,319,1.712,333,0.99,354,1.001,357,0.957,386,0.938,394,1.922,395,1.063,397,1.283,401,0.765,402,2.311,406,2.167,408,1.592,418,1.303,420,1.178,441,1.027,443,0.899,445,1.881,450,1.114,455,1.505,460,0.72,465,1.278,468,0.803,474,1.155,487,0.74,514,1.075,518,1.155,523,2.446,525,1.841,548,1.096,549,0.848,552,0.685,557,0.978,583,0.947,593,1.442,617,0.933,630,3.041,665,0.872,668,2.599,674,1.105,675,1.114,678,0.973,679,3.176,683,1.606,686,1.61,695,0.829,696,1.323,719,1.692,723,0.648,733,1.134,735,1.096,741,1.041,745,0.829,754,0.73,756,1.134,779,1.034,827,0.911,835,0.903,865,2.186,903,0.947,949,1.034,967,1.041,968,0.895,970,1.144,993,0.952,1005,3.184,1008,0.924,1033,2.094,1040,1.756,1076,0.792,1082,1.323,1097,2.054,1106,1.579,1107,0.899,1125,1.096,1126,1.166,1131,1.063,1169,2.116,1213,2.074,1308,1.249,1400,0.899,1416,1.027,1456,0.734,1477,0.933,1483,0.77,1499,1.178,1516,1.323,1555,1.983,1852,2.074,1936,1.055,1965,2.512,2042,1.124,2097,1.283,2098,1.399,2135,1.303,2136,1.371,2177,0.832,2194,1.218,2348,1.303,2356,1.303,2387,1.249,2455,1.303,2479,1.371,2503,1.371,2586,1.265,2646,1.303,2687,1.467,2759,1.467,2760,1.467,2804,1.467,2980,1.622,2981,1.622,2982,1.622,2983,1.622,2984,1.622,2985,1.622,2986,1.622,2987,1.622,2988,1.622,3504,1.559,3505,1.706]],["component/169",[7,0.401]],["title/170-1",[402,17.184,1456,33.432]],["name/170-1",[]],["text/170-1",[]],["component/170-1",[]],["title/170-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/170-2",[]],["text/170-2",[]],["component/170-2",[]],["title/170-3",[8,18.856,150,32.262]],["name/170-3",[]],["text/170-3",[]],["component/170-3",[]],["title/170-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/170-4",[]],["text/170-4",[]],["component/170-4",[]],["title/170-5",[547,33.151,708,41.306]],["name/170-5",[]],["text/170-5",[]],["component/170-5",[]],["title/170-6",[350,31.77,546,42.927,830,35.539,2989,55.762]],["name/170-6",[]],["text/170-6",[]],["component/170-6",[]],["title/170-7",[8,16.222,546,48.923,830,40.503]],["name/170-7",[]],["text/170-7",[]],["component/170-7",[]],["title/170-8",[2177,45.248]],["name/170-8",[]],["text/170-8",[]],["component/170-8",[]],["title/170-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/170-9",[]],["text/170-9",[]],["component/170-9",[]],["title/170-10",[8,16.222,746,27.183,1005,22.733]],["name/170-10",[]],["text/170-10",[]],["component/170-10",[]],["title/170-11",[1255,32.348,1457,33.624]],["name/170-11",[]],["text/170-11",[]],["component/170-11",[]],["title/170",[545,55.999,862,41.88,1129,28.716]],["name/170",[545,0.919,862,0.988]],["text/170",[0,2,5,1.989,8,1.778,10,0.631,20,0.89,26,1.16,29,1.862,30,0.688,32,1.157,33,0.806,34,2.401,35,1.533,36,1.257,40,0.529,42,0.7,45,1.287,49,1.107,56,0.757,57,0.886,71,0.83,84,3.165,88,1.688,90,0.715,91,2.234,93,0.895,94,0.936,95,1.022,99,0.768,101,0.763,104,1.939,110,1.798,115,0.904,125,3.111,127,2.486,128,1.625,129,1.822,136,1.013,138,1.279,139,0.569,144,0.68,148,0.529,155,1.036,165,1.038,168,0.813,169,0.904,172,2.368,183,0.637,191,0.607,196,1.202,211,4.138,214,1.492,223,1.265,224,1.418,232,1.265,239,0.747,245,3.286,251,0.774,252,1.771,254,1.065,264,0.968,277,0.782,279,0.721,280,0.717,286,1.643,296,0.652,297,0.877,301,0.645,308,0.649,316,1.378,325,0.992,331,0.83,335,0.914,351,2.478,361,0.73,386,1.592,401,0.719,402,1.073,406,0.963,411,1.206,424,1.119,425,3.502,441,0.965,457,4.372,460,0.677,465,0.669,470,1.272,487,2.106,502,0.706,514,1.704,525,0.708,528,3.132,545,4.539,546,5.686,547,1.69,553,1.721,557,0.919,647,0.965,659,1.173,664,1.244,668,2.025,673,0.782,676,1.047,686,0.619,690,1.743,695,2.358,711,1.755,736,2.354,752,0.803,754,0.686,788,0.93,827,2.115,829,3.322,830,4.707,835,0.848,840,4.291,844,1.315,861,0.904,862,2.068,865,1.519,867,1.038,963,0.82,973,1.173,981,1.244,1005,0.545,1008,0.868,1076,0.745,1110,1.056,1122,2.12,1123,1.119,1127,1.132,1129,0.785,1132,0.733,1201,1.096,1279,0.965,1287,1.014,1421,1.096,1472,0.93,1477,0.877,1492,2.068,1519,1.224,1602,1.418,1639,1.378,1735,0.852,1967,4.006,2177,1.932,2369,1.345,2636,0.925,2642,0.947,2667,1.378,2716,1.378,2734,2.49,2739,1.378,2850,2.49,2990,1.524,2991,2.753,2992,1.524,2993,1.524,2994,1.524,2995,1.524,2996,1.524,2997,2.753,2998,1.524,2999,1.524,3000,2.753,3001,2.753,3002,1.524,3003,1.418,3004,2.753,3005,1.524,3006,1.524,3007,1.524,3008,1.524,3009,1.524,3010,2.753,3011,1.524,3012,1.524,3013,1.524,3014,2.753,3015,2.753,3016,1.524,3017,1.524,3018,2.753,3019,1.524,3020,2.753,3021,1.524,3022,1.524,3087,1.006,3506,0.985,3507,1.604,3508,1.604,3509,3.114,3510,1.604,3511,1.132,3512,0.971]],["component/170",[7,0.401]],["title/171-1",[402,17.184,1456,33.432]],["name/171-1",[]],["text/171-1",[]],["component/171-1",[]],["title/171-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/171-2",[]],["text/171-2",[]],["component/171-2",[]],["title/171-3",[8,18.856,150,32.262]],["name/171-3",[]],["text/171-3",[]],["component/171-3",[]],["title/171-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/171-4",[]],["text/171-4",[]],["component/171-4",[]],["title/171-5",[2177,45.248]],["name/171-5",[]],["text/171-5",[]],["component/171-5",[]],["title/171-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/171-6",[]],["text/171-6",[]],["component/171-6",[]],["title/171-7",[8,16.222,746,27.183,1005,22.733]],["name/171-7",[]],["text/171-7",[]],["component/171-7",[]],["title/171-8",[1255,32.348,1457,33.624]],["name/171-8",[]],["text/171-8",[]],["component/171-8",[]],["title/171",[178,34.172,1129,32.728,1473,43.651]],["name/171",[677,0.844,1473,0.903]],["text/171",[5,2.98,8,2.221,12,1.833,26,2.317,29,2.219,33,1.804,84,3.118,88,2.188,90,1.599,99,1.718,129,1.65,135,2.365,136,1.48,138,2.556,139,1.272,144,1.522,148,1.183,155,1.283,161,1.366,172,1.513,178,5.003,183,1.426,191,1.357,214,2.179,228,1.797,231,2.428,239,1.671,263,1.706,264,1.934,277,1.749,280,2.587,301,1.444,308,1.451,331,1.857,349,1.873,351,1.584,361,1.634,394,2.251,395,2.234,401,1.608,402,1.608,406,2.417,445,2.203,446,1.783,451,1.79,459,2.188,465,1.497,470,2.54,484,2.322,514,2.929,654,2.477,686,1.385,687,2.405,695,2.812,726,2.159,746,1.458,752,1.797,788,2.081,830,2.173,835,1.898,873,2.304,896,2.251,983,2.561,1005,1.22,1008,1.943,1068,2.452,1076,1.666,1106,1.849,1107,1.889,1129,1.756,1187,2.532,1461,1.933,1472,2.081,1473,3.778,1474,3.171,1475,3.997,1476,5.116,1477,3.165,1478,2.883,1479,2.942,1480,3.171,1481,3.171,1482,3.083,1735,1.907,2177,3.547,2636,2.069,2642,2.118,3087,2.251,3506,2.203,3511,2.532,3512,2.173,3513,2.532,3514,2.592]],["component/171",[7,0.401]],["title/172-1",[402,17.184,1456,33.432]],["name/172-1",[]],["text/172-1",[]],["component/172-1",[]],["title/172-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/172-2",[]],["text/172-2",[]],["component/172-2",[]],["title/172-3",[118,25.347,694,45.892]],["name/172-3",[]],["text/172-3",[]],["component/172-3",[]],["title/172-4",[1145,45.341,1483,35.06]],["name/172-4",[]],["text/172-4",[]],["component/172-4",[]],["title/172-5",[1091,43.832,1145,45.341]],["name/172-5",[]],["text/172-5",[]],["component/172-5",[]],["title/172-6",[88,20.111,468,31.469,532,44.832]],["name/172-6",[]],["text/172-6",[]],["component/172-6",[]],["title/172-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/172-7",[]],["text/172-7",[]],["component/172-7",[]],["title/172-8",[8,16.222,30,28.681,150,27.755]],["name/172-8",[]],["text/172-8",[]],["component/172-8",[]],["title/172-9",[104,32.728,264,22.343,686,25.822]],["name/172-9",[]],["text/172-9",[]],["component/172-9",[]],["title/172-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/172-10",[]],["text/172-10",[]],["component/172-10",[]],["title/172-11",[2177,45.248]],["name/172-11",[]],["text/172-11",[]],["component/172-11",[]],["title/172-12",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/172-12",[]],["text/172-12",[]],["component/172-12",[]],["title/172-13",[8,16.222,746,27.183,1005,22.733]],["name/172-13",[]],["text/172-13",[]],["component/172-13",[]],["title/172-14",[728,36.562,1078,41.057,3463,57.467]],["name/172-14",[]],["text/172-14",[]],["component/172-14",[]],["title/172-15",[1255,32.348,1457,33.624]],["name/172-15",[]],["text/172-15",[]],["component/172-15",[]],["title/172",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/172",[728,0.757,1484,1]],["text/172",[2,0.571,5,0.769,6,1.268,7,0.245,8,1.751,10,1.043,12,0.512,13,1.084,14,0.775,15,2.3,17,0.761,20,0.556,26,0.401,29,1.918,30,1.43,32,1.332,33,0.503,34,1.426,35,0.53,36,0.434,37,1.095,40,2.282,42,0.819,45,1.177,56,0.886,57,1.036,65,0.654,79,2.43,84,0.727,87,1.16,88,0.797,90,1.18,94,0.584,96,0.466,97,0.648,98,1.177,101,1.878,104,0.919,110,0.852,117,0.757,118,3.086,120,1.536,134,2.089,135,0.409,136,1.688,138,1.744,139,1.4,142,0.525,144,1.415,148,0.33,155,0.947,160,0.532,161,0.715,171,0.468,172,2.109,183,0.746,184,0.839,186,2.35,189,0.556,191,2.364,196,1.099,214,1.695,224,0.49,234,0.556,239,0.874,251,0.483,252,0.447,253,0.648,264,0.627,267,1.494,271,2.09,272,0.545,275,0.492,277,0.488,278,0.587,279,1.5,280,0.447,283,0.581,292,1.002,300,0.659,301,0.403,308,1.071,315,2.159,316,1.586,319,1.622,320,1.064,328,0.742,330,1.205,331,0.518,333,0.581,340,0.595,341,0.571,350,0.542,355,1.195,361,0.855,401,1.77,402,1.381,406,1.495,408,0.52,412,0.671,443,0.988,451,0.499,455,0.492,465,0.418,468,2.118,470,0.824,482,1.115,492,2.673,502,0.441,514,2.806,517,0.577,525,1.744,528,1.047,531,0.902,532,1.776,538,2.508,539,0.732,547,0.427,552,0.753,580,0.571,593,0.471,603,1.122,608,0.51,620,0.577,656,1.824,666,0.591,679,1.562,683,2.07,686,2.106,694,1.108,695,0.486,698,0.523,723,0.713,728,4.24,746,1.356,752,0.501,754,0.428,755,0.764,765,0.691,766,0.648,773,0.638,835,2.089,850,1.296,871,0.665,890,3.604,894,0.648,896,0.628,903,0.556,907,0.706,932,0.654,972,0.507,985,1.604,1005,1.53,1008,0.542,1024,1.411,1076,0.871,1078,0.615,1083,0.723,1087,1.869,1089,3.141,1090,1.236,1091,2.538,1092,0.633,1096,0.715,1129,0.49,1133,4.203,1141,0.723,1142,0.753,1143,0.753,1145,4.664,1150,0.988,1151,3.849,1279,1.594,1381,0.753,1390,0.599,1400,0.527,1402,2.44,1416,0.602,1434,0.559,1456,0.431,1475,0.691,1477,1.026,1485,1.659,1488,4.63,1489,1.539,1490,0.623,1491,2.172,1492,0.715,1493,1.539,1494,2.172,1495,1.539,1496,0.821,1497,0.885,1498,0.665,1499,0.691,1500,0.885,1501,2.948,1502,1.659,1503,1.659,1504,2.221,1505,0.885,1506,1.659,1507,0.885,1508,1.356,1509,0.79,1513,0.699,1514,2.889,1515,0.742,1516,0.776,1517,0.715,1518,1.539,1519,0.764,1520,0.643,1521,0.821,1522,0.885,1523,0.839,1524,0.671,1622,0.742,1647,0.659,2177,0.915,2301,1.391,2408,0.821,2808,1.539,3087,0.628,3103,0.885,3287,0.821,3382,0.678,3462,0.885,3463,4.297,3465,1.714,3466,0.839,3468,0.914,3469,0.914,3471,0.839,3511,0.706,3512,0.606,3513,0.706,3514,0.723,3515,1.001,3516,2.017,3517,2.848,3518,1.001,3519,1.001,3520,1.001,3521,1.001,3522,1.001,3523,1.001,3524,1.001,3525,1.001]],["component/172",[7,0.401]],["title/173-1",[402,17.184,1456,33.432]],["name/173-1",[]],["text/173-1",[]],["component/173-1",[]],["title/173-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/173-2",[]],["text/173-2",[]],["component/173-2",[]],["title/173-3",[8,18.856,150,32.262]],["name/173-3",[]],["text/173-3",[]],["component/173-3",[]],["title/173-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/173-4",[]],["text/173-4",[]],["component/173-4",[]],["title/173-5",[2177,45.248]],["name/173-5",[]],["text/173-5",[]],["component/173-5",[]],["title/173-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/173-6",[]],["text/173-6",[]],["component/173-6",[]],["title/173-7",[8,16.222,746,27.183,1005,22.733]],["name/173-7",[]],["text/173-7",[]],["component/173-7",[]],["title/173-8",[191,22.192,984,36.025,1431,31.324,1483,26.465]],["name/173-8",[]],["text/173-8",[]],["component/173-8",[]],["title/173-9",[1255,32.348,1457,33.624]],["name/173-9",[]],["text/173-9",[]],["component/173-9",[]],["title/173",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/173",[1431,0.739,1559,0.928]],["text/173",[0,0.792,3,0.638,5,2.53,6,0.751,8,1.635,10,1.879,13,0.51,15,0.802,17,1.578,26,1.137,29,2.585,32,2.467,33,0.789,34,0.671,40,0.936,45,2.121,56,0.741,84,3.12,87,1.756,88,1.857,90,0.699,101,0.746,104,1.39,105,1.606,112,0.708,113,0.662,116,0.845,117,0.633,118,2.361,125,0.714,129,0.721,135,1.16,136,1.221,138,1.718,143,0.841,148,0.517,150,1.179,154,0.762,155,1.707,161,2.352,169,0.885,172,0.662,183,1.129,189,0.871,191,2.55,196,0.651,211,0.795,214,1.069,220,1.083,228,1.422,234,0.871,239,0.731,242,1.12,252,0.701,255,0.894,264,0.949,271,2.217,272,0.854,275,0.771,277,0.765,279,0.705,288,1.238,292,0.838,297,1.553,301,0.631,308,0.635,319,0.644,322,1.083,331,0.812,349,0.819,351,1.718,354,0.921,357,0.88,361,0.714,402,0.86,406,2.24,408,0.815,431,0.905,451,0.783,464,0.963,465,0.655,470,1.247,502,0.691,514,1.939,567,3.263,586,0.91,593,0.738,654,1.961,656,0.858,663,1.024,668,0.802,678,0.894,679,0.62,682,1.463,686,1.844,695,1.38,719,2.149,746,1.154,752,0.786,754,0.671,772,0.932,779,0.95,830,2.892,834,1.062,835,0.83,861,0.885,863,3.766,864,1.348,893,1.007,1005,1.323,1008,0.849,1068,1.941,1075,0.885,1076,1.319,1106,0.808,1107,0.826,1123,1.095,1129,0.768,1174,1.016,1195,0.921,1279,0.944,1287,0.992,1390,0.938,1431,5.318,1434,2.664,1436,1.261,1441,2.777,1456,0.675,1461,0.845,1468,1.744,1469,0.999,1475,1.083,1477,0.858,1483,2.153,1490,0.977,1498,1.042,1520,1.007,1526,1.961,1527,1.083,1555,1.838,1559,3.705,1561,1.133,1562,1.238,1563,1.387,1578,2.078,1581,2.329,1585,1.838,1608,2.441,1622,1.163,1735,0.834,1779,1.12,1880,2.202,2177,1.897,2398,1.163,2477,1.133,2587,1.238,2636,0.905,2642,0.926,2646,1.197,2844,2.51,3023,1.387,3024,1.491,3025,2.51,3027,3.127,3028,1.491,3029,1.491,3030,4.22,3031,2.699,3032,3.439,3033,2.135,3034,3.439,3035,1.387,3037,1.491,3038,1.491,3039,1.491,3040,2.51,3041,1.491,3087,0.984,3382,1.062,3490,1.433,3506,0.963,3511,1.107,3512,0.95,3513,1.107,3514,1.133,3526,2.84,3527,1.348,3528,1.433,3529,1.433,3530,2.594,3531,1.569,3532,1.569,3533,1.569,3534,1.569,3535,1.686,3536,2.84,3537,1.569,3538,1.686,3539,1.569,3540,1.569,3541,1.686]],["component/173",[7,0.401]],["title/174-1",[402,17.184,1456,33.432]],["name/174-1",[]],["text/174-1",[]],["component/174-1",[]],["title/174-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/174-2",[]],["text/174-2",[]],["component/174-2",[]],["title/174-3",[8,18.856,150,32.262]],["name/174-3",[]],["text/174-3",[]],["component/174-3",[]],["title/174-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/174-4",[]],["text/174-4",[]],["component/174-4",[]],["title/174-5",[2177,45.248]],["name/174-5",[]],["text/174-5",[]],["component/174-5",[]],["title/174-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/174-6",[]],["text/174-6",[]],["component/174-6",[]],["title/174-7",[8,16.222,746,27.183,1005,22.733]],["name/174-7",[]],["text/174-7",[]],["component/174-7",[]],["title/174-8",[8,18.856,647,46.771]],["name/174-8",[]],["text/174-8",[]],["component/174-8",[]],["title/174-9",[1255,32.348,1457,33.624]],["name/174-9",[]],["text/174-9",[]],["component/174-9",[]],["title/174",[402,10.417,1129,23.063,3494,54.705,3499,58.768]],["name/174",[3494,1.056,3499,1.135]],["text/174",[0,0.454,3,0.689,5,0.986,8,1.228,10,1.82,12,1.23,13,0.292,14,0.994,17,0.976,23,1.076,24,0.478,26,0.964,29,2.095,30,0.385,32,0.359,33,0.452,34,0.384,40,0.794,42,1.581,45,0.753,56,0.424,58,0.544,79,0.4,84,3.696,88,0.724,101,1.144,104,1.178,105,0.7,118,2.214,125,0.772,129,0.413,133,0.534,135,0.983,136,1.061,138,1.6,150,1.264,154,1.169,155,1.089,161,2.473,164,0.537,168,0.455,169,0.507,172,0.715,174,0.686,181,0.641,183,1.21,189,0.499,190,0.531,191,0.91,199,0.989,211,0.859,214,0.906,224,0.44,227,0.582,228,1.205,236,0.38,239,1.121,242,0.641,248,1.508,252,1.076,255,0.512,264,0.566,271,1.925,272,0.489,275,0.441,277,0.827,286,0.509,296,0.689,301,0.362,308,0.973,316,0.427,320,0.509,325,0.556,331,0.465,349,2.642,351,1.6,361,0.772,394,0.564,401,0.403,402,0.532,403,0.634,406,2.789,415,0.592,464,0.552,465,1.004,470,2.56,474,1.629,514,1.917,517,0.518,547,0.723,549,2.515,557,1.746,593,0.423,596,0.56,609,0.753,620,0.518,640,0.709,647,0.541,652,0.737,656,0.491,664,0.697,672,1.571,678,0.512,679,0.355,686,0.929,690,0.541,694,1.001,695,0.437,708,1.279,719,1.329,723,0.341,726,0.541,729,0.556,745,0.824,746,0.365,752,0.45,754,0.384,790,1.971,827,0.905,830,2.194,833,0.657,834,1.147,835,1.273,859,0.541,861,1.718,907,1.196,922,1.362,933,0.577,949,0.544,982,0.587,1004,0.602,1005,0.576,1008,0.487,1012,0.657,1068,1.159,1075,0.507,1076,1.682,1106,0.463,1107,0.473,1108,0.62,1110,0.592,1114,0.686,1123,0.627,1129,0.44,1138,0.614,1187,2.149,1195,0.527,1211,1.089,1214,0.597,1279,1.02,1287,0.568,1390,0.537,1431,0.48,1434,0.501,1461,0.484,1475,0.62,1477,0.491,1483,0.765,1490,0.56,1509,0.709,1514,0.657,1526,1.171,1527,0.62,1546,0.722,1555,1.097,1556,0.548,1561,0.649,1585,0.582,1625,1.718,1643,0.676,1693,0.794,1708,0.602,1735,0.901,1750,0.666,1771,2.127,1783,0.666,1795,0.753,1916,0.821,1930,1.549,1933,0.709,1950,1.183,2092,0.697,2177,1.174,2211,0.697,2256,0.722,2312,0.794,2429,0.794,2477,0.649,2588,0.753,2596,0.794,2636,0.518,2642,0.531,3033,0.676,3040,0.794,3087,0.564,3115,0.794,3129,2.621,3135,2.325,3234,0.737,3311,0.821,3382,0.608,3394,0.821,3399,0.772,3494,7.23,3498,0.854,3499,3.4,3500,8.877,3501,3.309,3502,1.549,3506,0.552,3511,0.634,3512,0.544,3513,0.634,3514,0.649,3542,1.695,3543,0.898,3544,1.611,3545,0.898,3546,0.898,3547,0.898,3548,1.695,3549,0.898,3550,1.421,3551,0.898,3552,0.898,3553,0.898,3554,0.898,3555,0.898,3556,0.966,3557,0.898,3558,0.898,3559,0.898,3560,0.898,3561,0.898,3562,1.695,3563,0.898,3564,0.898,3565,0.898,3566,3.045,3567,1.695,3568,0.898,3569,0.898,3570,0.898,3571,0.737,3572,0.898,3573,0.898,3574,0.898,3575,0.898,3576,1.822,3577,0.898,3578,2.406,3579,0.898,3580,0.898,3581,0.898,3582,0.898,3583,0.898,3584,0.898,3585,0.898,3586,0.898,3587,1.695,3588,2.406,3589,0.898,3590,0.898,3591,0.898,3592,0.898,3593,0.898,3594,0.898,3595,0.898,3596,0.898,3597,1.695,3598,0.898,3599,0.898,3600,0.898,3601,0.898,3602,0.898]],["component/174",[7,0.401]],["title/175-1",[402,17.184,1456,33.432]],["name/175-1",[]],["text/175-1",[]],["component/175-1",[]],["title/175-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/175-2",[]],["text/175-2",[]],["component/175-2",[]],["title/175-3",[8,18.856,150,32.262]],["name/175-3",[]],["text/175-3",[]],["component/175-3",[]],["title/175-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/175-4",[]],["text/175-4",[]],["component/175-4",[]],["title/175-5",[2177,45.248]],["name/175-5",[]],["text/175-5",[]],["component/175-5",[]],["title/175-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/175-6",[]],["text/175-6",[]],["component/175-6",[]],["title/175-7",[8,16.222,746,27.183,1005,22.733]],["name/175-7",[]],["text/175-7",[]],["component/175-7",[]],["title/175-8",[1255,32.348,1457,33.624]],["name/175-8",[]],["text/175-8",[]],["component/175-8",[]],["title/175",[402,10.417,1129,23.063,1591,45.657,3042,44.784,3043,33.634]],["name/175",[1591,0.882,3043,0.988]],["text/175",[3,0.93,8,2.144,13,0.743,14,0.944,19,3.122,26,0.916,29,2.405,33,1.15,38,1.244,40,2.068,42,0.998,56,1.08,84,3.737,99,1.9,105,2.17,115,1.29,117,0.923,118,2.046,135,0.935,136,1.015,138,2.77,139,1.407,148,0.754,150,1.647,154,1.111,155,1.418,161,2.703,162,1.596,172,0.965,191,2.373,214,1.979,239,1.066,240,1.633,248,2.601,264,0.764,273,3.13,277,1.115,280,1.022,296,0.93,301,0.92,324,1.614,331,1.184,349,1.194,351,1.01,361,1.041,402,1.387,406,1.318,408,1.189,415,1.506,464,1.404,465,0.954,474,2.686,493,5.599,502,1.007,506,1.633,514,1.392,525,1.01,541,1.746,557,2.275,564,2.089,593,1.867,608,1.164,621,1.633,645,1.875,656,1.251,686,2.029,690,1.376,695,1.111,708,1.215,752,1.145,754,0.978,835,1.21,861,1.29,1005,0.778,1008,1.238,1076,1.062,1091,1.29,1106,1.179,1107,1.205,1109,1.563,1129,1.119,1131,1.424,1150,1.205,1195,1.342,1279,1.376,1475,1.579,1477,1.251,1514,1.673,1517,1.633,1524,1.533,1556,1.395,1566,2.022,1591,4.955,1599,2.022,1600,2.022,1601,2.022,1622,1.696,1735,1.215,1781,1.966,2177,1.935,2342,1.838,2897,1.966,3043,5.961,3044,3.771,3045,2.174,3046,2.174,3047,2.174,3048,2.174,3049,2.174,3050,2.174,3051,2.174,3052,2.174,3053,2.174,3054,2.174,3055,2.174,3056,2.174,3057,2.287,3058,3.771,3059,2.174,3060,2.174,3061,2.174,3062,2.174,3087,1.435,3382,1.548,3506,1.404,3511,1.614,3512,1.385,3513,1.614,3514,1.652]],["component/175",[7,0.401]],["title/176-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/176-1",[]],["text/176-1",[]],["component/176-1",[]],["title/176-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/176-2",[]],["text/176-2",[]],["component/176-2",[]],["title/176-3",[8,18.856,150,32.262]],["name/176-3",[]],["text/176-3",[]],["component/176-3",[]],["title/176-4",[401,41.598]],["name/176-4",[]],["text/176-4",[]],["component/176-4",[]],["title/176-5",[191,29.399,615,42.499]],["name/176-5",[]],["text/176-5",[]],["component/176-5",[]],["title/176-6",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/176-6",[]],["text/176-6",[]],["component/176-6",[]],["title/176-7",[2177,45.248]],["name/176-7",[]],["text/176-7",[]],["component/176-7",[]],["title/176-8",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/176-8",[]],["text/176-8",[]],["component/176-8",[]],["title/176-9",[8,16.222,746,27.183,1005,22.733]],["name/176-9",[]],["text/176-9",[]],["component/176-9",[]],["title/176-10",[1255,32.348,1457,33.624]],["name/176-10",[]],["text/176-10",[]],["component/176-10",[]],["title/176",[615,46.09,937,37.981,1129,28.716]],["name/176",[937,0.896,1528,0.903]],["text/176",[0,0.878,3,0.707,5,2.113,6,0.833,8,1.861,10,1.227,18,0.773,26,1.248,29,3.26,30,2.213,33,0.875,36,0.755,38,2.304,40,1.396,42,0.759,56,0.821,58,1.054,82,1.145,84,3.177,88,1.786,96,0.81,105,1.287,108,1.177,118,1.381,129,0.8,135,1.73,136,1.32,138,1.376,148,1.396,150,0.722,155,1.114,161,3.37,172,0.734,183,2.36,185,2.09,191,1.179,199,1.015,201,1.201,211,0.882,214,1.174,228,1.561,239,1.452,262,0.992,264,0.581,265,1.145,271,2.757,277,0.848,279,1.402,301,0.7,308,0.704,316,0.827,319,1.28,330,2.001,331,0.9,350,0.942,361,0.792,378,2.11,401,0.78,402,0.936,406,2.383,408,0.904,446,0.864,465,0.726,470,1.368,486,4.679,502,0.766,514,3.105,516,1.426,528,0.971,552,0.698,601,1.29,608,1.586,615,3.609,620,1.003,630,1.863,668,1.593,674,1.126,676,1.136,677,1.061,679,1.233,683,0.912,686,1.204,687,2.09,695,1.514,719,2.338,746,0.707,752,0.871,754,0.744,760,2.09,788,1.009,790,0.947,830,1.054,835,0.92,873,1.117,937,2.741,970,1.166,1005,0.591,1008,0.942,1075,0.981,1076,0.808,1106,0.896,1107,0.916,1126,1.189,1127,1.227,1129,0.851,1130,1.054,1134,1.257,1150,2.717,1169,1.201,1201,1.189,1279,2.548,1286,1.372,1305,1.328,1390,2.532,1434,0.971,1461,0.937,1469,1.108,1472,1.009,1475,1.201,1477,0.951,1514,3.775,1528,4.683,1529,1.328,1530,1.372,1531,1.426,1532,1.538,1533,1.242,1534,1.538,1537,1.328,1538,2.071,1540,1.372,1544,2.866,1545,1.29,1546,1.398,1552,1.426,1555,2.018,1556,1.901,1590,3.232,1622,1.29,1735,0.924,1779,2.225,2177,2.065,2301,1.29,2636,1.003,2642,1.027,3063,4.024,3064,1.653,3065,1.653,3066,1.653,3067,1.653,3068,1.653,3069,1.653,3070,1.653,3071,1.653,3073,4.024,3077,1.653,3079,1.653,3080,1.653,3081,1.653,3082,1.653,3083,2.962,3084,1.653,3085,1.653,3086,1.653,3087,1.091,3382,1.177,3477,2.071,3485,2.679,3506,1.068,3511,1.227,3512,1.054,3513,1.227,3514,1.257,3603,1.87,3604,1.87,3605,1.739,3606,1.87,3607,1.739,3608,1.87]],["component/176",[7,0.401]],["title/177-1",[402,17.184,1456,33.432]],["name/177-1",[]],["text/177-1",[]],["component/177-1",[]],["title/177-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/177-2",[]],["text/177-2",[]],["component/177-2",[]],["title/177-3",[8,18.856,150,32.262]],["name/177-3",[]],["text/177-3",[]],["component/177-3",[]],["title/177-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/177-4",[]],["text/177-4",[]],["component/177-4",[]],["title/177-5",[2177,45.248]],["name/177-5",[]],["text/177-5",[]],["component/177-5",[]],["title/177-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/177-6",[]],["text/177-6",[]],["component/177-6",[]],["title/177-7",[8,16.222,746,27.183,1005,22.733]],["name/177-7",[]],["text/177-7",[]],["component/177-7",[]],["title/177-8",[1255,32.348,1457,33.624]],["name/177-8",[]],["text/177-8",[]],["component/177-8",[]],["title/177",[138,34.207,139,18.53,677,47.243]],["name/177",[138,0.611,677,0.844]],["text/177",[5,2.737,7,0.615,8,1.043,17,1.018,26,3.008,29,1.649,33,1.262,34,1.074,37,1.465,40,0.828,58,1.521,84,3.322,88,1.696,90,1.119,101,1.194,110,2.56,113,1.059,129,1.977,135,1.026,136,1.442,138,3.617,142,1.316,144,1.065,146,1.311,148,1.418,150,1.042,155,0.898,161,3.12,163,1.243,170,1.492,172,1.059,180,1.492,183,0.998,191,1.626,196,3.118,199,2.508,205,1.916,214,1.619,215,2.969,228,1.257,239,1.17,264,1.437,271,1.166,277,1.224,279,1.934,280,2.986,301,2.269,316,1.194,331,2.225,333,1.456,351,1.109,361,1.143,401,1.126,402,1.247,406,1.429,408,1.305,445,1.542,459,1.531,465,1.048,470,2.475,474,1.699,484,2.784,508,2.465,514,2.344,521,1.625,525,1.109,531,1.207,547,1.071,556,1.492,570,1.465,593,1.182,608,1.278,630,3.372,677,1.531,686,0.97,695,3.65,719,1.387,728,1.373,732,1.599,745,1.22,752,1.257,760,1.683,864,2.158,865,1.316,910,1.501,932,2.807,949,4.55,950,1.981,1008,1.36,1076,1.166,1091,1.416,1106,1.294,1107,1.322,1114,1.916,1169,2.969,1255,1.045,1390,2.571,1458,2.059,1459,2.219,1460,2.219,1461,1.353,1462,2.219,1463,2.059,1465,1.916,1466,2.219,1467,1.947,1468,1.542,1469,1.599,1470,2.219,1471,2.219,1472,1.456,1477,1.373,1484,1.814,1530,1.981,1661,1.837,1735,1.334,2177,3.257,2348,1.916,2477,1.814,2479,2.018,2634,1.947,2636,1.448,2642,2.539,2646,1.916,3087,2.698,3088,2.386,3089,2.386,3090,2.386,3506,1.542,3511,1.772,3512,1.521,3513,1.772,3609,2.51]],["component/177",[7,0.401]],["title/178-1",[402,17.184,1456,33.432]],["name/178-1",[]],["text/178-1",[]],["component/178-1",[]],["title/178-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/178-2",[]],["text/178-2",[]],["component/178-2",[]],["title/178-3",[8,18.856,150,32.262]],["name/178-3",[]],["text/178-3",[]],["component/178-3",[]],["title/178-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/178-4",[]],["text/178-4",[]],["component/178-4",[]],["title/178-5",[17,23.79,18,26.062,2658,46.286,3610,58.665]],["name/178-5",[]],["text/178-5",[]],["component/178-5",[]],["title/178-6",[2177,45.248]],["name/178-6",[]],["text/178-6",[]],["component/178-6",[]],["title/178-7",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/178-7",[]],["text/178-7",[]],["component/178-7",[]],["title/178-8",[8,16.222,746,27.183,1005,22.733]],["name/178-8",[]],["text/178-8",[]],["component/178-8",[]],["title/178-9",[1255,32.348,1457,33.624]],["name/178-9",[]],["text/178-9",[]],["component/178-9",[]],["title/178",[311,30.628,1609,35.079,1610,36.54,3228,44.782]],["name/178",[1610,0.599,1612,0.551,3228,0.734]],["text/178",[3,1.069,8,1.671,10,3.039,13,0.855,17,1.066,18,1.168,26,1.791,32,1.787,34,1.125,45,2.593,79,1.172,84,3.176,88,0.791,99,1.259,105,1.086,109,2.114,112,1.186,113,1.109,117,1.061,118,0.858,121,1.445,125,1.198,129,1.209,136,0.673,138,1.161,139,0.932,144,1.116,148,0.867,155,3.373,157,2.04,168,1.333,170,1.563,172,1.109,174,2.007,183,1.778,191,0.995,206,1.835,214,2.908,226,1.65,239,1.225,247,1.563,249,1.361,251,1.268,252,1.999,255,1.499,264,0.879,266,1.924,277,1.282,296,2.373,301,2.349,308,1.064,311,2.335,316,1.251,320,1.491,331,1.361,335,1.499,361,1.198,391,2.249,402,0.989,406,0.874,442,1.835,460,1.109,465,1.867,470,1.964,487,1.141,502,1.158,514,1.57,547,1.122,557,1.508,567,1.798,569,2.075,608,1.339,617,1.438,679,1.769,686,1.728,695,1.278,708,1.398,752,1.317,754,1.125,760,1.763,863,2.075,871,1.747,907,1.856,922,2.114,963,1.344,972,2.959,1005,0.894,1008,1.424,1015,1.978,1062,1.798,1075,1.483,1076,1.221,1137,1.877,1421,3.058,1431,4.122,1441,3.193,1477,1.438,1562,2.075,1578,3.273,1581,2.157,1609,1.572,1610,4.809,1611,2.972,1612,1.508,1613,2.325,1614,2.325,1619,2.04,1620,2.972,1623,2.157,1735,1.398,1880,3.47,2005,2.402,2006,2.402,2177,2.847,2374,3.317,2636,1.516,2642,1.553,2658,2.075,3087,1.65,3228,4.456,3260,6.292,3391,2.26,3506,1.615,3511,1.856,3512,1.593,3611,2.63,3612,2.63,3613,4.473,3614,2.63,3615,4.473,3616,2.63,3617,2.63,3618,2.63,3619,2.63]],["component/178",[7,0.401]],["title/179-1",[402,17.184,1456,33.432]],["name/179-1",[]],["text/179-1",[]],["component/179-1",[]],["title/179-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/179-2",[]],["text/179-2",[]],["component/179-2",[]],["title/179-3",[8,18.856,150,32.262]],["name/179-3",[]],["text/179-3",[]],["component/179-3",[]],["title/179-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/179-4",[]],["text/179-4",[]],["component/179-4",[]],["title/179-5",[2177,45.248]],["name/179-5",[]],["text/179-5",[]],["component/179-5",[]],["title/179-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/179-6",[]],["text/179-6",[]],["component/179-6",[]],["title/179-7",[8,16.222,746,27.183,1005,22.733]],["name/179-7",[]],["text/179-7",[]],["component/179-7",[]],["title/179-8",[1255,32.348,1457,33.624]],["name/179-8",[]],["text/179-8",[]],["component/179-8",[]],["title/179",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/179",[1612,0.793,1754,0.977]],["text/179",[5,2.47,8,1.463,13,1.227,14,2.49,17,3.053,18,1.677,26,2.415,84,3.168,88,2.264,105,2.49,118,1.231,129,1.736,136,1.542,138,2.663,139,1.339,148,1.245,155,3.759,168,1.914,172,1.593,191,1.428,214,2.835,224,1.848,228,1.891,239,1.759,264,1.262,271,1.753,277,1.841,301,1.52,308,1.527,316,1.796,331,1.954,361,1.719,391,1.899,402,1.333,406,2.004,460,1.593,465,1.576,470,2.647,487,1.638,514,3.017,547,1.611,557,2.165,608,1.922,617,2.065,679,2.385,686,2.329,695,1.835,708,2.007,752,1.891,754,1.615,930,2.664,963,1.93,1005,1.284,1008,2.045,1075,3.401,1076,1.753,1137,2.695,1279,2.272,1421,4.122,1468,6.151,1472,2.19,1477,2.065,1612,2.165,1735,2.007,1754,2.664,1755,6.967,1756,3.338,2177,3.671,2636,2.177,2642,2.229,3087,2.369,3194,3.449,3382,2.556,3506,2.318,3511,2.664,3512,2.287,3620,3.776,3621,3.776,3622,3.776]],["component/179",[7,0.401]],["title/180-1",[402,17.184,1456,33.432]],["name/180-1",[]],["text/180-1",[]],["component/180-1",[]],["title/180-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/180-2",[]],["text/180-2",[]],["component/180-2",[]],["title/180-3",[8,18.856,150,32.262]],["name/180-3",[]],["text/180-3",[]],["component/180-3",[]],["title/180-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/180-4",[]],["text/180-4",[]],["component/180-4",[]],["title/180-5",[2177,45.248]],["name/180-5",[]],["text/180-5",[]],["component/180-5",[]],["title/180-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/180-6",[]],["text/180-6",[]],["component/180-6",[]],["title/180-7",[8,16.222,746,27.183,1005,22.733]],["name/180-7",[]],["text/180-7",[]],["component/180-7",[]],["title/180-8",[1255,32.348,1457,33.624]],["name/180-8",[]],["text/180-8",[]],["component/180-8",[]],["title/180",[311,34.906,1609,39.979,3623,54.829]],["name/180",[1612,0.793,3623,1.135]],["text/180",[5,2.417,8,1.431,10,1.446,13,1.194,17,0.849,18,0.93,25,1.513,26,0.838,29,2.835,32,2.681,33,1.053,40,0.691,45,2.18,63,1.304,79,0.933,84,3.613,87,2.272,88,0.63,90,0.933,105,2.027,110,1.668,117,0.845,118,1.198,125,0.954,129,0.963,136,0.536,148,0.691,150,0.869,154,1.017,155,1.313,161,2.556,183,2.345,189,1.162,191,1.857,214,1.848,225,1.495,228,1.049,234,1.162,239,1.712,242,1.495,251,1.01,264,0.7,271,2.279,272,1.139,279,1.652,292,1.118,297,1.145,301,0.843,319,0.86,331,1.084,349,1.093,351,0.925,356,1.098,361,0.954,386,1.151,402,0.812,406,0.696,408,1.088,431,1.207,464,1.286,470,1.613,487,0.908,502,0.922,508,1.201,514,1.289,567,3.355,593,0.985,617,1.145,654,1.446,656,1.145,663,1.367,668,1.07,682,1.893,686,1.895,694,1.236,695,2.385,719,1.157,746,1.494,752,1.049,754,1.571,772,1.244,779,1.268,782,1.756,830,2.225,863,4.654,893,1.345,963,1.07,1005,1.249,1075,1.181,1195,1.229,1279,1.26,1421,2.511,1431,4.518,1434,2.739,1436,2.952,1441,2.622,1456,0.901,1468,1.286,1486,1.851,1509,1.652,1526,1.446,1527,1.446,1555,1.356,1571,1.913,1578,1.532,1581,3.013,1585,3.177,1612,1.201,1665,1.851,1691,1.624,1735,1.952,1747,1.624,1880,1.624,2177,1.021,2309,1.446,2477,1.513,2587,1.652,2636,1.207,2642,1.236,2684,3.08,3023,1.851,3025,1.851,3027,1.683,3030,1.851,3032,1.851,3033,1.575,3034,4.339,3035,1.851,3087,1.314,3382,1.417,3504,1.913,3506,1.286,3511,1.478,3512,1.268,3513,1.478,3514,1.513,3527,1.8,3528,1.913,3529,1.913,3530,1.913,3623,5.504,3624,4.484,3625,2.094,3626,2.094,3627,2.094,3628,2.094,3629,2.094,3630,2.094,3631,2.094,3632,2.094,3633,2.094,3634,2.094,3635,2.251,3636,2.094,3637,2.094]],["component/180",[7,0.401]],["title/181-1",[402,17.184,1456,33.432]],["name/181-1",[]],["text/181-1",[]],["component/181-1",[]],["title/181-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/181-2",[]],["text/181-2",[]],["component/181-2",[]],["title/181-3",[8,18.856,150,32.262]],["name/181-3",[]],["text/181-3",[]],["component/181-3",[]],["title/181-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/181-4",[]],["text/181-4",[]],["component/181-4",[]],["title/181-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/181-5",[]],["text/181-5",[]],["component/181-5",[]],["title/181-6",[10,23.093,333,34.025,706,36.279,1758,36.279]],["name/181-6",[]],["text/181-6",[]],["component/181-6",[]],["title/181-7",[1758,48.06,3257,61.318]],["name/181-7",[]],["text/181-7",[]],["component/181-7",[]],["title/181-8",[8,16.222,746,27.183,1005,22.733]],["name/181-8",[]],["text/181-8",[]],["component/181-8",[]],["title/181-9",[1255,32.348,1457,33.624]],["name/181-9",[]],["text/181-9",[]],["component/181-9",[]],["title/181",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/181",[1758,0.856,1759,0.764]],["text/181",[3,0.494,6,1.075,8,1.789,10,2.04,13,0.73,17,1.858,23,0.543,26,0.486,29,2.952,30,0.963,32,1.56,34,0.519,35,2.066,36,0.974,37,0.708,40,0.4,42,0.98,56,0.573,57,0.67,58,1.36,71,0.628,84,3.574,88,0.942,90,0.541,92,1.862,104,0.594,110,1.019,113,0.947,115,1.266,117,1.264,118,2.288,125,0.553,127,0.762,129,0.558,133,0.721,135,0.496,136,0.574,138,0.536,142,0.637,143,1.681,147,0.762,154,1.091,155,1.638,161,2.808,165,0.786,168,0.615,172,2.411,183,0.893,188,0.704,191,0.459,195,0.735,196,0.932,236,0.514,239,0.566,251,1.083,252,1.4,253,0.786,263,0.577,271,1.455,272,0.661,275,1.103,279,0.546,286,0.688,289,0.9,293,0.74,301,0.489,319,1.604,335,0.692,341,0.692,349,0.634,350,0.657,356,0.637,357,1.26,402,1.146,406,1.041,431,1.807,441,0.731,451,0.606,455,1.103,468,0.571,470,2.275,482,1.334,486,3.16,502,1.379,508,0.696,517,0.7,549,0.603,580,1.787,603,0.726,604,0.657,608,1.143,630,1.343,656,0.664,684,1.563,686,2.392,690,1.351,695,0.59,698,1.636,706,1.938,730,0.867,746,0.913,751,0.927,752,0.608,754,0.519,786,0.639,859,0.731,873,0.78,907,2.211,932,2.046,943,0.792,968,2.048,980,0.9,1005,1.065,1011,2.896,1012,0.888,1066,0.648,1068,3.542,1076,1.043,1127,0.857,1195,0.712,1200,0.941,1348,0.958,1361,0.958,1388,1.018,1400,0.639,1461,1.21,1468,1.379,1483,1.413,1520,0.78,1524,0.814,1528,0.792,1530,0.958,1538,0.806,1540,0.958,1544,0.822,1620,0.806,1643,0.913,1735,0.645,1758,6.368,1759,2.157,1762,0.995,1763,1.043,1764,1.073,1765,1.073,1767,1.073,1780,0.995,1783,0.9,1827,1.643,1942,1.37,1963,0.995,1996,1.714,2016,0.814,2045,0.9,2050,1.742,2067,1.018,2137,0.83,2177,0.592,2237,1.043,2336,0.913,2369,1.018,2422,0.726,2559,1.985,2588,1.018,2593,1.073,2619,0.799,2626,0.888,2636,0.7,2642,0.717,2682,1.073,2694,1.073,2837,1.073,2851,5.053,2926,1.073,3257,4.887,3287,1.841,3466,2.627,3471,2.627,3477,1.492,3485,1.043,3506,0.745,3511,0.857,3512,0.735,3624,1.109,3638,2.246,3639,1.214,3640,1.214,3641,1.305,3642,1.305,3643,1.305,3644,1.305,3645,1.305,3646,1.305,3647,1.214,3648,2.051,3649,1.214,3650,2.051,3651,1.214,3652,1.073,3653,1.109,3654,1.109,3655,1.214,3656,1.214,3657,1.214,3658,1.305,3659,1.305,3660,2.246,3661,1.214,3662,1.214,3663,1.214,3664,1.214,3665,1.214,3666,4.582,3667,4.582,3668,2.246,3669,2.246,3670,1.214,3671,1.214,3672,1.214,3673,1.214,3674,1.214,3675,1.214,3676,1.214,3677,1.214,3678,1.214,3679,1.214,3680,1.214,3681,1.214,3682,1.214,3683,1.214,3684,1.214]],["component/181",[7,0.401]],["title/182-1",[402,17.184,1456,33.432]],["name/182-1",[]],["text/182-1",[]],["component/182-1",[]],["title/182-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/182-2",[]],["text/182-2",[]],["component/182-2",[]],["title/182-3",[8,18.856,150,32.262]],["name/182-3",[]],["text/182-3",[]],["component/182-3",[]],["title/182-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/182-4",[]],["text/182-4",[]],["component/182-4",[]],["title/182-5",[8,16.222,746,27.183,1005,22.733]],["name/182-5",[]],["text/182-5",[]],["component/182-5",[]],["title/182-6",[1255,32.348,1457,33.624]],["name/182-6",[]],["text/182-6",[]],["component/182-6",[]],["title/182",[161,13.854,968,30.686,1431,19.421,1647,23.953,1759,20.09,3027,29.233,3234,29.828,3685,29.828]],["name/182",[1431,0.513,1759,0.531,3685,0.788]],["text/182",[5,3.419,8,1.404,13,1.166,32,3.334,46,2.504,64,5.193,76,2.159,77,2.002,84,3.348,91,2.023,93,2.002,118,1.17,124,2.625,128,2.012,130,2.118,136,1.48,161,4.581,167,2.883,168,1.818,169,2.023,214,1.351,242,2.561,253,2.322,263,1.706,271,3.378,272,1.952,275,1.763,277,1.749,311,3.798,349,1.873,386,1.971,402,1.608,406,3.042,451,1.79,502,2.548,608,2.946,647,2.159,665,1.833,679,1.419,686,1.385,754,1.534,786,3.831,873,2.304,903,4.038,910,3.46,963,1.833,968,4.376,972,1.818,998,2.504,1005,1.22,1200,2.782,1431,1.915,1461,3.119,1647,3.811,1672,3.171,2191,3.171,2493,3.008,2619,2.362,3027,5.846,3033,2.698,3234,5.965,3450,2.383,3459,2.942,3685,4.746,3686,3.587,3687,3.587,3688,3.587,3689,3.587,3690,3.277,3691,3.277,3692,3.083,3693,3.083,3694,3.083,3695,3.587,3696,3.587,3697,3.587]],["component/182",[7,0.401]],["title/183-1",[402,17.184,1456,33.432]],["name/183-1",[]],["text/183-1",[]],["component/183-1",[]],["title/183-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/183-2",[]],["text/183-2",[]],["component/183-2",[]],["title/183-3",[1145,45.341,1483,35.06]],["name/183-3",[]],["text/183-3",[]],["component/183-3",[]],["title/183-4",[1091,43.832,1145,45.341]],["name/183-4",[]],["text/183-4",[]],["component/183-4",[]],["title/183-5",[88,20.111,468,31.469,532,44.832]],["name/183-5",[]],["text/183-5",[]],["component/183-5",[]],["title/183-6",[8,18.856,150,32.262]],["name/183-6",[]],["text/183-6",[]],["component/183-6",[]],["title/183-7",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/183-7",[]],["text/183-7",[]],["component/183-7",[]],["title/183-8",[36,25.454,88,17.646,148,19.348,161,22.344]],["name/183-8",[]],["text/183-8",[]],["component/183-8",[]],["title/183-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/183-9",[]],["text/183-9",[]],["component/183-9",[]],["title/183-10",[8,16.222,746,27.183,1005,22.733]],["name/183-10",[]],["text/183-10",[]],["component/183-10",[]],["title/183-11",[1255,32.348,1457,33.624]],["name/183-11",[]],["text/183-11",[]],["component/183-11",[]],["title/183",[161,13.854,968,30.686,1759,20.09,3092,44.672,3093,44.672,3094,31.263]],["name/183",[1759,0.531,3092,0.734,3093,0.734]],["text/183",[3,0.681,8,0.731,10,2.76,12,0.856,13,0.544,15,0.856,29,1.574,34,0.716,40,0.993,56,0.791,84,3.83,88,0.906,97,1.95,99,1.443,101,0.796,104,2.831,110,0.76,117,0.676,118,2.45,120,2.381,135,0.684,136,1.05,154,0.814,161,3.885,171,0.783,172,2.116,188,0.971,191,0.633,194,1.059,196,1.25,239,0.78,252,1.835,270,1.299,271,0.778,272,0.911,275,0.823,279,0.753,280,0.748,296,0.681,315,1.084,316,1.432,319,0.688,333,0.971,352,2.126,386,0.92,402,1.109,406,1.001,451,0.835,460,0.706,465,0.699,468,1.418,502,1.326,514,1.76,525,0.739,532,2.02,538,1.259,539,1.225,553,2.439,630,2.454,656,0.916,686,1.163,688,6.471,728,4.753,730,4.129,746,0.681,752,0.839,754,0.716,968,1.579,1005,0.569,1087,2.126,1091,0.944,1106,0.863,1107,0.882,1141,1.21,1142,1.259,1143,1.259,1145,4.382,1150,0.882,1151,4.082,1154,2.204,1169,2.835,1195,0.983,1381,1.259,1402,1.225,1434,0.934,1456,0.72,1461,0.903,1488,3.239,1489,1.373,1490,1.043,1491,2.47,1492,1.195,1493,2.47,1494,1.373,1495,2.47,1496,1.373,1498,1.113,1499,1.156,1524,1.123,1735,0.89,1759,2.267,1780,1.373,1827,1.225,1889,1.48,2244,1.53,2356,2.299,2455,1.278,3092,3.133,3093,3.828,3094,3.528,3095,1.592,3096,1.592,3097,1.592,3098,1.592,3099,1.592,3100,1.592,3101,2.863,3102,1.592,3103,1.48,3104,2.863,3105,1.592,3106,1.592,3107,1.592,3108,1.592,3109,1.592,3110,1.592,3111,1.592,3112,1.592,3113,1.592,3114,1.592,3115,1.48,3116,1.592,3506,1.028,3511,1.182,3512,1.014]],["component/183",[7,0.401]],["title/184-1",[402,17.184,1456,33.432]],["name/184-1",[]],["text/184-1",[]],["component/184-1",[]],["title/184-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/184-2",[]],["text/184-2",[]],["component/184-2",[]],["title/184-3",[8,18.856,150,32.262]],["name/184-3",[]],["text/184-3",[]],["component/184-3",[]],["title/184-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/184-4",[]],["text/184-4",[]],["component/184-4",[]],["title/184-5",[2177,45.248]],["name/184-5",[]],["text/184-5",[]],["component/184-5",[]],["title/184-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/184-6",[]],["text/184-6",[]],["component/184-6",[]],["title/184-7",[8,16.222,746,27.183,1005,22.733]],["name/184-7",[]],["text/184-7",[]],["component/184-7",[]],["title/184-8",[1255,32.348,1457,33.624]],["name/184-8",[]],["text/184-8",[]],["component/184-8",[]],["title/184",[1128,32.569,1558,47.283,1786,33.829]],["name/184",[1558,0.776,1786,0.798]],["text/184",[3,0.652,5,2.799,6,0.768,8,1.178,10,1.911,14,0.662,15,0.82,17,2.276,18,0.712,26,1.16,29,2.62,30,1.243,32,0.641,33,0.806,40,1.307,49,1.107,56,0.757,63,1.804,84,3.606,88,2.205,99,0.768,101,1.884,105,0.662,110,0.728,113,0.677,117,0.647,118,2.228,121,0.881,129,0.737,130,0.947,135,1.984,136,1.013,138,1.749,155,1.036,161,1.849,168,0.813,169,0.904,172,0.677,181,1.145,183,1.151,191,0.607,196,0.666,203,0.936,211,0.813,214,1.492,228,1.984,239,0.747,251,2.707,252,0.717,264,0.536,271,1.84,277,0.782,278,0.941,279,0.721,280,0.717,301,0.645,311,1.512,316,0.763,319,0.659,320,0.909,331,0.83,350,2.145,361,1.319,395,0.999,402,1.241,406,2.27,408,0.834,420,1.107,421,0.86,459,0.978,461,1.265,465,0.669,470,1.272,486,3.423,514,2.865,525,0.708,531,0.771,552,0.644,558,1.086,593,0.755,608,0.816,615,0.877,618,1.132,665,1.481,670,0.845,679,1.146,684,0.8,686,1.119,695,0.779,726,2.384,740,1.244,746,0.652,752,0.803,754,0.686,774,1.056,779,0.971,788,0.93,865,0.841,893,1.03,896,3.521,903,0.89,931,1.145,968,0.841,1005,0.545,1008,0.868,1017,1.075,1075,0.904,1076,1.84,1106,1.493,1107,1.526,1128,1.608,1150,2.557,1279,0.965,1390,0.959,1400,0.845,1434,0.895,1453,1.418,1461,0.864,1465,1.224,1469,1.022,1477,0.877,1483,1.787,1517,2.068,1524,1.075,1528,1.047,1537,1.224,1538,1.925,1543,1.265,1544,1.086,1546,1.289,1551,1.056,1555,1.875,1556,1.767,1558,4.579,1565,1.224,1590,1.224,1620,1.065,1726,2.328,1735,0.852,1741,1.206,1770,1.315,1787,2.429,1788,1.418,1789,1.345,1790,1.189,1794,1.265,1795,2.429,1796,1.345,1797,1.418,1798,1.345,1799,1.345,1800,1.345,1801,1.265,1802,1.265,1803,1.224,1804,1.345,1805,1.265,1806,1.289,1807,1.189,1808,1.224,1809,1.265,1810,1.418,1811,1.265,1812,1.345,1813,1.265,1815,2.561,2177,1.932,2211,1.244,2352,2.12,2613,1.289,2629,1.378,2636,0.925,2642,0.947,2736,1.289,3087,1.006,3117,1.378,3118,1.378,3119,1.378,3120,1.378,3121,1.524,3382,1.086,3477,1.065,3506,0.985,3511,1.132,3512,0.971,3513,1.132,3514,1.159,3648,1.465,3650,2.646,3652,1.418,3653,2.646,3654,1.465,3698,1.724,3699,1.604]],["component/184",[7,0.401]],["title/185-1",[402,17.184,1456,33.432]],["name/185-1",[]],["text/185-1",[]],["component/185-1",[]],["title/185-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/185-2",[]],["text/185-2",[]],["component/185-2",[]],["title/185-3",[8,18.856,150,32.262]],["name/185-3",[]],["text/185-3",[]],["component/185-3",[]],["title/185-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/185-4",[]],["text/185-4",[]],["component/185-4",[]],["title/185-5",[2177,45.248]],["name/185-5",[]],["text/185-5",[]],["component/185-5",[]],["title/185-6",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/185-6",[]],["text/185-6",[]],["component/185-6",[]],["title/185-7",[8,16.222,746,27.183,1005,22.733]],["name/185-7",[]],["text/185-7",[]],["component/185-7",[]],["title/185-8",[1255,32.348,1457,33.624]],["name/185-8",[]],["text/185-8",[]],["component/185-8",[]],["title/185",[1128,32.569,1786,33.829,1819,55.503]],["name/185",[1786,0.798,1819,0.911]],["text/185",[3,0.938,5,2.923,6,0.599,8,1.136,10,2.294,14,1.934,17,2.145,18,0.555,26,1.286,29,2.586,30,1.378,32,1.871,36,0.542,40,1.318,42,0.545,56,0.59,79,1.781,84,3.7,88,2.146,99,0.599,101,0.594,105,0.953,112,0.564,117,0.931,118,1.901,125,0.569,129,0.575,134,0.821,135,1.914,136,1.023,138,1.419,144,0.53,146,0.652,148,0.412,150,0.958,154,0.607,155,0.825,158,1.199,161,2.015,169,0.705,172,0.973,183,1.589,191,0.473,196,1.659,199,0.729,203,0.729,205,0.954,211,0.634,214,0.869,221,0.823,228,1.155,234,0.694,239,0.582,251,0.603,254,1.533,264,0.418,267,0.705,271,1.492,277,0.609,279,0.562,280,0.559,301,0.928,311,1.204,320,1.308,331,0.647,361,0.569,388,0.729,391,0.628,401,0.56,402,1.036,406,2.24,408,0.65,414,0.927,420,0.863,431,0.721,455,0.614,458,0.767,465,0.522,470,1.013,486,3.554,502,2.062,508,0.717,514,2.366,520,0.863,531,0.601,549,0.621,552,0.502,557,0.717,558,0.846,577,1.863,593,0.588,615,1.757,618,0.882,647,1.388,656,0.683,665,0.639,670,0.658,679,0.494,682,0.644,684,0.624,686,1.241,695,0.607,726,2.406,746,0.508,752,0.626,754,0.535,772,0.743,779,0.757,788,0.725,835,0.661,893,1.481,896,3.319,903,0.694,933,0.803,964,0.94,1005,0.425,1008,0.677,1075,0.705,1076,0.58,1106,1.189,1107,1.215,1125,1.481,1128,0.694,1139,0.816,1150,2.105,1168,0.914,1214,0.83,1287,0.79,1301,1.82,1352,1.048,1390,1.379,1434,0.697,1461,0.674,1469,0.796,1477,0.683,1483,0.564,1528,0.816,1538,0.83,1543,0.986,1544,1.562,1551,0.823,1555,1.493,1556,0.762,1558,1.294,1565,0.954,1585,2.08,1669,0.914,1726,1.854,1735,1.226,1741,0.94,1750,0.927,1759,0.69,1787,1.048,1790,0.927,1794,0.986,1798,1.048,1799,1.048,1800,1.048,1801,0.986,1802,0.986,1803,0.954,1804,1.048,1805,0.986,1807,0.927,1808,0.954,1809,0.986,1811,0.986,1812,1.048,1813,0.986,1819,5.69,1820,2.039,1821,2.535,1822,2.84,1823,2.694,1824,1.105,1825,1.105,1827,1.688,1831,1.105,1832,1.105,1838,1.105,1843,1.854,1844,1.105,1845,1.048,1846,0.903,1847,1.105,1848,1.105,1849,0.954,1851,1.934,1852,0.846,1853,1.105,2076,0.83,2177,1.567,2211,0.969,2613,1.004,2636,0.721,2642,0.738,2736,1.004,3087,0.784,3117,1.074,3118,1.074,3119,1.074,3120,1.074,3477,0.83,3506,0.767,3511,0.882,3512,0.757,3700,3.213,3701,2.307,3702,1.25,3703,1.25,3704,1.25,3705,1.25,3706,1.25,3707,1.25,3708,1.25,3709,1.25,3710,1.25,3711,1.25,3712,1.25,3713,1.25,3714,1.25,3715,1.25]],["component/185",[7,0.401]],["title/186-1",[343,64.077]],["name/186-1",[]],["text/186-1",[]],["component/186-1",[]],["title/186-2",[192,33.622,402,14.783,690,40.238]],["name/186-2",[]],["text/186-2",[]],["component/186-2",[]],["title/186-3",[402,17.184,1129,38.042]],["name/186-3",[]],["text/186-3",[]],["component/186-3",[]],["title/186-4",[402,17.184,1128,43.146]],["name/186-4",[]],["text/186-4",[]],["component/186-4",[]],["title/186-5",[311,34.906,402,14.783,1609,39.979]],["name/186-5",[]],["text/186-5",[]],["component/186-5",[]],["title/186-6",[161,25.466,402,14.783,1759,36.93]],["name/186-6",[]],["text/186-6",[]],["component/186-6",[]],["title/186-7",[2,38.123,402,14.783,3450,44.422]],["name/186-7",[]],["text/186-7",[]],["component/186-7",[]],["title/186-8",[264,22.343,402,14.783,1936,41.347]],["name/186-8",[]],["text/186-8",[]],["component/186-8",[]],["title/186-9",[402,17.184,1040,44.562]],["name/186-9",[]],["text/186-9",[]],["component/186-9",[]],["title/186",[7,19.043,402,17.184]],["name/186",[631,1.45]],["text/186",[2,1.421,3,1.738,5,1.021,8,1.037,12,2.184,13,1.389,14,1.765,15,1.274,17,1.733,18,1.899,20,1.384,23,1.114,26,2.662,29,1.639,34,2.4,40,0.822,52,1.965,56,2.018,64,1.78,71,1.29,77,1.391,84,1.54,88,0.75,98,1.564,104,1.22,105,1.765,110,1.132,117,1.006,118,0.813,125,1.946,128,1.399,134,1.997,135,1.747,136,1.093,144,1.058,146,2.929,148,1.85,150,1.035,151,2.84,155,0.891,158,1.296,160,1.325,161,2.849,162,1.74,163,2.116,178,1.274,183,1.699,185,1.672,192,2.149,196,1.035,221,1.642,224,1.22,248,1.234,252,1.114,255,2.437,264,2.222,275,2.1,282,1.454,286,1.414,296,1.014,297,1.363,308,2.269,311,3.471,343,1.722,391,1.254,401,1.118,402,2.695,465,1.784,514,1.969,531,1.198,547,1.063,548,1.601,620,1.438,643,1.967,647,1.5,665,1.274,678,1.421,679,0.986,680,1.244,686,0.963,690,2.572,698,1.302,719,2.361,728,2.337,729,1.542,865,2.241,906,2.204,931,1.78,972,1.264,1040,2.451,1128,2.373,1129,4.272,1306,1.967,1431,1.331,1468,1.531,1477,1.363,1484,3.088,1555,2.767,1558,1.399,1609,3.976,1610,1.553,1692,2.004,1755,1.849,1758,1.542,1759,3.672,1779,1.78,1819,1.642,1821,1.967,1936,1.542,1937,2.204,1940,2.204,1942,1.52,1943,2.004,1944,3.778,1945,1.588,1946,1.967,2234,3.214,2477,1.801,2673,1.875,2934,1.934,3092,1.903,3093,1.903,3122,2.37,3123,2.37,3124,2.37,3125,2.37,3126,2.37,3228,1.903,3450,3.727,3571,3.505,3623,2.044,3685,2.044]],["component/186",[7,0.401]],["title/187-1",[402,17.184,1456,33.432]],["name/187-1",[]],["text/187-1",[]],["component/187-1",[]],["title/187-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/187-2",[]],["text/187-2",[]],["component/187-2",[]],["title/187-3",[8,18.856,150,32.262]],["name/187-3",[]],["text/187-3",[]],["component/187-3",[]],["title/187-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/187-4",[]],["text/187-4",[]],["component/187-4",[]],["title/187-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/187-5",[]],["text/187-5",[]],["component/187-5",[]],["title/187-6",[8,16.222,746,27.183,1005,22.733]],["name/187-6",[]],["text/187-6",[]],["component/187-6",[]],["title/187-7",[1255,32.348,1457,33.624]],["name/187-7",[]],["text/187-7",[]],["component/187-7",[]],["title/187",[2,24.457,64,47.596,402,9.484,3416,32.742,3450,44.297]],["name/187",[64,0.686,3416,0.734,3450,0.639]],["text/187",[5,3.4,8,1.393,10,1.398,12,1.815,13,1.154,15,1.815,32,3.315,40,1.171,64,6.503,84,3.42,104,1.739,112,1.602,118,1.158,136,1.469,154,1.726,155,1.27,161,3.906,169,2.003,185,2.382,196,1.474,239,1.655,242,2.536,271,3.355,272,1.933,308,2.923,402,1.598,406,2.757,414,2.634,464,2.181,465,2.396,502,1.564,531,2.759,608,1.808,647,2.138,656,1.942,672,2.319,679,1.405,686,2.79,752,1.779,754,2.456,758,2.599,786,3.806,903,4.011,993,1.982,1005,1.208,1066,1.896,1195,2.085,1287,2.245,1461,1.914,1483,1.602,1526,2.453,1527,2.453,1596,2.855,1735,1.888,2103,2.802,3033,2.671,3450,6.474,3451,3.053,3459,5.925,3460,4.934,3461,4.934,3506,2.181,3511,2.507,3512,2.152,3571,2.913,3690,3.245,3691,3.245,3692,3.053,3693,3.053,3694,3.053,3716,3.552,3717,3.245,3718,5.245,3719,3.245,3720,3.245,3721,3.245,3722,3.245,3723,3.245,3724,3.245]],["component/187",[7,0.401]],["title/188-1",[402,17.184,1456,33.432]],["name/188-1",[]],["text/188-1",[]],["component/188-1",[]],["title/188-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/188-2",[]],["text/188-2",[]],["component/188-2",[]],["title/188-3",[8,18.856,150,32.262]],["name/188-3",[]],["text/188-3",[]],["component/188-3",[]],["title/188-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/188-4",[]],["text/188-4",[]],["component/188-4",[]],["title/188-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/188-5",[]],["text/188-5",[]],["component/188-5",[]],["title/188-6",[8,16.222,746,27.183,1005,22.733]],["name/188-6",[]],["text/188-6",[]],["component/188-6",[]],["title/188-7",[1255,32.348,1457,33.624]],["name/188-7",[]],["text/188-7",[]],["component/188-7",[]],["title/188",[2,24.457,402,9.484,2934,51.712,3416,32.742,3450,44.297]],["name/188",[2934,0.745,3416,0.734,3450,0.639]],["text/188",[5,2.808,8,0.633,10,1.028,12,1.334,13,0.848,15,1.334,32,3.566,40,0.861,84,3.513,104,1.278,111,1.407,112,1.178,118,0.851,122,1.704,136,1.967,154,1.268,155,0.933,161,3.735,166,3.428,169,2.507,185,1.751,196,1.084,239,1.216,242,1.864,248,1.292,271,2.696,272,1.421,277,2.831,301,2.337,308,2.348,402,1.516,406,3.375,414,1.936,426,5.304,464,1.603,465,1.855,478,1.936,502,1.957,525,1.153,531,2.137,608,1.329,647,1.571,656,1.428,670,1.375,672,1.704,679,1.033,686,2.242,712,3.616,752,1.308,754,1.902,758,1.91,786,5.165,903,5.445,993,1.457,1005,0.888,1066,1.394,1129,2.842,1195,1.532,1287,1.65,1461,1.407,1483,1.178,1596,2.098,1735,1.388,2103,2.06,2109,1.936,2934,5.317,3033,1.963,3450,6.516,3451,2.244,3459,4.761,3460,3.821,3461,3.821,3506,1.603,3511,1.842,3512,1.582,3571,2.141,3692,2.244,3693,2.244,3694,2.244,3717,2.385,3718,4.061,3719,2.385,3720,2.385,3721,4.061,3722,2.385,3723,2.385,3724,2.385,3725,2.611,3726,2.611,3727,2.611,3728,2.611,3729,2.611,3730,5.806,3731,2.611,3732,2.611]],["component/188",[7,0.401]],["title/189-1",[343,64.077]],["name/189-1",[]],["text/189-1",[]],["component/189-1",[]],["title/189-2",[331,40.225,341,44.313]],["name/189-2",[]],["text/189-2",[]],["component/189-2",[]],["title/189-3",[301,37.342]],["name/189-3",[]],["text/189-3",[]],["component/189-3",[]],["title/189-4",[331,48.023]],["name/189-4",[]],["text/189-4",[]],["component/189-4",[]],["title/189-5",[3087,58.217]],["name/189-5",[]],["text/189-5",[]],["component/189-5",[]],["title/189-6",[191,35.099]],["name/189-6",[]],["text/189-6",[]],["component/189-6",[]],["title/189-7",[361,42.254]],["name/189-7",[]],["text/189-7",[]],["component/189-7",[]],["title/189-8",[33,46.658]],["name/189-8",[]],["text/189-8",[]],["component/189-8",[]],["title/189-9",[3379,79.747]],["name/189-9",[]],["text/189-9",[]],["component/189-9",[]],["title/189-10",[1279,55.838]],["name/189-10",[]],["text/189-10",[]],["component/189-10",[]],["title/189-11",[3382,62.807]],["name/189-11",[]],["text/189-11",[]],["component/189-11",[]],["title/189",[26,31.122,2177,37.901]],["name/189",[2177,1.205]],["text/189",[4,3.12,7,0.612,8,2.18,15,0.697,17,2.026,23,1.117,26,4.233,29,1.327,33,1.74,34,0.583,40,0.824,71,1.294,76,3.007,77,0.761,84,1.542,92,0.81,104,1.223,105,2.321,111,0.735,113,1.054,117,0.55,118,0.445,121,0.749,125,1.95,129,1.591,133,0.81,138,1.528,139,1.227,143,1.341,150,0.566,155,1.237,161,0.519,163,0.675,172,1.807,183,0.542,189,3.12,191,2.685,194,0.862,196,0.566,199,0.795,206,0.952,214,0.941,215,6.206,224,0.667,248,0.675,262,0.777,264,2.225,277,4.695,293,0.832,301,2.68,308,2.694,311,0.712,322,5.847,331,2.217,341,0.777,348,0.876,351,3.465,357,1.402,361,2.81,375,0.869,391,1.257,396,1.172,402,0.301,403,0.962,405,1.172,406,1.423,441,0.821,442,0.952,446,0.678,465,1.043,470,1.097,475,2.974,492,2.342,502,0.6,514,0.479,523,0.8,547,2.131,557,0.782,597,0.757,621,0.973,675,0.89,698,0.712,768,0.985,769,1.296,779,0.826,784,1.118,786,0.718,859,0.821,861,0.769,862,0.973,865,0.715,867,1.618,890,3.068,910,0.815,943,0.89,968,0.715,972,0.691,993,0.761,1008,4.732,1011,1.011,1031,0.962,1053,1.66,1066,0.728,1128,0.757,1129,0.667,1132,1.142,1133,3.183,1139,1.632,1145,2.018,1219,0.898,1255,0.567,1279,4.917,1402,1.829,1456,1.488,1475,0.942,1477,0.746,1483,1.127,1551,0.898,1659,1.908,1942,0.832,2054,1.458,2076,0.906,2150,1.143,2177,4.129,2243,1.296,2249,2.209,2374,1.011,2419,0.998,2468,3.942,2485,1.205,2562,2.683,2619,2.278,2621,2.095,2636,0.786,2685,1.143,2847,1.143,2890,1.143,3043,1.784,3087,2.171,3129,0.862,3355,2.974,3357,2.148,3358,2.148,3359,2.148,3361,3.512,3364,1.172,3376,3.913,3378,2.283,3379,2.148,3380,3.161,3382,0.923,3385,1.246,3386,1.246,3387,2.283,3388,1.246,3389,1.246,3390,1.246,3391,1.172,3392,1.246,3393,2.283,3397,1.246,3398,2.283,3399,1.172,3400,1.172,3402,1.246,3405,1.246,3406,2.283,3407,1.246,3408,1.246,3409,1.246,3413,1.118,3527,1.172,3733,2.499,3734,2.499,3735,1.363,3736,1.363,3737,1.363,3738,1.296]],["component/189",[7,0.401]],["title/190-1",[402,17.184,1456,33.432]],["name/190-1",[]],["text/190-1",[]],["component/190-1",[]],["title/190-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/190-2",[]],["text/190-2",[]],["component/190-2",[]],["title/190-3",[8,18.856,150,32.262]],["name/190-3",[]],["text/190-3",[]],["component/190-3",[]],["title/190-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/190-4",[]],["text/190-4",[]],["component/190-4",[]],["title/190-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/190-5",[]],["text/190-5",[]],["component/190-5",[]],["title/190-6",[8,16.222,746,27.183,1005,22.733]],["name/190-6",[]],["text/190-6",[]],["component/190-6",[]],["title/190-7",[1255,32.348,1457,33.624]],["name/190-7",[]],["text/190-7",[]],["component/190-7",[]],["title/190",[23,26.157,40,11.996,264,19.556,547,15.516,1936,22.493,2073,27.766,2199,26.615]],["name/190",[23,0.329,264,0.246,2073,0.562,2199,0.539]],["text/190",[23,5.362,40,3.956,117,4.275,134,2.382,136,1.712,144,2.838,252,4.736,264,2.236,267,3.774,268,7.019,401,3,402,1.479,459,4.081,484,5.987,642,5.19,681,4.406,683,3.509,1456,2.878,1472,3.881,1490,4.168,1936,4.138,2199,8.778,2234,6.954,3127,5.751]],["component/190",[7,0.401]],["title/191-1",[402,17.184,1456,33.432]],["name/191-1",[]],["text/191-1",[]],["component/191-1",[]],["title/191-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/191-2",[]],["text/191-2",[]],["component/191-2",[]],["title/191-3",[8,18.856,150,32.262]],["name/191-3",[]],["text/191-3",[]],["component/191-3",[]],["title/191-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/191-4",[]],["text/191-4",[]],["component/191-4",[]],["title/191-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/191-5",[]],["text/191-5",[]],["component/191-5",[]],["title/191-6",[8,16.222,746,27.183,1005,22.733]],["name/191-6",[]],["text/191-6",[]],["component/191-6",[]],["title/191-7",[1255,32.348,1457,33.624]],["name/191-7",[]],["text/191-7",[]],["component/191-7",[]],["title/191",[13,21.665,14,17.712,105,17.712,264,22.28,1936,26.525]],["name/191",[13,0.312,14,0.397,264,0.321]],["text/191",[13,3.774,14,4.796,23,3.106,40,2.292,117,4.361,134,2.474,136,1.778,144,2.948,252,4.831,264,2.322,267,3.92,268,7.132,401,3.116,402,1.537,459,4.238,484,6.145,642,5.39,681,4.577,683,3.644,1456,2.99,1472,4.031,1490,4.329,1936,4.298,2199,5.085,2234,7.138,3127,5.973]],["component/191",[7,0.401]],["title/192-1",[406,25.824,694,45.892]],["name/192-1",[]],["text/192-1",[]],["component/192-1",[]],["title/192-2",[88,27.909]],["name/192-2",[]],["text/192-2",[]],["component/192-2",[]],["title/192-3",[30,28.681,466,37.709,2624,47.184]],["name/192-3",[]],["text/192-3",[]],["component/192-3",[]],["title/192-4",[134,23.806,264,22.343,361,30.449]],["name/192-4",[]],["text/192-4",[]],["component/192-4",[]],["title/192-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/192-5",[]],["text/192-5",[]],["component/192-5",[]],["title/192-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/192-6",[]],["text/192-6",[]],["component/192-6",[]],["title/192-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/192-7",[]],["text/192-7",[]],["component/192-7",[]],["title/192-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/192-8",[]],["text/192-8",[]],["component/192-8",[]],["title/192-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/192-9",[]],["text/192-9",[]],["component/192-9",[]],["title/192-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/192-10",[]],["text/192-10",[]],["component/192-10",[]],["title/192-11",[134,23.806,466,37.709,2627,51.038]],["name/192-11",[]],["text/192-11",[]],["component/192-11",[]],["title/192-12",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/192-12",[]],["text/192-12",[]],["component/192-12",[]],["title/192-13",[32,26.708,267,37.709,466,37.709]],["name/192-13",[]],["text/192-13",[]],["component/192-13",[]],["title/192",[129,35.736,470,34.116]],["name/192",[129,0.636,470,0.607]],["text/192",[0,0.667,3,0.537,4,1.348,7,0.595,8,0.32,15,0.675,17,0.984,18,0.587,23,1.867,26,1.673,29,1.292,30,2.094,31,0.709,32,1.669,34,2.088,36,0.573,40,0.801,45,0.587,52,1.116,54,3.537,79,1.082,84,2.496,88,0.73,91,0.745,93,0.737,101,0.628,105,1.002,111,0.712,117,0.979,118,2.623,125,0.602,127,0.829,129,3.548,134,3.677,143,5.38,148,0.801,153,0.967,154,0.642,155,0.472,161,1.591,163,0.654,166,2.467,170,1.442,171,2.57,172,1.762,180,2.001,183,0.525,188,0.766,196,1.398,199,0.771,206,0.922,214,2.459,224,0.647,239,0.615,248,1.202,249,0.684,255,1.384,264,2.328,271,0.613,277,2.037,279,0.594,280,1.085,288,2.657,289,1.8,292,1.296,301,3.566,308,0.534,311,2.181,316,0.628,348,0.848,350,0.715,351,1.845,355,0.842,361,3.173,374,0.943,377,1.743,378,1.643,386,0.726,401,0.592,402,0.745,428,1.915,446,0.656,455,2.701,466,1.369,468,0.622,470,3.66,482,0.785,502,0.582,513,1.042,514,0.464,517,0.762,531,0.635,545,0.878,547,2.082,553,0.785,593,0.622,597,0.733,637,1.024,649,1.008,668,0.675,670,0.696,673,0.644,679,1.332,684,2.743,686,0.51,694,1.433,719,1.341,734,0.912,752,0.662,760,0.886,786,2.2,788,0.766,790,0.719,850,0.912,853,1.042,862,0.943,865,1.766,900,3.851,943,0.862,967,1.48,972,0.67,984,0.811,1074,1.024,1076,0.613,1101,4.315,1128,0.733,1129,0.647,1135,1.024,1136,2.602,1211,1.559,1282,4.135,1461,0.712,1483,1.884,1609,0.79,1612,0.757,1625,0.943,1643,1.826,1647,0.87,1727,1.659,1735,0.702,1759,0.73,1784,1.062,1786,0.762,1852,0.894,1950,1.694,2018,2.302,2042,0.87,2103,1.042,2225,1.108,2257,1.108,2300,1.108,2379,1.062,2552,1.062,2619,0.87,2625,4.266,2626,3.057,2627,1.008,2630,2.571,2634,1.024,2635,2.895,2636,2.815,2637,5.613,2638,3.59,2639,2.895,2641,1.135,2642,0.78,2643,1.135,2644,1.135,2645,2.086,2647,1.083,2648,1.135,2649,1.135,2650,1.135,2651,1.135,2652,2.086,2653,1.135,2654,2.086,2655,1.135,2656,1.135,2657,1.135,2658,1.042,2663,2.762,2664,1.135,2665,2.086,2666,1.135,3128,1.256,3506,0.811,3511,0.932,3512,0.8]],["component/192",[7,0.401]],["title/193-1",[87,48.06,248,38.476]],["name/193-1",[]],["text/193-1",[]],["component/193-1",[]],["title/193-2",[91,29.474,96,24.349,155,18.684,465,21.81,1448,39.301]],["name/193-2",[]],["text/193-2",[]],["component/193-2",[]],["title/193-3",[10,23.093,93,32.738,96,27.333,773,37.375]],["name/193-3",[]],["text/193-3",[]],["component/193-3",[]],["title/193-4",[593,43.669]],["name/193-4",[]],["text/193-4",[]],["component/193-4",[]],["title/193",[86,33.757,1078,41.057,3129,42.269]],["name/193",[1078,0.85,3129,0.875]],["text/193",[0,3.285,6,1.463,7,0.748,8,2.2,10,1.997,12,1.561,23,1.365,26,1.223,37,1.782,45,1.357,56,1.442,84,0.838,86,5.271,93,1.704,94,1.782,95,4.145,96,1.423,104,1.495,125,1.391,148,1.007,152,2.088,154,1.484,155,3.597,160,2.696,163,3.221,169,1.722,172,2.14,189,2.816,192,1.536,195,3.073,196,2.106,208,2.561,214,1.15,248,4.162,249,2.626,264,1.021,268,1.875,282,1.782,308,2.052,316,1.452,319,2.084,332,2.369,349,2.648,357,1.713,386,1.678,398,2.207,403,3.58,415,2.011,446,1.518,451,1.524,465,4.198,470,2.227,502,1.345,503,2.625,517,1.761,518,2.067,531,1.468,547,1.303,556,1.815,567,2.088,597,1.696,659,2.235,682,2.614,697,1.761,698,1.594,726,1.838,745,1.484,773,1.946,834,2.067,903,2.816,963,2.593,968,1.601,970,2.048,972,1.548,976,2.331,1064,3.58,1078,3.995,1118,2.561,1400,1.609,1448,5.698,1492,3.621,1650,2.155,1669,2.235,1727,2.088,1852,2.067,2417,2.297,2443,2.561,2494,2.7,2495,2.505,2563,2.7,2586,2.265,2872,2.7,3129,7.277,3130,3.054,3131,3.054,3132,2.625,3133,3.054,3134,3.054,3135,2.331,3136,3.054,3137,3.054,3138,3.054]],["component/193",[7,0.401]],["title/194-1",[139,27.557,230,66.798]],["name/194-1",[]],["text/194-1",[]],["component/194-1",[]],["title/194-2",[8,12.679,139,18.53,264,17.464,673,25.486,743,29.164]],["name/194-2",[]],["text/194-2",[]],["component/194-2",[]],["title/194-3",[8,9.551,24,20.922,84,10.804,112,17.759,118,12.839,139,13.958,264,13.155,673,19.197]],["name/194-3",[]],["text/194-3",[]],["component/194-3",[]],["title/194-4",[8,11.431,105,19.455,139,16.706,161,17.945,670,24.816,673,22.977]],["name/194-4",[]],["text/194-4",[]],["component/194-4",[]],["title/194-5",[139,27.557,764,53.128]],["name/194-5",[]],["text/194-5",[]],["component/194-5",[]],["title/194",[139,27.557,3139,66.798]],["name/194",[139,0.491,3139,1.189]],["text/194",[0,1.664,5,2.436,8,2.125,10,1.297,12,0.658,13,0.418,15,0.658,18,0.572,19,1.958,23,1.06,24,2.871,26,0.516,29,1.837,30,1.017,31,0.691,34,1.014,40,0.425,68,0.747,84,0.905,88,0.387,102,0.694,105,2.655,112,2.161,113,1,117,0.957,118,1.335,121,0.708,125,1.501,127,0.808,134,0.459,135,0.969,136,1.225,139,4.472,146,1.238,147,0.808,148,0.425,154,0.626,161,0.49,165,0.834,168,0.653,170,0.765,190,1.4,191,0.487,195,0.78,196,0.984,205,1.81,214,2.585,224,0.63,230,3.519,238,1.693,241,1.016,248,0.638,249,0.667,253,2.134,262,1.352,263,1.947,264,3.321,275,0.633,277,0.628,278,1.934,280,0.576,282,0.751,289,0.955,293,0.785,296,2.95,308,2.185,313,3.251,316,1.128,319,1.682,341,0.734,351,0.569,353,1.988,354,0.756,377,1.227,391,1.193,402,0.729,431,0.743,434,1.138,439,1.849,441,0.775,445,0.791,451,1.183,460,0.543,465,0.99,466,0.726,468,1.116,487,1.029,514,2.086,519,0.872,531,1.14,547,0.549,552,2.169,556,0.765,583,1.317,597,0.715,603,2.448,613,0.93,617,0.704,620,0.743,665,3.709,670,0.678,673,4.016,674,0.834,679,0.509,680,1.183,682,1.222,684,1.644,695,2.625,697,0.743,698,0.672,723,2.259,741,2.497,742,0.88,743,3.015,744,0.863,764,4.961,786,0.678,788,0.747,865,1.728,871,0.856,873,0.827,909,0.88,930,1.674,933,0.827,966,0.834,967,1.446,972,0.653,976,0.983,1005,0.438,1012,0.942,1040,0.738,1066,2.884,1075,0.726,1076,1.101,1077,1.81,1099,0.955,1130,0.78,1196,1.016,1210,1.08,1398,1.988,1477,0.704,1621,1.035,1692,1.035,1749,2.914,1750,0.955,1783,0.955,1933,1.016,1942,2.497,1946,1.016,2018,0.88,2024,2.833,2042,0.848,2054,0.751,2058,1.138,2093,1.056,2097,0.968,2114,1.138,2116,0.999,2127,1.056,2131,1.138,2138,2.857,2220,1.138,2240,1.758,2293,1.138,2296,1.655,2336,1.783,2356,0.983,2409,1.138,2443,1.08,2448,2.444,2478,1.056,2566,0.814,2592,1.138,2647,1.056,2785,1.08,2817,1.08,3139,1.107,3140,1.288,3141,1.288,3142,1.288,3143,4.376,3144,1.288,3145,1.288,3146,1.288,3147,1.288,3148,1.288,3149,1.288,3150,1.288,3151,1.288,3152,1.288,3153,1.288,3154,1.107,3155,1.288,3156,1.288,3157,1.288,3158,1.288,3159,1.288,3160,1.288,3161,1.288]],["component/194",[7,0.401]],["title/195-1",[0,39.238,1,51.636]],["name/195-1",[]],["text/195-1",[]],["component/195-1",[]],["title/195-2",[9,44.029,33,33.622,552,26.841]],["name/195-2",[]],["text/195-2",[]],["component/195-2",[]],["title/195",[2,44.313,3,31.597]],["name/195",[2,0.789,3,0.563]],["text/195",[0,2.565,1,5.422,2,2.178,3,3.318,4,2.121,5,0.897,6,1.049,7,0.936,8,1.477,9,5.698,10,3.72,11,5.12,12,3.877,13,0.711,14,0.904,17,3.509,18,4.033,19,1.301,20,1.216,21,1.936,22,1.727,23,0.979,24,2.03,25,1.582,26,0.877,27,1.936,28,1.836,29,1.949,30,2.18,31,1.174,32,1.526,33,5.417,34,1.634,35,2.021,36,0.95,37,1.277,38,1.191,39,1.936,40,0.722,41,1.936,42,1.667,43,1.76,44,1.936,45,1.697,46,1.528,47,1.936,48,3.296,49,1.512,50,4.26,51,1.936,52,1.007,53,1.936,54,2.069,55,1.936,56,2.4,57,2.11,58,2.314,59,1.936,60,2.314,61,1.936,62,1.795,63,1.364,64,2.727,65,1.429,66,1.936,67,1.936,68,1.27,69,1.582,70,1.647,71,1.133,72,1.936,73,1.936,74,1.727,75,1.647,76,1.318,77,1.222,79,0.976,84,0.601,121,2.099,134,0.78,141,1.528,148,0.722,158,1.138,172,0.924,186,1.143,191,2.302,194,2.415,196,0.909,234,1.216,251,1.056,263,1.041,264,0.732,272,1.191,286,2.881,287,3.547,296,1.553,325,1.354,351,0.967,361,0.997,386,1.203,406,1.269,408,1.138,517,1.263,552,1.534,604,2.069,668,1.119,751,2.916,963,1.119,1076,1.017,1078,1.344,1249,1.698,1434,1.222,1468,1.344,1492,1.563,1498,1.455,1945,1.395,2007,1.882,2008,2.081,2009,1.836,2010,1.836,2011,6.564,2012,6.564,2013,5.785,2014,4.83,2015,2.081,2016,1.468,2017,2.081,2018,1.497,2019,2.081,2020,2.081,2021,2.081,2022,2.081,2023,2.081,2024,1.882,2025,2.081,2026,2.081,2027,2.081,2028,2.081,2029,1.882]],["component/195",[7,0.401]],["title/196-1",[211,39.397,2030,73.872]],["name/196-1",[]],["text/196-1",[]],["component/196-1",[]],["title/196-2",[3,31.597,42,33.917]],["name/196-2",[]],["text/196-2",[]],["component/196-2",[]],["title/196-3",[134,33.036]],["name/196-3",[]],["text/196-3",[]],["component/196-3",[]],["title/196-4",[88,27.909]],["name/196-4",[]],["text/196-4",[]],["component/196-4",[]],["title/196-5",[11,43.832,654,53.672]],["name/196-5",[]],["text/196-5",[]],["component/196-5",[]],["title/196-6",[52,35.736,134,27.671]],["name/196-6",[]],["text/196-6",[]],["component/196-6",[]],["title/196-7",[7,16.382,32,26.708,155,23.905]],["name/196-7",[]],["text/196-7",[]],["component/196-7",[]],["title/196-8",[86,46.845]],["name/196-8",[]],["text/196-8",[]],["component/196-8",[]],["title/196-9",[118,21.806,264,22.343,743,37.312]],["name/196-9",[]],["text/196-9",[]],["component/196-9",[]],["title/196-10",[468,43.669]],["name/196-10",[]],["text/196-10",[]],["component/196-10",[]],["title/196-11",[135,37.916]],["name/196-11",[]],["text/196-11",[]],["component/196-11",[]],["title/196-12",[136,23.734]],["name/196-12",[]],["text/196-12",[]],["component/196-12",[]],["title/196-13",[23,29.884,40,22.05,547,28.52]],["name/196-13",[]],["text/196-13",[]],["component/196-13",[]],["title/196-14",[13,25.254,105,32.092]],["name/196-14",[]],["text/196-14",[]],["component/196-14",[]],["title/196",[3,31.597,7,19.043]],["name/196",[10,0.973]],["text/196",[3,1.948,6,1.712,7,1.518,8,1.682,10,3.598,11,2.016,12,0.557,13,1.162,14,0.45,17,1.943,18,1.588,22,0.859,23,1.275,24,0.579,29,2.898,32,0.435,34,0.466,36,0.472,40,0.94,42,1.84,45,1.588,48,1.099,52,2.44,54,0.59,60,0.66,70,0.819,79,2.572,83,1.449,84,1.903,85,1.602,86,1.44,87,2.608,88,2.273,90,0.485,99,1.712,105,0.838,107,0.737,110,1.295,112,0.916,113,1.779,116,1.094,117,1.151,118,1.882,121,0.598,125,0.496,133,0.647,134,1.273,135,1.461,136,1.225,139,1.495,144,1.21,145,1.293,146,1.866,155,1.897,158,1.055,160,1.516,162,0.76,163,1.005,170,0.647,171,0.509,172,1.508,177,0.963,178,0.557,180,1.206,183,0.433,185,1.361,186,0.568,189,0.605,190,0.643,191,2.183,192,1.434,196,2.571,200,0.705,203,0.635,211,0.552,220,0.752,222,0.859,224,3.552,227,0.705,228,0.545,231,0.737,234,3.204,239,1.329,243,1.214,245,0.737,247,1.206,248,0.539,249,2.479,250,0.744,251,0.979,252,0.907,253,0.705,254,0.723,256,0.913,257,0.936,258,0.807,259,0.963,260,0.787,261,1.665,262,0.621,263,0.965,264,3.356,268,0.669,272,0.593,277,0.531,280,1.598,282,0.635,283,1.177,286,1.151,292,0.581,296,1.453,308,1.153,313,1.716,319,0.834,335,0.621,346,0.797,348,0.699,349,0.568,351,0.481,352,0.768,354,0.639,355,0.694,357,0.611,377,0.564,391,1.021,401,0.91,402,0.449,406,1.188,412,1.361,418,1.55,431,1.171,438,0.76,441,0.655,443,1.069,450,1.325,451,0.543,460,0.459,465,1.19,468,1.683,487,0.881,505,0.678,509,1.247,525,1.259,547,0.464,549,0.541,552,1.145,556,1.206,567,0.744,569,1.602,593,0.513,604,1.099,615,0.595,619,0.717,630,0.651,647,0.655,654,2.469,662,0.875,663,0.711,675,0.711,679,0.431,680,0.543,682,0.561,683,1.875,684,1.423,698,0.568,711,0.66,732,0.694,741,0.664,743,1.995,751,0.831,754,1.22,774,0.717,786,1.069,790,0.593,865,1.065,871,0.723,900,1.817,903,0.605,920,0.819,933,0.699,961,0.76,968,1.065,972,0.552,983,0.777,993,0.608,1005,0.97,1076,0.506,1091,0.614,1097,0.73,1110,0.717,1125,1.304,1130,0.66,1211,0.699,1253,0.673,1300,0.845,1413,0.859,1416,0.655,1455,1.795,1456,0.468,1477,0.595,1490,0.678,1498,1.349,1520,1.304,1561,0.787,1623,0.893,1640,0.737,1644,1.795,1647,0.717,1688,1.745,1942,0.664,1947,0.859,2010,0.913,2016,0.73,2018,1.388,2031,1.035,2032,1.035,2033,1.035,2034,1.035,2035,1.035,2036,1.035,2037,0.936,2038,1.035,2039,1.035,2040,1.035,2041,1.035,2042,0.717,2043,1.632,2045,0.807,2046,0.875,2047,0.875,2050,0.845,2051,2.354,2054,0.635,2055,2.729,2056,0.73,2057,1.035,2058,0.963,2059,1.035,2060,0.705,2061,0.936,2062,1.035,2063,0.777,2064,1.035,2066,0.936,2067,1.702,2068,0.936,2069,0.875,2070,0.963,2071,0.936,2072,0.831,2073,0.831,2074,1.035,2370,0.893,2785,0.913,3003,0.963,3154,0.936,3162,1.089,3163,1.089,3164,1.089,3165,0.893,3166,1.089,3167,1.089,3168,0.893,3169,1.089,3170,1.665,3171,0.893,3172,0.893,3173,1.089]],["component/196",[7,0.401]],["title/197-1",[684,38.775,869,56.867]],["name/197-1",[]],["text/197-1",[]],["component/197-1",[]],["title/197-2",[113,39.143]],["name/197-2",[]],["text/197-2",[]],["component/197-2",[]],["title/197-3",[7,19.043,869,56.867]],["name/197-3",[]],["text/197-3",[]],["component/197-3",[]],["title/197-4",[111,50.007]],["name/197-4",[]],["text/197-4",[]],["component/197-4",[]],["title/197-5",[113,39.143]],["name/197-5",[]],["text/197-5",[]],["component/197-5",[]],["title/197-6",[13,19.063,14,24.225,264,19.605,325,36.279]],["name/197-6",[]],["text/197-6",[]],["component/197-6",[]],["title/197",[1246,68.801]],["name/197",[1246,1.832]],["text/197",[3,2.362,7,2.951,8,1.41,10,1.419,11,3.277,12,1.843,13,2.983,14,3.79,23,1.611,26,1.444,33,2.922,38,1.962,42,1.573,48,3.147,49,2.49,62,2.957,77,2.012,80,2.44,84,2.003,88,1.748,96,1.68,102,3.132,111,4.947,113,4.529,115,2.033,125,2.646,128,2.023,129,1.658,148,1.189,158,1.874,164,2.156,186,1.882,221,2.374,236,1.525,243,3.474,252,1.611,264,2.439,301,1.451,313,4.392,314,3.187,320,2.044,325,3.593,333,2.091,344,2.844,356,3.047,384,2.957,421,1.934,443,1.899,451,1.799,509,2.214,517,2.079,520,2.49,553,3.452,593,1.697,684,2.899,869,7.179,889,2.129,963,1.843,972,3.7,1062,2.465,1221,2.957,1246,6.807,1250,2.574,1289,2.898,1421,2.465,1595,5.137,1945,2.297,2075,3.427,2076,2.395,2077,5.523,2078,5.523,2079,5.523]],["component/197",[7,0.401]],["title/198-1",[296,27.183,673,32.606,743,37.312]],["name/198-1",[]],["text/198-1",[]],["component/198-1",[]],["title/198-2",[7,16.382,134,23.806,552,26.841]],["name/198-2",[]],["text/198-2",[]],["component/198-2",[]],["title/198-3",[2080,70.826]],["name/198-3",[]],["text/198-3",[]],["component/198-3",[]],["title/198-4",[86,46.845]],["name/198-4",[]],["text/198-4",[]],["component/198-4",[]],["title/198-5",[88,27.909]],["name/198-5",[]],["text/198-5",[]],["component/198-5",[]],["title/198-6",[155,27.786,465,32.434]],["name/198-6",[]],["text/198-6",[]],["component/198-6",[]],["title/198-7",[13,21.726,14,27.609,319,27.465]],["name/198-7",[]],["text/198-7",[]],["component/198-7",[]],["title/198-8",[135,31.759,319,31.924]],["name/198-8",[]],["text/198-8",[]],["component/198-8",[]],["title/198-9",[439,37.508,708,35.536,1400,35.216]],["name/198-9",[]],["text/198-9",[]],["component/198-9",[]],["title/198",[]],["name/198",[93,0.536,94,0.561,552,0.386]],["text/198",[3,0.449,5,0.842,7,0.886,8,1.516,10,2.751,13,2.03,14,2.405,17,0.448,18,0.49,20,0.613,29,2.054,30,0.882,36,0.892,38,1.119,42,0.897,45,0.49,52,0.945,68,0.64,76,1.737,84,1.598,86,2.94,87,0.683,88,1.282,90,0.492,93,1.147,94,1.684,99,0.985,102,0.595,109,0.887,112,3.675,113,0.867,115,0.623,116,0.595,117,2.161,118,1.179,125,0.936,126,0.779,130,1.214,134,1.287,135,3.757,136,1.09,139,2.065,141,2.523,148,1.596,154,0.536,155,1.524,160,0.587,161,1.843,163,0.547,165,1.331,169,1.16,171,0.516,172,1.218,181,0.788,186,0.576,191,1.092,192,0.555,194,0.698,195,0.669,196,2.418,200,0.715,201,0.762,203,0.644,211,0.56,214,1.605,220,2.497,224,3.987,226,0.693,234,1.142,238,0.788,239,0.514,247,1.715,250,0.755,253,0.715,263,0.525,264,3.413,277,0.538,279,0.496,280,1.29,283,1.674,292,0.589,296,2.54,297,1.124,308,0.832,311,2.526,315,0.715,316,0.525,319,0.845,341,0.629,348,0.709,349,0.576,391,2.694,392,0.976,402,0.244,406,0.367,408,0.574,439,0.619,441,1.237,443,0.581,446,0.549,451,0.551,455,1.01,465,1.509,468,0.968,470,0.485,476,0.856,487,0.479,514,1.496,518,3.626,525,0.908,547,0.471,549,0.549,552,2.15,556,2.875,583,2.366,603,0.66,604,0.598,613,0.798,617,2.929,630,1.229,631,0.648,658,0.949,670,1.083,673,3.972,674,0.715,680,0.551,683,1.078,684,1.44,695,0.536,697,1.664,708,1.922,735,1.853,736,0.656,743,0.616,767,0.762,786,1.083,859,1.237,865,1.078,890,0.678,894,0.715,900,0.703,903,0.613,909,0.755,961,0.771,982,3.802,993,0.616,1005,0.699,1076,0.513,1090,0.727,1095,0.871,1139,0.721,1211,0.709,1253,1.272,1277,5.815,1400,1.083,1413,0.871,1449,0.976,1467,2.804,1490,0.688,1640,0.747,1727,0.755,1942,0.673,1945,0.703,1948,1.653,1952,1.595,2051,0.727,2054,1.2,2060,3.133,2061,0.949,2073,0.843,2076,0.733,2080,4.769,2081,0.949,2082,1.049,2083,0.843,2084,0.926,2085,1.049,2086,0.949,2087,0.949,2088,0.949,2089,0.949,2090,0.949,2091,0.949,2092,0.856,2093,1.686,2094,0.949,2095,1.049,2096,0.949,2097,0.83,2098,0.905,2099,0.976,2100,1.049,2101,1.049,2102,1.049,2103,0.871,2104,0.976,2105,1.049,2106,0.949,2107,0.949,2108,0.856,2109,0.819,2110,0.949,2111,1.954,2112,2.48,2113,1.049,2114,0.976,2115,1.049,2116,0.856,2117,1.954,2118,1.653,2119,2.551,2120,1.049,2121,1.878,2122,1.049,2123,1.049,2124,1.954,2125,2.743,2126,1.818,2127,0.905,2128,1.049,2129,1.049,2130,0.949,2131,0.976,2132,0.905,2133,1.049,2134,0.887,2135,0.843,2136,0.887]],["component/198",[7,0.401]],["title/199-1",[7,16.382,134,23.806,552,26.841]],["name/199-1",[]],["text/199-1",[]],["component/199-1",[]],["title/199-2",[7,16.382,10,26.319,552,26.841]],["name/199-2",[]],["text/199-2",[]],["component/199-2",[]],["title/199-3",[40,22.05,552,26.841,1952,51.858]],["name/199-3",[]],["text/199-3",[]],["component/199-3",[]],["title/199-4",[2080,70.826]],["name/199-4",[]],["text/199-4",[]],["component/199-4",[]],["title/199-5",[86,46.845]],["name/199-5",[]],["text/199-5",[]],["component/199-5",[]],["title/199-6",[88,27.909]],["name/199-6",[]],["text/199-6",[]],["component/199-6",[]],["title/199-7",[465,32.434,548,49.907]],["name/199-7",[]],["text/199-7",[]],["component/199-7",[]],["title/199-8",[139,32.899]],["name/199-8",[]],["text/199-8",[]],["component/199-8",[]],["title/199-9",[13,25.254,14,32.092]],["name/199-9",[]],["text/199-9",[]],["component/199-9",[]],["title/199-10",[1253,48.06,2063,55.481]],["name/199-10",[]],["text/199-10",[]],["component/199-10",[]],["title/199-11",[3,23.851,349,30.628,439,32.911,708,31.18]],["name/199-11",[]],["text/199-11",[]],["component/199-11",[]],["title/199-12",[112,26.465,113,24.75,118,19.133,972,29.739]],["name/199-12",[]],["text/199-12",[]],["component/199-12",[]],["title/199-13",[139,20.802,144,24.886,673,28.61,2137,40.104]],["name/199-13",[]],["text/199-13",[]],["component/199-13",[]],["title/199-14",[16,50.316,1400,40.934]],["name/199-14",[]],["text/199-14",[]],["component/199-14",[]],["title/199-15",[139,23.708,335,38.123,624,46.666]],["name/199-15",[]],["text/199-15",[]],["component/199-15",[]],["title/199-16",[296,21.247,391,26.28,487,22.675,680,26.073,2138,36.475]],["name/199-16",[]],["text/199-16",[]],["component/199-16",[]],["title/199-17",[13,21.726,14,27.609,88,20.111]],["name/199-17",[]],["text/199-17",[]],["component/199-17",[]],["title/199-18",[260,56.153,2063,55.481]],["name/199-18",[]],["text/199-18",[]],["component/199-18",[]],["title/199-19",[10,20.571,87,32.317,129,24.03,402,11.555,470,22.941]],["name/199-19",[]],["text/199-19",[]],["component/199-19",[]],["title/199-20",[258,57.629,260,56.153]],["name/199-20",[]],["text/199-20",[]],["component/199-20",[]],["title/199-21",[258,57.629,2139,73.872]],["name/199-21",[]],["text/199-21",[]],["component/199-21",[]],["title/199-22",[112,26.465,118,19.133,552,23.551,616,45.501]],["name/199-22",[]],["text/199-22",[]],["component/199-22",[]],["title/199-23",[26,20.927,113,22.047,264,17.464,357,29.317,552,20.98]],["name/199-23",[]],["text/199-23",[]],["component/199-23",[]],["title/199-24",[13,21.726,14,27.609,552,26.841]],["name/199-24",[]],["text/199-24",[]],["component/199-24",[]],["title/199-25",[136,15.007,603,35.079,684,29.269,1001,43.502]],["name/199-25",[]],["text/199-25",[]],["component/199-25",[]],["title/199-26",[136,10.972,514,15.054,528,23.936,603,25.648,841,26.913,1201,29.322,1621,34.473]],["name/199-26",[]],["text/199-26",[]],["component/199-26",[]],["title/199",[7,14.374,102,31.619,158,30.495,552,23.551]],["name/199",[552,0.556,1608,1.189]],["text/199",[3,0.946,4,1.008,5,0.27,6,0.315,7,0.686,8,1.063,10,0.715,13,1.185,14,1.337,16,0.426,17,0.736,23,0.811,24,2.14,26,0.727,29,1.398,30,0.541,32,0.263,33,0.634,35,0.667,36,0.547,37,1.059,38,0.358,40,1.202,42,0.792,45,2.234,52,1.489,58,0.399,63,0.41,68,0.382,79,2.101,84,2.197,86,3.085,88,1.097,90,1.037,92,0.391,96,0.307,97,0.816,104,0.322,105,0.272,110,1.828,111,0.68,112,3.058,113,1.989,115,0.371,116,0.978,117,1.903,118,1.736,125,0.3,128,0.369,134,1.679,136,1.206,138,0.557,139,2.404,141,1.624,144,0.987,148,0.599,154,0.882,155,0.649,160,0.965,161,0.691,162,0.88,163,0.899,168,0.334,169,1.024,170,1.079,171,0.308,172,0.981,178,0.645,183,0.262,185,0.441,189,1.554,190,1.374,191,1.658,192,0.331,195,0.399,196,1.671,203,0.384,208,0.552,211,0.334,214,0.475,224,0.889,226,0.413,234,0.365,239,0.307,241,0.519,243,0.394,247,2.604,248,0.624,249,0.94,250,0.45,252,1.447,253,0.426,258,2.076,260,0.476,261,0.54,262,0.719,263,0.863,264,1.681,265,0.434,267,0.711,268,1.719,271,0.586,273,0.519,275,0.62,278,0.74,279,0.296,280,1.251,282,0.384,283,0.382,296,1.917,297,0.993,301,1.467,304,0.89,317,0.446,319,0.956,324,0.465,330,0.81,331,0.341,335,0.375,337,0.54,340,0.391,346,0.482,349,0.658,354,1.065,355,1.156,356,0.345,361,1.275,374,0.47,377,0.653,378,0.446,388,0.384,391,0.913,401,0.295,402,0.716,408,0.656,424,0.88,429,0.437,430,0.446,431,0.727,439,0.707,440,0.413,443,1.225,445,0.404,446,0.327,450,0.43,451,0.629,452,0.862,455,1.978,458,0.404,465,1.168,468,0.31,470,0.554,476,0.978,483,0.566,487,2.046,506,0.47,509,0.404,514,1.765,517,0.38,518,3.404,519,0.446,523,0.386,525,0.557,528,0.704,547,0.774,548,1.494,549,1.391,552,3.328,556,2.802,575,0.45,580,1.326,583,1.008,586,0.382,593,0.594,603,0.754,604,0.357,616,0.511,619,0.83,620,0.38,622,0.47,623,1.034,624,0.459,665,0.928,668,0.645,670,1.705,673,2.452,675,0.823,676,0.43,678,1.326,679,0.718,680,2.509,681,0.434,682,0.936,683,1.468,684,1.615,686,0.701,695,0.32,697,1.341,706,0.407,708,0.67,712,0.786,723,0.69,724,1.014,732,0.803,734,0.455,735,1.166,736,1.079,738,0.519,740,0.511,741,1.707,742,0.862,745,0.32,780,1.034,781,1.489,786,0.664,788,0.731,834,0.446,841,1.46,865,0.952,889,0.745,894,0.816,903,0.7,918,0.482,930,0.465,962,0.511,963,0.336,972,1.179,973,0.923,982,0.823,985,0.399,993,0.367,1001,0.488,1008,0.983,1066,1.242,1068,0.862,1076,1.08,1090,0.434,1091,0.371,1096,0.47,1097,0.846,1108,0.871,1122,0.482,1138,0.45,1150,0.347,1155,0.47,1157,0.511,1201,0.45,1211,0.423,1253,2.49,1256,0.519,1277,4.185,1279,0.396,1400,1.474,1416,0.396,1431,0.352,1447,1.034,1461,0.355,1490,0.41,1498,0.437,1515,2.401,1516,0.511,1556,1.107,1621,0.529,1650,0.89,1661,0.482,1708,0.441,1782,1.084,1924,1.56,1950,0.459,1952,2.511,1962,0.511,1978,0.552,2018,0.862,2051,1.843,2052,0.582,2053,0.54,2054,0.384,2056,0.846,2060,0.426,2063,0.9,2080,1.386,2083,0.503,2084,1.057,2086,0.566,2087,0.566,2088,0.566,2089,0.566,2090,0.566,2091,0.566,2092,0.511,2106,0.566,2107,1.56,2108,0.511,2109,0.488,2110,0.566,2134,0.529,2135,0.503,2136,0.529,2140,0.626,2141,1.152,2142,1.199,2143,0.626,2144,0.626,2145,0.566,2146,0.626,2147,0.626,2148,0.566,2149,1.199,2150,0.552,2151,0.626,2152,0.566,2153,0.626,2154,0.626,2155,0.626,2156,0.626,2157,0.626,2158,0.626,2159,0.626,2160,1.199,2161,0.566,2162,0.626,2163,0.626,2164,0.54,2165,0.626,2166,0.582,2167,0.626,2168,0.626,2169,0.529,2170,3.465,2171,0.626,2172,0.626,2173,2.295,2174,1.199,2175,2.66,2176,1.199,2177,0.885,2178,1.199,2179,1.199,2180,1.199,2181,1.199,2182,0.626,2183,0.626,2184,0.626,2185,0.626,2186,0.626,2187,0.626,2188,0.626,2189,1.199,2190,0.626,2191,1.605,2192,0.626,2193,0.626,2194,0.47,2195,0.626,2196,0.626,2197,0.626,2198,0.626,2199,0.482,2200,0.626,2201,0.626,2202,0.626,2203,0.626,2204,0.626,2205,0.626,2206,0.626,2207,0.626,2208,0.626,2209,0.626,2210,0.626,2211,0.511,2212,0.626,2213,0.626,2214,0.626,2215,0.626,2216,0.626,2217,0.626,2218,1.199,2219,0.626,2220,0.582,2221,0.626,2222,0.626,3174,1.261,3175,0.658]],["component/199",[7,0.401]],["title/200",[158,40.398,502,34.217]],["name/200",[502,1.088]],["text/200",[134,3.739,158,5.459,251,5.065,967,6.404,1936,6.494,3176,10.501]],["component/200",[7,0.401]],["title/201-1",[2258,66.798,2259,66.798]],["name/201-1",[]],["text/201-1",[]],["component/201-1",[]],["title/201-2",[23,34.737,1619,60.278]],["name/201-2",[]],["text/201-2",[]],["component/201-2",[]],["title/201-3",[42,29.179,436,54.829,514,23.467]],["name/201-3",[]],["text/201-3",[]],["component/201-3",[]],["title/201-4",[23,34.737,1936,48.06]],["name/201-4",[]],["text/201-4",[]],["component/201-4",[]],["title/201-5",[23,29.884,521,43.287,723,25.408]],["name/201-5",[]],["text/201-5",[]],["component/201-5",[]],["title/201",[7,19.043,23,34.737]],["name/201",[23,1.104]],["text/201",[1,2.249,5,3.304,7,1.713,8,0.821,19,3.28,23,5.375,24,2.934,26,3.23,34,1.448,36,1.469,40,1.116,42,1.477,58,2.05,84,0.929,88,1.661,110,2.506,118,1.8,125,2.514,128,3.097,129,1.556,130,1.999,133,2.011,134,3.579,144,1.436,158,1.759,172,2.329,183,2.194,188,1.963,191,2.645,203,1.975,234,1.879,252,1.513,264,3.185,270,2.625,271,2.564,296,2.244,301,2.222,319,1.39,337,2.776,377,1.752,406,1.125,436,4.527,458,2.078,470,2.423,514,2.454,525,1.495,552,1.359,583,1.879,586,1.963,604,1.833,659,2.477,668,2.822,682,1.744,683,1.775,694,1.999,697,1.952,698,1.767,736,2.011,772,2.011,830,2.05,833,2.477,895,2.477,984,2.078,1004,2.27,1013,2.51,1017,2.27,1139,3.604,1168,2.477,1204,2.776,1211,4.489,1402,2.477,1499,2.338,1561,2.446,1641,2.72,1669,2.477,1727,2.314,1747,2.625,1877,2.838,2054,1.975,2056,2.27,2081,2.909,2259,4.745,2260,2.909,2261,3.217,2262,3.217,2263,3.217,2264,3.217,2265,3.217,2266,3.217,2267,3.217,2268,3.217,2269,3.217,2270,3.217,2271,3.217,2272,3.217]],["component/201",[7,0.401]],["title/202-1",[7,22.734]],["name/202-1",[]],["text/202-1",[]],["component/202-1",[]],["title/202-2",[264,25.971,522,71]],["name/202-2",[]],["text/202-2",[]],["component/202-2",[]],["title/202-3",[264,19.605,343,40.515,1750,43.502,2619,38.632]],["name/202-3",[]],["text/202-3",[]],["component/202-3",[]],["title/202-4",[4,43.146,7,19.043]],["name/202-4",[]],["text/202-4",[]],["component/202-4",[]],["title/202-5",[239,31.151,308,27.045,629,59.109]],["name/202-5",[]],["text/202-5",[]],["component/202-5",[]],["title/202-6",[191,35.099]],["name/202-6",[]],["text/202-6",[]],["component/202-6",[]],["title/202-7",[2273,88.192]],["name/202-7",[]],["text/202-7",[]],["component/202-7",[]],["title/202-8",[209,31.893,790,25.639,968,24.706,3177,47.115,3178,47.115,3179,47.115]],["name/202-8",[]],["text/202-8",[]],["component/202-8",[]],["title/202-9",[95,42.597,2282,59.109,3180,57.467]],["name/202-9",[]],["text/202-9",[]],["component/202-9",[]],["title/202-10",[94,39.007,2275,61.082,2276,63.552]],["name/202-10",[]],["text/202-10",[]],["component/202-10",[]],["title/202-11",[93,37.312,1715,51.038,2274,61.082]],["name/202-11",[]],["text/202-11",[]],["component/202-11",[]],["title/202-12",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2277,40.77,2278,40.77]],["name/202-12",[]],["text/202-12",[]],["component/202-12",[]],["title/202-13",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2279,40.77,2280,40.77]],["name/202-13",[]],["text/202-13",[]],["component/202-13",[]],["title/202-14",[8,10.407,191,16.226,854,27.77,2119,30.27,2281,37.92,2282,37.92,2283,40.77]],["name/202-14",[]],["text/202-14",[]],["component/202-14",[]],["title/202",[7,19.043,78,47.724]],["name/202",[631,1.45]],["text/202",[0,0.515,3,0.776,4,0.566,5,1.103,7,0.468,8,1.34,10,2.174,11,0.575,12,1.376,13,1.646,14,1.111,15,0.521,16,0.66,17,0.774,18,0.453,23,1.513,24,2.425,26,2.211,29,2.118,31,0.547,32,1.352,34,1.448,36,1.168,40,1.321,42,0.833,45,0.848,52,1.557,54,0.552,56,0.481,57,0.563,58,2.427,60,0.618,64,0.728,71,0.988,84,1.252,88,1.018,90,0.851,93,0.569,94,1.114,95,1.715,96,1.254,97,0.66,102,1.029,104,2.479,105,1.398,110,0.463,113,2.137,117,0.77,118,2.061,125,0.869,129,0.878,133,0.606,134,0.68,135,1.637,136,1.617,139,2.241,144,1.436,146,2.091,148,0.63,150,1.117,153,0.746,154,0.495,155,1.631,158,0.992,160,1.015,163,0.505,168,1.364,172,1.428,178,0.521,183,0.405,186,0.997,191,2.246,194,1.207,195,1.156,196,1.117,200,0.66,214,0.384,215,4.101,221,0.671,224,1.317,226,0.64,234,1.06,235,0.901,247,0.606,248,0.505,249,0.988,252,0.456,254,0.677,263,1.61,264,2.969,275,0.501,278,0.598,280,0.456,296,1.376,297,0.557,308,1.62,313,2.038,319,1.874,320,0.578,322,0.704,330,0.655,333,1.107,341,1.088,349,0.997,351,0.45,354,0.598,375,0.649,377,0.528,382,0.901,391,1.353,401,1.207,402,1.397,406,0.339,415,2.638,438,0.712,439,0.572,446,0.507,450,0.666,455,1.322,458,0.626,460,1.136,464,0.626,465,0.425,466,0.575,468,1.594,470,1.486,502,1.491,514,1.188,517,0.588,519,0.69,521,0.66,525,0.45,547,1.444,552,2.807,567,0.697,583,0.566,593,0.898,597,1.06,603,0.61,633,0.901,634,1.688,635,0.876,637,0.791,638,0.901,643,1.506,644,0.819,645,0.836,646,0.876,647,0.614,648,0.901,649,0.778,650,0.901,651,0.901,654,0.704,656,1.851,663,1.246,673,0.497,678,1.088,679,2.184,684,1.343,686,0.737,690,0.614,705,1.788,723,0.725,728,0.557,736,0.606,743,2.546,745,1.308,774,0.671,788,0.591,790,1.465,794,0.969,835,0.539,841,1.198,848,0.969,859,0.614,865,2.896,873,0.655,890,0.626,895,1.397,896,1.198,898,0.778,900,0.649,910,3.029,921,0.778,925,0.767,943,0.666,962,0.791,967,0.622,970,0.684,972,2.031,984,0.626,1005,0.649,1053,0.677,1064,0.719,1066,1.019,1073,0.778,1078,1.172,1130,1.156,1133,0.649,1134,0.737,1136,0.635,1187,0.719,1213,0.69,1253,1.18,1310,0.756,1343,0.836,1367,0.901,1394,4.033,1400,0.537,1417,0.855,1424,0.931,1431,0.544,1448,1.436,1457,0.441,1477,0.557,1483,1.527,1508,0.737,1520,0.655,1523,0.855,1533,0.728,1558,0.572,1559,0.684,1591,0.649,1610,0.635,1671,0.901,1708,0.684,1735,0.542,1754,0.719,1772,1.945,1783,0.756,1819,0.671,1843,0.819,1908,0.901,1942,1.164,1945,0.649,1947,0.804,2053,0.836,2054,1.57,2060,2.593,2076,0.677,2126,0.901,2145,0.876,2253,0.969,2289,3.218,2291,0.969,2292,0.791,2293,1.688,2294,0.876,2295,0.969,2296,1.332,2297,0.969,2298,0.969,2299,1.641,2301,0.756,2304,0.855,2305,0.969,2306,0.737,2307,1.688,2308,0.876,2309,0.704,2310,0.756,2311,0.876,2312,0.901,2545,0.901,2548,0.901,2673,0.767,3043,0.728,3129,0.644,3181,1.019,3182,1.019,3183,1.019,3184,1.019,3185,1.019,3186,1.019,3187,1.019,3188,1.019,3189,3.386,3190,1.019,3191,1.019,3192,1.019,3193,0.931,3194,0.931,3195,1.019,3196,1.019,3197,1.019,3198,1.019]],["component/202",[7,0.401]],["title/203-1",[136,15.007,191,22.192,296,23.851,552,23.551]],["name/203-1",[]],["text/203-1",[]],["component/203-1",[]],["title/203",[102,41.887,136,19.88]],["name/203",[102,1.332]],["text/203",[6,1.778,8,2.169,10,1.461,18,0.941,24,1.126,25,1.531,30,1.592,31,1.136,34,1.588,36,0.919,42,0.925,52,1.707,79,0.944,84,1.019,88,2.239,90,2.207,99,1.015,112,1.674,117,0.855,118,1.21,134,2.855,136,2.821,139,3.702,146,1.106,147,1.329,148,0.699,152,1.448,154,1.029,158,1.101,163,1.837,172,1.566,190,1.251,191,2.25,192,1.065,196,2.807,203,1.236,209,1.434,214,1.865,224,2.424,227,1.372,234,2.061,239,0.987,264,3.561,279,1.669,280,0.947,286,1.201,292,1.131,296,3.26,297,2.03,308,3.01,319,2.443,377,1.097,402,1.315,431,1.222,443,1.955,446,1.053,460,0.894,465,1.549,466,1.195,514,1.738,552,2.715,593,0.997,620,1.222,647,1.275,665,1.083,668,1.083,673,3.298,681,1.395,682,1.092,683,1.111,684,3.713,690,1.275,697,2.14,723,2.57,733,1.408,741,2.264,743,3.319,772,1.259,774,1.395,788,1.229,790,2.695,889,1.251,903,1.176,909,2.537,933,2.383,972,1.074,982,1.383,1005,2.53,1053,1.408,1066,3.176,1092,1.339,1099,1.571,1110,1.395,1150,1.116,1772,2.682,1942,1.292,2016,1.421,2043,3.981,2045,1.571,2046,1.703,2047,1.703,2050,1.643,2051,1.395,2055,1.617,2069,1.703,2072,1.617,2098,4.062,2099,1.873,2104,1.873,2138,1.479,2223,3.391,2296,1.479,2634,1.643,3154,1.821,3165,1.737,3168,1.737,3170,3.044,3171,1.737,3172,1.737,3199,1.821,3200,1.821,3201,1.821,3202,1.821,3203,1.821,3204,2.118,3205,1.821,3206,1.671]],["component/203",[7,0.401]],["title/204",[136,15.007,214,22.092,264,19.605,1005,19.947]],["name/204",[214,0.521,1005,0.471]],["text/204",[0,2.012,4,2.212,5,2.579,8,2.341,10,2.477,12,2.037,17,2.552,18,1.77,30,1.709,36,2.731,40,1.314,42,1.739,68,2.311,69,2.879,86,2.012,88,2.346,110,1.809,118,1.3,133,3.739,135,2.572,136,1.995,139,3.421,142,2.09,155,2.25,160,2.118,172,1.681,211,2.02,214,3.862,215,2.752,249,2.062,264,1.332,377,2.062,402,0.881,412,2.672,487,3.384,536,6.57,556,2.368,557,2.285,608,2.028,612,3.144,674,2.58,716,3.144,717,5.568,718,3.523,719,3.476,722,6.896,723,1.514,724,3.203,725,3.523,726,3.788,727,3.341,728,2.179,746,1.62,752,3.907,757,3.523,762,2.879,763,2.916,764,2.724,765,2.752,766,2.58,1005,3.28,1137,2.845,1166,3.091,1483,1.798,1877,3.341,2169,5.058,2304,5.277,2313,3.203,2314,3.788,2315,3.788,3129,2.519,3207,3.985,3208,3.64,3209,3.985,3210,3.64]],["component/204",[7,0.401]],["title/205",[136,23.734]],["name/205",[631,1.45]],["text/205",[5,4.01,7,2.398,34,4.186,36,4.246,136,2.503,139,4.196,155,3.499,179,6.562,214,3.686,690,5.89]],["component/205",[7,0.401]],["title/206-1",[88,23.377,142,40.753]],["name/206-1",[]],["text/206-1",[]],["component/206-1",[]],["title/206-2",[6,37.221,687,52.112]],["name/206-2",[]],["text/206-2",[]],["component/206-2",[]],["title/206-3",[123,52.609,124,56.867]],["name/206-3",[]],["text/206-3",[]],["component/206-3",[]],["title/206",[136,19.88,684,38.775]],["name/206",[684,1.233]],["text/206",[6,3.164,15,1.595,17,2.094,26,1.25,32,2.063,35,2.732,36,1.354,38,2.81,40,1.029,57,1.724,75,2.347,77,2.882,84,3.179,88,2.559,91,1.76,96,2.406,121,1.715,123,4.472,124,4.834,129,2.374,130,3.901,135,3.138,136,2.963,142,1.636,144,2.191,155,1.846,166,1.843,171,1.459,172,2.178,192,1.569,196,2.742,202,2.314,211,3.349,214,2.488,264,1.726,308,2.672,313,1.878,316,3.651,321,4.565,331,1.615,377,1.615,388,3.013,401,2.315,411,3.883,509,4.056,570,1.82,663,3.371,668,3.376,682,1.608,686,1.205,697,1.799,698,1.629,699,2.759,700,2.759,702,2.759,703,2.759,704,2.759,705,2.073,706,3.193,707,2.759,708,1.658,709,2.759,711,3.128,713,2.759,714,2.759,786,2.72,889,1.843,917,3.731,949,3.128,1092,1.973,1138,2.133,1187,2.202,1467,2.42,1661,2.283,2316,2.966,2317,2.966,2318,2.966,2319,2.966,2320,2.966,2321,2.966,2322,2.966,2323,2.966,2324,2.966,2325,4.908,2326,2.966,2327,2.966,2328,4.438,2329,3.942,2330,2.966,2331,2.966]],["component/206",[7,0.401]],["title/207-1",[729,57.377]],["name/207-1",[]],["text/207-1",[]],["component/207-1",[]],["title/207-2",[84,21.33,706,48.06]],["name/207-2",[]],["text/207-2",[]],["component/207-2",[]],["title/207-3",[514,27.277,706,48.06]],["name/207-3",[]],["text/207-3",[]],["component/207-3",[]],["title/207-4",[786,48.87]],["name/207-4",[]],["text/207-4",[]],["component/207-4",[]],["title/207-5",[1967,66.236]],["name/207-5",[]],["text/207-5",[]],["component/207-5",[]],["title/207-6",[52,30.744,350,36.208,680,33.358]],["name/207-6",[]],["text/207-6",[]],["component/207-6",[]],["title/207-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/207-7",[]],["text/207-7",[]],["component/207-7",[]],["title/207-8",[502,40.851]],["name/207-8",[]],["text/207-8",[]],["component/207-8",[]],["title/207",[136,17.103,487,29.01,680,33.358]],["name/207",[487,0.6,680,0.69]],["text/207",[4,0.88,7,0.703,8,0.385,13,0.515,14,0.655,17,2.258,18,0.705,20,0.88,26,2.23,29,0.608,32,0.634,35,2.946,36,0.688,38,2.136,46,1.107,52,2.86,71,0.821,84,2.412,96,0.739,101,3.673,108,1.074,110,0.72,112,1.771,117,3.275,118,2.213,121,0.872,125,1.788,134,2.593,136,1.736,142,0.832,148,0.523,155,2.224,157,2.224,161,0.604,163,0.785,164,0.948,165,1.027,170,0.942,171,1.341,172,2.349,178,0.811,180,0.942,195,0.961,196,1.998,214,1.08,226,1.799,239,0.739,245,1.074,247,0.942,248,1.42,250,1.084,252,1.755,255,2.744,263,2.648,275,1.409,277,1.914,279,0.713,280,1.282,297,2.147,301,2.731,315,1.027,319,1.178,327,1.211,331,2.032,340,0.942,346,1.16,347,1.211,351,0.7,375,1.01,377,1.484,378,1.074,386,0.872,391,1.974,395,0.988,398,1.146,418,1.211,430,1.074,439,0.89,446,0.788,451,0.791,452,1.084,455,3.795,458,1.761,465,0.662,487,3.522,505,0.988,508,1.644,514,1.378,525,2.125,547,0.677,583,1.592,596,0.988,597,0.88,604,2.126,608,0.807,622,2.802,665,0.811,673,1.399,679,3.693,680,4.99,682,0.817,683,1.504,686,1.516,689,1.063,698,0.828,705,1.054,708,0.843,712,2.998,729,0.981,730,2.802,731,2.189,732,2.501,733,1.054,734,1.095,735,2.521,736,2.333,737,1.33,738,1.251,741,1.749,744,2.632,745,0.771,770,1.402,771,3.733,772,2.86,774,1.044,775,1.176,776,1.402,777,1.402,778,1.402,779,2.378,780,1.301,781,2.352,782,1.33,783,1.176,785,2.405,786,2.068,787,1.402,788,0.92,789,1.363,790,0.863,889,1.693,973,1.16,985,0.961,993,0.885,1010,1.074,1033,2.684,1066,0.847,1076,0.736,1097,1.923,1219,1.044,1400,0.835,1416,0.954,1478,1.275,1551,1.044,1640,1.074,1659,1.211,1730,1.211,1733,1.193,1933,1.251,1943,1.275,1967,1.132,1968,1.449,1969,1.301,1970,1.33,1971,2.62,1972,1.449,1973,2.405,1974,1.363,1975,1.449,1976,1.449,1977,1.449,1978,1.33,1979,1.449,1980,1.449,2051,1.044,2054,0.925,2332,1.507,2333,1.507,2334,1.507,2335,1.507,2336,1.193]],["component/207",[7,0.401]],["title/208-1",[191,22.192,296,23.851,468,27.611,552,23.551]],["name/208-1",[]],["text/208-1",[]],["component/208-1",[]],["title/208",[102,41.887,468,36.578]],["name/208",[102,1.332]],["text/208",[3,0.951,4,1.299,5,0.958,6,1.937,8,2.168,10,2.104,18,1.039,23,1.045,25,1.69,30,1.735,31,1.255,42,1.021,52,1.86,79,1.042,84,0.642,86,2.043,88,2.688,90,1.803,99,1.12,112,1.055,117,0.944,118,1.319,134,3.008,139,3.446,146,1.221,147,1.468,148,0.771,154,1.966,158,1.216,163,2.003,172,2.255,188,1.357,190,1.381,191,3.196,192,1.176,196,2.644,200,1.514,203,2.36,209,1.583,214,0.881,224,1.98,227,1.514,234,2.968,239,1.09,264,3.449,279,2.404,280,1.045,286,1.326,292,1.249,296,3.435,297,1.279,308,2.576,317,1.583,319,2.616,391,1.176,431,1.349,443,2.131,446,1.162,460,0.987,465,0.976,468,5.179,514,1.876,552,2.889,593,1.101,597,1.299,604,1.267,620,1.349,665,1.195,668,1.195,673,1.973,681,1.54,682,1.205,683,1.226,684,1.167,690,1.408,697,1.349,723,2.42,733,1.554,741,2.467,743,2.983,790,2.909,889,1.381,901,1.961,902,1.961,903,2.246,909,2.766,933,1.502,1053,1.554,1066,2.854,1078,1.436,1099,1.734,1110,1.54,1123,1.633,1174,1.514,2016,1.568,2043,4.296,2045,1.734,2046,1.88,2047,1.88,2050,1.814,2051,1.54,2054,1.365,2055,1.785,2069,1.88,2070,2.068,2072,1.785,2138,1.633,2296,1.633,2353,1.961,3129,1.479,3135,1.785,3143,3.696,3165,1.918,3168,1.918,3170,3.318,3171,1.918,3172,1.918,3199,2.01,3200,2.01,3201,2.01,3202,2.01,3203,2.01,3205,2.01,3206,1.845,3211,2.137,3212,2.137,3213,2.339,3214,2.339]],["component/208",[7,0.401]],["title/209",[468,43.669]],["name/209",[631,1.45]],["text/209",[]],["component/209",[7,0.401]],["title/210",[32,26.708,45,29.703,130,39.481]],["name/210",[45,0.615,559,1.223]],["text/210",[11,7.224,26,3.255,45,3.611,48,4.402,52,3.737,54,4.402,60,4.924,77,5.878,91,4.584,155,4.178,191,3.075,232,6.413,560,7.185,561,7.185,562,7.185,563,7.185,566,7.185,567,5.556,568,7.185]],["component/210",[7,0.401]],["title/211-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/211-1",[]],["text/211-1",[]],["component/211-1",[]],["title/211-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/211-2",[]],["text/211-2",[]],["component/211-2",[]],["title/211-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/211-3",[]],["text/211-3",[]],["component/211-3",[]],["title/211-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/211-4",[]],["text/211-4",[]],["component/211-4",[]],["title/211-5",[148,25.631,582,61.318]],["name/211-5",[]],["text/211-5",[]],["component/211-5",[]],["title/211-6",[84,9.983,136,9.304,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156,1005,12.367]],["name/211-6",[]],["text/211-6",[]],["component/211-6",[]],["title/211-7",[586,53.814]],["name/211-7",[]],["text/211-7",[]],["component/211-7",[]],["title/211",[587,73.205]],["name/211",[587,1.949]],["text/211",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303,1005,1.27]],["component/211",[7,0.401]],["title/212-1",[88,17.646,142,30.762,604,31.77,910,35.079]],["name/212-1",[]],["text/212-1",[]],["component/212-1",[]],["title/212-2",[135,23.974,191,22.192,296,23.851,552,23.551]],["name/212-2",[]],["text/212-2",[]],["component/212-2",[]],["title/212",[102,41.887,135,31.759]],["name/212",[102,1.332]],["text/212",[3,0.967,5,0.974,6,2.592,8,2.067,10,2.131,11,1.341,14,0.982,17,0.964,18,1.056,23,1.063,25,1.718,29,0.912,30,1.02,31,2.201,34,1.755,42,1.038,48,1.288,52,1.887,79,1.059,84,0.653,86,2.072,88,2.563,90,1.828,99,1.139,112,1.851,113,1.731,117,0.959,118,1.765,134,3.034,135,3.998,136,0.608,139,2.577,142,1.247,146,1.241,147,1.492,148,0.784,154,1.994,155,0.85,158,1.236,163,1.177,172,2.283,190,1.404,191,3.007,192,1.196,196,2.247,203,1.387,209,1.609,214,0.895,224,2.008,227,1.539,234,3.005,239,1.108,243,1.422,264,3.376,268,1.46,275,1.168,279,1.845,280,1.063,286,1.348,296,3.464,297,1.3,308,2.189,313,1.431,317,2.778,319,2.223,356,2.152,386,1.307,391,2.063,431,1.371,443,2.161,446,1.182,460,1.003,465,0.992,514,1.9,552,2.173,553,1.413,593,1.119,620,1.371,665,1.215,668,2.097,673,2.001,681,1.566,682,1.225,683,1.247,684,1.186,689,1.594,695,1.155,697,1.371,712,1.481,719,1.313,723,2.057,741,2.502,743,3.021,790,2.233,889,1.404,901,1.994,902,1.994,903,2.278,909,2.805,910,1.422,933,1.527,1053,1.58,1078,2.52,1106,1.225,1110,1.566,1134,1.718,2016,1.594,2043,4.35,2045,1.763,2046,1.911,2047,1.911,2050,1.844,2051,1.566,2055,1.815,2069,1.911,2072,1.815,2138,1.66,2296,1.66,2353,1.994,3129,1.503,3135,1.815,3165,1.95,3168,1.95,3170,3.365,3171,1.95,3172,1.95,3199,2.044,3200,2.044,3201,2.044,3202,2.044,3203,2.044,3205,2.044,3206,1.876,3211,2.172,3212,2.172,3215,2.378,3216,2.378,3217,2.378,3218,2.378,3219,2.378]],["component/212",[7,0.401]],["title/213-1",[406,22.217,1106,34.459,1107,35.216]],["name/213-1",[]],["text/213-1",[]],["component/213-1",[]],["title/213-2",[136,17.103,679,26.447,752,33.489]],["name/213-2",[]],["text/213-2",[]],["component/213-2",[]],["title/213-3",[42,22.807,142,27.403,143,28.034,752,26.176,2337,44.917]],["name/213-3",[]],["text/213-3",[]],["component/213-3",[]],["title/213-4",[5,21.411,42,22.807,135,21.356,138,23.078,752,26.176]],["name/213-4",[]],["text/213-4",[]],["component/213-4",[]],["title/213",[135,37.916]],["name/213",[631,1.45]],["text/213",[8,0.699,17,3.573,20,1.6,23,1.288,29,2.394,31,1.546,40,0.951,42,2.11,45,2.148,76,1.735,84,2.418,92,1.713,96,2.909,99,1.381,101,1.371,104,1.411,106,1.796,118,2.036,125,1.313,134,1.026,135,4.428,138,2.135,142,2.535,143,1.546,144,1.223,152,1.971,155,1.031,161,1.098,164,2.891,170,1.713,171,1.348,183,3.236,189,1.6,192,1.45,195,1.746,196,2.007,211,4.127,251,2.332,252,2.79,254,1.915,255,1.644,280,1.288,301,1.946,308,1.166,320,1.635,341,1.644,351,1.273,357,1.617,374,2.058,377,1.492,391,1.45,406,1.606,415,1.898,439,1.617,451,1.438,455,1.416,502,1.269,531,1.386,583,1.6,593,3.439,608,1.467,668,1.473,719,2.67,752,2.421,754,1.233,756,1.915,764,1.971,771,2.236,772,1.713,786,1.518,859,1.735,890,2.968,891,2.549,892,2.549,893,1.851,894,1.866,895,2.109,896,1.809,897,2.417,898,2.201,899,2.549,904,2.138,913,2.236,972,1.461,1075,1.626,1076,1.339,1109,1.971,1133,3.08,1150,1.518,1151,2.034,1284,2.201,1348,2.274,1389,2.274,1647,1.898,1747,2.236,2016,3.241,2130,2.478,2337,2.478,2338,2.74,2339,2.74,2340,2.74,2341,2.74,2342,2.317,2343,2.74,2344,2.74,2345,2.74,2346,2.74,2347,2.74,2348,2.201,2351,2.74,2352,2.109,2353,2.417,2356,2.201,2357,2.74,2358,2.74,2359,2.74,2360,2.74,2361,2.74,2362,2.74,2363,4.155,2364,2.74,2365,2.478,2366,2.74,2367,2.74,2368,2.74,2369,2.417,2370,2.364,2371,2.478,3220,2.883,3221,2.883,3222,2.883,3223,2.883,3224,2.883]],["component/213",[7,0.401]],["title/214-1",[45,34.526,90,34.631]],["name/214-1",[]],["text/214-1",[]],["component/214-1",[]],["title/214-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/214-2",[]],["text/214-2",[]],["component/214-2",[]],["title/214-3",[79,26.141,134,20.888,552,23.551,686,22.657]],["name/214-3",[]],["text/214-3",[]],["component/214-3",[]],["title/214-4",[84,11.772,112,19.35,139,15.209,335,24.457,429,28.498,624,29.938,673,20.918]],["name/214-4",[]],["text/214-4",[]],["component/214-4",[]],["title/214-5",[26,26.774,465,27.903,2372,48.923]],["name/214-5",[]],["text/214-5",[]],["component/214-5",[]],["title/214-6",[319,31.924,2373,60.278]],["name/214-6",[]],["text/214-6",[]],["component/214-6",[]],["title/214-7",[26,26.774,308,27.045,767,46.175]],["name/214-7",[]],["text/214-7",[]],["component/214-7",[]],["title/214-8",[106,36.54,136,15.007,137,27.802,2374,43.502]],["name/214-8",[]],["text/214-8",[]],["component/214-8",[]],["title/214-9",[86,33.757,191,25.292,296,27.183]],["name/214-9",[]],["text/214-9",[]],["component/214-9",[]],["title/214-10",[144,24.886,547,25.024,673,28.61,2137,40.104]],["name/214-10",[]],["text/214-10",[]],["component/214-10",[]],["title/214-11",[296,31.597,745,37.762]],["name/214-11",[]],["text/214-11",[]],["component/214-11",[]],["title/214-12",[135,27.323,893,42.936,2375,53.736]],["name/214-12",[]],["text/214-12",[]],["component/214-12",[]],["title/214-13",[2313,74.57]],["name/214-13",[]],["text/214-13",[]],["component/214-13",[]],["title/214-14",[84,16.101,586,34.025,672,38.3,1255,24.418]],["name/214-14",[]],["text/214-14",[]],["component/214-14",[]],["title/214",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,1253,29.136]],["name/214",[2376,2.348]],["text/214",[0,0.824,3,0.664,4,0.906,5,0.669,7,0.4,8,1.676,10,1.159,13,0.957,14,0.674,17,0.662,26,2.965,29,1.542,31,0.876,33,1.481,45,1.308,57,2.221,71,0.845,77,0.911,79,0.728,84,2.032,86,1.486,88,0.886,90,1.312,101,1.4,102,0.88,106,1.017,110,1.337,111,1.587,112,2.859,113,0.689,117,1.622,118,1.605,126,1.152,128,0.916,134,0.581,135,1.643,136,1.621,137,3.004,139,3.045,143,0.876,144,2.411,155,1.438,160,0.868,161,0.622,163,1.991,172,0.689,178,0.834,180,0.97,186,0.852,189,1.635,191,1.114,196,0.678,214,2.14,224,0.799,231,1.105,236,0.691,247,3.377,249,0.845,251,0.788,252,3.31,263,1.912,264,3.071,268,1.003,277,0.796,292,1.572,296,3.011,300,1.075,301,1.618,308,1.99,313,0.983,316,0.776,319,1.652,335,1.679,340,0.97,349,0.852,354,2.36,355,1.04,356,0.856,357,2.76,361,1.341,375,1.04,386,0.897,401,1.803,402,0.889,429,1.085,440,2.523,446,0.811,465,1.229,476,2.284,487,1.277,514,1.033,517,0.942,518,1.993,520,1.128,525,0.721,545,1.085,547,1.256,552,2.545,556,1.749,577,2.332,580,0.931,586,0.947,624,2.806,665,2.055,670,0.86,672,2.625,673,3.091,679,0.646,680,0.815,681,1.075,686,1.137,698,2.569,723,0.62,744,1.095,745,0.793,752,0.818,767,1.128,841,1.024,867,1.057,889,0.964,893,1.891,938,2.183,939,1.443,943,1.066,945,1.443,946,1.443,947,1.246,948,1.339,951,2.414,967,0.996,1066,1.572,1076,0.758,1077,1.246,1150,0.86,1174,1.057,1253,3.514,1255,0.68,1289,1.312,1291,1.18,1400,0.86,1403,1.105,1416,0.983,1421,1.116,1533,1.166,1557,1.339,1558,1.652,1610,1.017,1611,1.085,1612,1.688,1650,1.152,1708,1.095,1754,1.152,1786,1.698,1818,1.14,1855,3.119,1942,1.796,1962,3.119,2042,1.075,2063,1.166,2066,1.403,2097,1.228,2137,1.116,2138,1.14,2152,1.403,2161,2.531,2310,1.211,2311,2.531,2313,2.366,2372,2.154,2373,1.266,2374,1.211,2375,2.366,2377,1.403,2378,1.552,2379,1.312,2380,2.799,2381,1.552,2382,1.552,2383,1.552,2384,1.552,2385,1.552,2386,1.552,2387,2.154,2388,1.552,2389,1.552,2390,1.552,2391,1.312,2392,1.552,2393,1.552,2394,1.552,2395,1.552,2396,1.552,2397,1.552]],["component/214",[7,0.401]],["title/215-1",[264,19.605,296,23.851,673,28.61,743,32.738]],["name/215-1",[]],["text/215-1",[]],["component/215-1",[]],["title/215-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/215-2",[]],["text/215-2",[]],["component/215-2",[]],["title/215-3",[136,15.007,144,24.886,319,24.098,401,26.302]],["name/215-3",[]],["text/215-3",[]],["component/215-3",[]],["title/215-4",[679,26.447,754,28.6,2306,48.309]],["name/215-4",[]],["text/215-4",[]],["component/215-4",[]],["title/215-5",[678,44.313,1291,56.153]],["name/215-5",[]],["text/215-5",[]],["component/215-5",[]],["title/215-6",[139,23.708,319,27.465,1005,22.733]],["name/215-6",[]],["text/215-6",[]],["component/215-6",[]],["title/215-7",[120,38.779,319,27.465,949,40.503]],["name/215-7",[]],["text/215-7",[]],["component/215-7",[]],["title/215-8",[0,33.757,139,23.708,1066,35.699]],["name/215-8",[]],["text/215-8",[]],["component/215-8",[]],["title/215-9",[136,15.007,139,20.802,319,24.098,1005,19.947]],["name/215-9",[]],["text/215-9",[]],["component/215-9",[]],["title/215-10",[40,19.348,871,38.977,1431,31.324,2398,43.502]],["name/215-10",[]],["text/215-10",[]],["component/215-10",[]],["title/215-11",[136,12.052,249,24.386,452,32.208,1005,16.019,1403,31.893,1483,21.255]],["name/215-11",[]],["text/215-11",[]],["component/215-11",[]],["title/215",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2060,30.503]],["name/215",[2399,2.348]],["text/215",[0,0.405,5,0.329,7,0.197,8,1.727,10,0.856,13,1.382,14,0.898,15,1.414,17,1.724,18,0.677,20,1.208,23,0.681,26,0.322,29,0.834,30,0.345,32,1.699,34,0.344,35,2.471,36,0.661,37,0.469,40,0.265,45,0.357,52,0.369,54,0.435,56,0.379,63,0.5,68,0.466,77,0.448,79,0.679,84,2.075,88,0.242,93,0.448,94,0.469,95,0.971,96,1.014,101,0.725,102,0.822,103,0.588,112,1.918,113,0.918,115,0.86,118,0.497,120,1.605,125,1.506,126,0.567,128,0.451,129,0.369,134,0.543,135,0.889,136,2.125,137,2.396,139,3.111,143,0.431,144,1.174,146,0.796,154,0.39,155,0.989,160,0.81,161,0.306,163,0.398,166,0.474,171,0.375,178,0.41,180,0.477,189,0.846,190,0.474,192,1.094,195,0.923,196,1.765,214,0.819,224,1.354,228,0.402,239,0.71,243,0.48,247,4.23,248,0.398,249,1.126,251,1.335,252,1.237,255,0.458,263,1.316,264,2.526,272,0.437,275,0.395,278,0.471,282,0.469,283,1.262,286,0.455,292,0.429,296,2.582,297,0.439,301,0.876,308,1.119,317,0.544,319,2.72,324,0.567,333,0.466,340,0.477,341,0.458,351,0.355,354,0.471,374,0.573,375,0.512,377,0.416,391,0.404,398,1.101,401,0.683,402,1.197,421,0.431,424,1.931,431,0.463,440,0.957,441,0.483,443,0.803,446,1.081,451,0.761,452,1.042,455,0.395,459,0.49,465,0.335,468,1.302,470,0.353,487,0.944,492,1.473,505,0.5,508,0.461,514,1.639,517,1.255,520,0.555,523,0.471,525,0.355,531,0.733,547,0.65,549,1.081,552,1.111,577,0.466,586,0.466,597,0.446,603,0.48,604,0.435,615,0.834,617,0.439,620,1.255,665,1.112,668,0.41,670,1.146,673,2.278,678,0.869,679,1.503,680,1.086,684,1.381,686,1.804,690,0.483,705,0.534,743,1.544,744,0.539,754,2.459,755,0.613,773,0.512,783,0.596,841,0.504,854,1.409,865,1.141,871,1.838,873,0.516,894,0.52,909,0.549,910,0.48,918,1.115,931,1.088,932,1.806,933,1.397,934,2.564,936,2.081,938,0.596,940,1.31,942,0.69,947,2.112,948,0.659,949,3.063,951,0.659,958,0.673,959,0.71,963,0.41,966,0.52,967,0.93,970,1.022,974,0.659,975,1.25,982,0.995,984,0.493,993,0.448,998,1.064,1005,2.824,1010,1.032,1017,1.022,1025,0.659,1033,0.549,1040,0.874,1056,1.182,1066,1.765,1076,1.285,1078,0.493,1086,0.673,1096,0.573,1112,1.146,1125,0.516,1126,0.549,1136,0.5,1138,1.042,1146,1.182,1252,0.659,1253,1.711,1277,1.553,1290,0.71,1291,1.101,1400,2.001,1403,1.032,1416,0.483,1431,2.7,1456,0.345,1473,0.995,1483,0.688,1499,1.053,1518,0.659,1520,0.516,1521,0.659,1531,0.659,1558,1.221,1559,1.022,1561,0.58,1578,0.588,1591,1.386,1597,0.71,1610,0.95,1611,1.013,1612,1.587,1631,1.203,1708,0.539,1772,0.58,1786,0.463,1818,1.519,1819,0.529,1849,0.613,1942,1.688,1945,1.763,1955,0.71,1969,0.659,1973,0.673,2054,0.469,2056,0.539,2060,4.111,2083,0.613,2109,0.596,2116,0.623,2118,0.645,2119,0.567,2137,0.549,2169,0.645,2194,1.088,2230,0.645,2258,0.69,2286,0.734,2296,0.561,2299,1.31,2301,1.13,2306,1.999,2309,0.555,2329,1.164,2352,0.588,2365,0.69,2372,0.588,2373,1.182,2377,0.69,2387,2.78,2391,0.645,2398,1.13,2400,0.763,2401,1.348,2402,0.763,2403,0.69,2404,0.763,2405,1.449,2406,0.645,2407,0.645,2408,1.25,2409,0.71,2410,0.763,2411,0.645,2412,1.182,2413,0.623,2414,0.69,2415,1.225,2416,0.763,2417,1.636,2418,1.182,2419,1.115,2420,0.763,2421,0.645,2422,2.543,2423,0.623,2424,0.69,2425,0.69,2426,0.69,2427,0.763,2428,0.763,2429,0.71,2430,0.763,2431,0.645,2432,0.645,2433,0.69,2434,0.69,2435,0.763,2436,0.763,2437,0.763,2438,0.69,2439,0.71,2440,1.449,2441,0.763,2442,0.763,2443,0.673,2444,0.69,2445,0.673,2446,0.763,2447,0.69,2448,0.596,2449,0.763,2450,0.763,2451,0.763,2452,1.278,2453,0.763,2454,0.763,2455,0.613,2456,0.763,2457,0.659,2458,0.763,2459,0.763,2460,0.763]],["component/215",[7,0.401]],["title/216-1",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/216-1",[]],["text/216-1",[]],["component/216-1",[]],["title/216-2",[136,17.103,144,28.362,401,29.976]],["name/216-2",[]],["text/216-2",[]],["component/216-2",[]],["title/216-3",[296,31.597,3225,71]],["name/216-3",[]],["text/216-3",[]],["component/216-3",[]],["title/216-4",[308,31.436,465,32.434]],["name/216-4",[]],["text/216-4",[]],["component/216-4",[]],["title/216-5",[3129,58.657]],["name/216-5",[]],["text/216-5",[]],["component/216-5",[]],["title/216-6",[96,31.151,754,28.6,3226,61.082]],["name/216-6",[]],["text/216-6",[]],["component/216-6",[]],["title/216-7",[1483,35.06,3227,71]],["name/216-7",[]],["text/216-7",[]],["component/216-7",[]],["title/216-8",[45,26.062,319,24.098,1448,44.118,2292,45.501]],["name/216-8",[]],["text/216-8",[]],["component/216-8",[]],["title/216-9",[402,17.184,1076,36.09]],["name/216-9",[]],["text/216-9",[]],["component/216-9",[]],["title/216-10",[402,10.417,452,32.208,547,20.098,1483,21.255,1612,27.015,1631,37.173]],["name/216-10",[]],["text/216-10",[]],["component/216-10",[]],["title/216-11",[1610,41.527,1611,28.498,1612,38.229,2306,30.991,3228,32.742]],["name/216-11",[]],["text/216-11",[]],["component/216-11",[]],["title/216",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2292,36.543]],["name/216",[3229,2.471]],["text/216",[5,0.505,7,0.302,8,1.271,13,0.401,17,0.5,19,1.886,24,0.655,26,2.098,29,1.218,31,0.661,32,0.91,45,0.548,54,0.668,68,0.715,71,1.643,77,0.688,79,0.549,84,1.585,86,1.996,88,0.685,92,0.732,94,1.329,95,0.785,96,2.16,105,0.94,112,1.783,117,1.281,118,1.512,121,0.677,122,0.805,125,0.561,128,0.691,134,1.65,136,1.6,139,1.857,142,0.646,144,1.966,146,2.064,148,0.407,155,2.391,158,0.641,161,0.469,163,1.128,165,0.798,178,1.164,180,0.732,189,1.264,191,1.201,195,0.747,196,0.512,214,1.196,224,0.603,247,4.417,248,1.572,251,1.531,252,1.419,263,1.88,264,2.09,267,0.695,268,1.399,275,1.119,277,0.601,279,0.554,280,0.551,282,0.719,286,1.292,292,0.658,296,1.607,301,1.278,308,2.863,316,1.083,319,2.152,349,1.189,350,0.668,354,1.863,357,1.278,361,1.037,377,1.643,401,0.553,402,1.478,404,0.972,406,0.41,421,0.661,440,1.429,443,0.649,446,1.132,447,1.126,452,2.703,455,2.278,465,3.103,470,0.541,487,0.535,502,1.741,505,0.768,513,0.972,517,0.711,520,0.851,523,0.723,525,0.544,547,1.354,549,0.613,552,1.861,567,1.557,580,0.703,586,0.715,644,0.991,665,0.63,670,0.649,673,2.554,675,3.42,677,0.752,679,2.8,680,0.615,682,0.635,684,1.136,690,0.742,697,1.313,698,1.189,712,0.768,723,0.865,727,1.033,731,1.739,735,0.792,740,2.462,741,1.936,742,0.843,744,2.129,745,1.107,754,1.691,772,0.732,774,0.812,775,0.914,790,0.671,850,0.851,859,0.742,865,1.194,867,0.798,889,0.728,900,0.785,918,0.902,919,1.033,936,0.927,963,0.63,966,0.798,967,0.752,970,2.129,972,1.155,982,1.487,984,1.95,985,1.38,1005,1.079,1008,0.668,1040,1.306,1064,2.24,1066,1.695,1076,1.474,1078,1.399,1089,0.86,1125,0.792,1136,0.768,1144,0.902,1174,0.798,1255,0.513,1287,0.779,1400,1.2,1448,0.927,1457,0.533,1483,2.605,1610,2.887,1611,2.109,1612,3.834,1622,0.914,1631,2.505,1682,0.927,1708,0.826,1730,2.423,1752,1.09,1754,0.87,1783,0.914,1786,0.711,1843,0.991,1942,1.389,1945,0.785,1974,1.059,2042,0.812,2054,0.719,2056,0.826,2060,1.475,2108,0.956,2132,1.011,2137,1.557,2194,1.626,2230,0.991,2292,3.595,2296,0.86,2306,0.891,2401,1.09,2412,0.956,2413,1.766,2417,1.713,2418,1.766,2419,1.667,2421,0.991,2422,1.362,2423,0.956,2445,1.91,2457,1.011,2469,1.172,2493,1.033,2512,1.09,2586,0.914,2713,1.09,3129,3.954,3225,1.126,3226,1.126,3227,1.126,3228,1.739,3230,1.233,3231,1.233,3232,1.233,3233,1.233,3234,1.011,3235,1.233,3236,1.233,3237,2.278,3238,1.126,3239,1.233,3240,1.233,3241,1.233,3242,1.233,3243,1.233,3244,1.126,3245,1.233,3246,1.126,3247,1.126,3248,1.233,3249,1.233,3250,1.233,3251,1.233,3252,1.233,3253,1.233,3254,1.233,3255,1.233,3256,1.233,3257,0.972,3258,1.059,3259,1.233,3260,1.126]],["component/216",[7,0.401]],["title/217-1",[236,39.251]],["name/217-1",[]],["text/217-1",[]],["component/217-1",[]],["title/217-2",[96,36.21,679,30.741]],["name/217-2",[]],["text/217-2",[]],["component/217-2",[]],["title/217-3",[679,30.741,949,47.08]],["name/217-3",[]],["text/217-3",[]],["component/217-3",[]],["title/217-4",[32,18.821,79,20.995,84,12.931,421,25.274,455,23.149,917,34.042]],["name/217-4",[]],["text/217-4",[]],["component/217-4",[]],["title/217-5",[351,40.973]],["name/217-5",[]],["text/217-5",[]],["component/217-5",[]],["title/217-6",[980,68.801]],["name/217-6",[]],["text/217-6",[]],["component/217-6",[]],["title/217-7",[36,33.721,1005,26.424]],["name/217-7",[]],["text/217-7",[]],["component/217-7",[]],["title/217-8",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/217-8",[]],["text/217-8",[]],["component/217-8",[]],["title/217-9",[155,18.684,183,20.773,308,21.139,465,21.81,593,24.597]],["name/217-9",[]],["text/217-9",[]],["component/217-9",[]],["title/217-10",[52,35.736,1137,55.481]],["name/217-10",[]],["text/217-10",[]],["component/217-10",[]],["title/217-11",[29,25.643,287,46.666,679,26.447]],["name/217-11",[]],["text/217-11",[]],["component/217-11",[]],["title/217-12",[754,39.689]],["name/217-12",[]],["text/217-12",[]],["component/217-12",[]],["title/217-13",[3244,84.764]],["name/217-13",[]],["text/217-13",[]],["component/217-13",[]],["title/217-14",[2352,67.892]],["name/217-14",[]],["text/217-14",[]],["component/217-14",[]],["title/217-15",[96,43.229]],["name/217-15",[]],["text/217-15",[]],["component/217-15",[]],["title/217-16",[3261,92.783]],["name/217-16",[]],["text/217-16",[]],["component/217-16",[]],["title/217-17",[3262,92.783]],["name/217-17",[]],["text/217-17",[]],["component/217-17",[]],["title/217-18",[96,43.229]],["name/217-18",[]],["text/217-18",[]],["component/217-18",[]],["title/217-19",[2411,74.57]],["name/217-19",[]],["text/217-19",[]],["component/217-19",[]],["title/217-20",[96,43.229]],["name/217-20",[]],["text/217-20",[]],["component/217-20",[]],["title/217-21",[2412,71.964]],["name/217-21",[]],["text/217-21",[]],["component/217-21",[]],["title/217-22",[96,43.229]],["name/217-22",[]],["text/217-22",[]],["component/217-22",[]],["title/217-23",[2461,84.764]],["name/217-23",[]],["text/217-23",[]],["component/217-23",[]],["title/217-24",[96,43.229]],["name/217-24",[]],["text/217-24",[]],["component/217-24",[]],["title/217-25",[2413,71.964]],["name/217-25",[]],["text/217-25",[]],["component/217-25",[]],["title/217-26",[3129,58.657]],["name/217-26",[]],["text/217-26",[]],["component/217-26",[]],["title/217-27",[86,46.845]],["name/217-27",[]],["text/217-27",[]],["component/217-27",[]],["title/217-28",[96,43.229]],["name/217-28",[]],["text/217-28",[]],["component/217-28",[]],["title/217-29",[0,23.788,86,23.788,308,19.058,597,26.157,2373,36.543,3129,29.786]],["name/217-29",[]],["text/217-29",[]],["component/217-29",[]],["title/217-30",[2414,79.747]],["name/217-30",[]],["text/217-30",[]],["component/217-30",[]],["title/217-31",[96,43.229]],["name/217-31",[]],["text/217-31",[]],["component/217-31",[]],["title/217-32",[3263,92.783]],["name/217-32",[]],["text/217-32",[]],["component/217-32",[]],["title/217-33",[96,43.229]],["name/217-33",[]],["text/217-33",[]],["component/217-33",[]],["title/217",[26,31.122,679,30.741]],["name/217",[26,0.554,679,0.547]],["text/217",[0,0.1,2,0.113,3,0.08,4,0.217,5,1.673,7,0.048,8,1.718,10,0.505,14,0.082,15,0.48,17,1.781,18,0.257,19,0.344,20,0.11,22,0.308,23,0.175,24,0.592,26,0.947,29,1.566,30,0.248,31,0.597,32,1.055,34,0.326,35,0.403,36,0.899,37,0.337,38,0.315,40,0.251,42,0.17,45,0.257,52,1.215,54,0.107,56,0.184,57,0.977,63,0.585,68,0.335,71,0.915,76,0.348,79,1.866,82,0.257,84,2.699,86,1.72,88,0.875,90,0.419,91,0.112,92,1.142,96,1.902,97,0.374,98,0.124,99,1.904,101,3.637,104,0.097,105,0.314,106,0.243,108,0.134,110,0.803,111,0.211,112,0.502,113,0.47,115,0.22,117,0.836,118,1.032,120,0.744,121,0.318,122,0.497,123,0.515,124,0.286,125,0.876,127,0.124,128,0.111,129,0.18,130,0.117,133,0.452,134,1.035,135,0.524,136,0.53,138,0.567,139,2.179,141,0.138,142,0.205,143,0.949,144,0.399,145,0.249,146,0.204,148,0.478,154,0.096,155,1.302,160,0.499,161,0.29,162,0.138,163,2.021,165,0.938,166,0.856,168,0.198,169,0.22,170,0.558,171,0.753,172,0.746,179,0.262,180,0.344,183,0.94,186,0.302,188,0.115,189,0.321,190,0.658,191,0.421,192,0.196,194,0.125,196,0.922,199,0.228,200,0.253,201,0.399,203,0.228,206,0.138,209,0.134,211,0.198,214,0.354,224,0.46,225,0.279,226,0.363,228,0.099,231,0.134,238,0.413,239,2.182,243,0.346,245,0.134,246,0.162,248,0.465,249,0.299,250,0.135,251,0.619,252,0.574,254,0.624,255,2.504,262,0.33,263,2.483,264,0.429,266,0.145,267,0.326,272,0.414,275,0.869,277,1.831,278,0.229,279,0.342,280,0.859,282,0.115,283,0.545,285,0.29,286,0.533,287,1.124,289,0.29,292,0.502,293,0.238,296,0.382,297,1.445,301,2.067,304,0.276,308,0.956,309,0.166,311,0.204,313,0.119,315,0.253,316,0.447,317,0.134,319,1.141,320,0.328,322,0.769,330,0.127,331,0.995,332,0.153,333,0.115,335,0.113,340,0.118,341,0.223,347,0.581,348,0.489,349,0.302,350,0.603,351,1.658,352,0.663,353,0.166,355,0.126,356,0.205,357,0.219,361,0.178,377,0.486,386,0.109,391,0.291,394,0.124,395,0.585,398,0.55,401,0.421,403,0.276,404,0.156,406,0.785,408,0.103,411,0.149,415,0.13,420,0.137,421,1.112,424,0.138,430,0.264,431,0.114,432,5.091,434,0.175,439,0.427,440,0.805,441,0.969,442,0.138,443,0.305,445,0.122,446,0.378,450,0.129,451,0.195,455,3.915,458,1.865,465,1.045,467,0.175,468,0.976,470,0.844,474,0.754,481,0.175,482,0.344,484,0.253,487,0.086,502,0.846,505,0.123,508,1.273,509,0.468,514,1.61,517,0.334,518,0.754,521,0.374,523,0.552,525,0.415,528,0.218,531,0.617,536,0.29,547,0.247,549,0.879,552,0.447,553,0.118,556,0.232,557,0.113,570,0.548,575,0.395,577,0.646,580,1.008,581,0.565,583,1.233,586,0.442,593,0.682,596,0.243,597,0.321,598,0.166,599,0.162,601,0.147,603,0.118,604,0.212,615,0.214,617,0.881,619,0.501,621,0.671,624,0.138,625,0.153,630,0.866,652,0.771,663,0.129,665,1.135,668,0.296,670,1.462,672,0.129,673,0.371,675,1.899,676,0.255,679,1.201,682,0.102,683,0.104,684,1.929,686,0.683,689,0.388,690,0.458,696,0.153,697,0.642,698,0.302,708,0.105,711,0.35,712,1.101,717,0.413,719,0.615,723,0.672,726,0.67,730,0.141,731,0.151,732,0.249,733,0.506,735,0.127,736,1.319,741,0.121,742,0.135,744,0.388,745,1.537,752,1.707,754,2.044,760,0.133,762,1.164,763,0.145,764,1.101,766,0.253,767,0.137,771,0.303,772,0.344,773,0.249,774,1.915,775,2.252,779,0.35,783,0.147,786,0.401,788,0.115,790,0.962,827,0.106,833,0.286,834,0.134,835,0.207,841,0.124,844,0.162,854,0.253,859,0.566,861,0.112,865,0.493,867,0.493,871,0.74,873,0.371,889,0.117,893,0.127,894,0.608,896,0.699,897,0.328,900,1.026,904,0.147,907,0.663,908,0.175,909,0.267,910,0.118,913,0.303,917,0.55,918,1.294,920,0.573,921,0.441,924,0.149,925,0.149,926,0.153,927,0.147,928,0.303,929,0.143,930,0.14,931,0.141,932,0.613,933,0.127,934,0.303,936,0.435,938,0.147,943,0.497,949,1.345,950,0.308,955,0.345,956,0.175,960,0.175,961,1.234,962,0.59,963,0.296,964,0.573,965,0.831,966,0.253,967,0.783,968,0.104,969,0.175,970,0.262,971,0.175,972,0.198,973,0.557,974,0.32,975,0.771,976,0.581,977,0.175,978,0.166,979,0.175,981,0.153,982,0.129,983,0.141,984,0.577,985,0.237,987,0.985,988,0.175,989,0.32,990,0.151,991,0.153,993,0.11,994,0.162,995,0.162,996,0.162,997,0.162,998,0.404,999,0.162,1000,0.162,1001,0.147,1002,0.162,1003,0.162,1004,0.133,1005,0.548,1006,1.45,1007,0.162,1008,1.041,1009,0.162,1010,0.515,1011,0.147,1012,0.145,1013,0.147,1014,0.32,1015,0.435,1017,0.51,1018,0.162,1019,0.153,1020,0.345,1021,0.32,1022,0.707,1023,0.345,1024,0.294,1025,0.162,1026,0.175,1027,0.175,1028,0.175,1029,0.175,1031,0.14,1032,0.175,1033,1.101,1034,0.511,1035,0.175,1036,0.175,1037,0.175,1038,0.175,1039,0.175,1040,0.113,1041,0.175,1042,0.175,1043,0.175,1044,0.175,1045,0.162,1046,0.166,1047,0.995,1048,1.106,1049,0.156,1051,0.175,1052,0.175,1053,0.506,1054,0.175,1055,0.175,1056,0.153,1059,0.175,1061,0.162,1062,0.135,1063,0.32,1064,0.14,1066,1.262,1068,0.267,1069,0.175,1070,0.17,1071,0.175,1072,0.175,1073,0.151,1074,0.153,1075,0.112,1076,0.181,1077,0.298,1078,0.24,1079,0.717,1080,0.175,1082,0.153,1083,0.282,1087,0.14,1088,0.32,1089,0.273,1090,0.381,1091,0.112,1092,0.125,1093,0.328,1094,0.328,1095,0.308,1098,0.166,1103,0.328,1105,0.166,1106,0.298,1107,0.206,1108,0.27,1109,0.135,1110,0.13,1111,0.166,1112,0.149,1113,0.181,1126,0.135,1127,0.14,1134,0.282,1137,0.141,1141,0.282,1146,0.153,1150,0.206,1155,0.279,1158,0.14,1166,0.153,1168,0.145,1195,0.116,1196,0.308,1211,0.251,1219,0.619,1249,0.153,1250,0.141,1253,0.122,1258,0.166,1280,0.159,1285,0.282,1288,0.345,1291,0.143,1293,0.17,1295,0.147,1308,0.145,1312,0.181,1361,0.456,1389,0.456,1400,0.305,1416,0.458,1417,0.166,1447,0.32,1451,0.153,1477,0.108,1483,1.253,1508,0.418,1513,0.138,1515,0.147,1519,0.298,1520,0.251,1529,0.151,1533,0.279,1647,0.13,1650,0.408,1682,0.149,1730,0.85,1750,0.147,1783,0.29,1880,0.303,1946,0.308,1947,0.156,1948,0.159,1950,0.273,1961,0.159,1970,0.166,1981,0.166,1982,0.166,1983,0.166,1984,0.166,1986,0.166,1987,0.485,1988,0.166,1989,0.485,1990,0.166,1991,0.485,1992,0.159,1993,0.485,1994,0.166,1995,0.456,1996,0.151,1997,0.181,1998,0.181,1999,0.166,2003,0.159,2007,0.17,2016,0.133,2042,0.381,2045,0.147,2054,0.115,2056,0.51,2060,0.374,2071,0.17,2093,1.052,2094,0.17,2108,0.449,2112,0.336,2119,0.14,2137,0.395,2138,1.234,2164,0.162,2173,0.32,2177,0.19,2194,0.543,2229,0.181,2230,0.159,2237,2.271,2240,0.147,2256,1.031,2296,0.273,2304,1.612,2308,0.336,2309,0.27,2310,0.29,2328,0.17,2329,0.98,2348,0.151,2352,0.423,2372,0.145,2375,0.159,2387,0.145,2391,0.159,2403,0.17,2411,0.159,2412,0.303,2413,0.303,2415,0.314,2417,0.294,2418,0.153,2419,0.145,2421,0.159,2422,0.234,2423,0.303,2424,0.336,2425,0.336,2426,0.17,2431,0.465,2432,0.314,2433,0.17,2434,0.336,2438,0.17,2439,0.175,2448,0.147,2452,0.166,2457,0.32,2463,0.724,2464,0.336,2465,0.336,2468,0.156,2472,0.371,2473,0.371,2474,0.188,2475,0.371,2476,0.188,2477,0.143,2478,0.32,2479,0.159,2480,0.371,2481,0.188,2482,0.188,2483,0.188,2484,0.17,2485,0.175,2486,0.188,2487,0.188,2488,0.336,2489,0.17,2491,0.188,2492,0.188,2493,0.166,2494,0.345,2495,0.32,2496,0.371,2497,0.188,2498,0.188,2499,0.188,2500,0.188,2501,0.17,2502,0.17,2503,0.159,2504,0.188,2505,0.188,2506,0.188,2507,0.17,2508,0.371,2509,0.371,2510,0.371,2511,1.52,2512,1.281,2513,0.371,2514,0.336,2515,0.371,2516,0.188,2517,0.371,2518,0.17,2519,0.188,2520,0.188,2521,0.188,2522,0.188,2523,0.55,2524,0.724,2525,0.188,2526,0.188,2527,0.188,2528,0.336,2529,0.188,2530,0.188,2531,0.55,2532,0.188,2533,0.55,2534,0.371,2535,0.188,2536,0.188,2537,0.188,2538,0.188,2539,0.371,2540,1.22,2541,0.188,2542,0.188,2543,0.188,2544,0.188,2545,0.345,2546,0.188,2547,0.188,2548,0.175,2549,0.188,2550,0.188,2551,0.188,2552,0.159,2553,0.188,2554,0.188,2555,0.188,2556,0.188,2557,0.188,2558,0.17,2559,0.175,2560,0.188,2561,0.371,2562,0.153,2563,0.345,2564,0.188,2565,0.724,2566,1.755,2567,1.531,2568,0.55,2569,0.893,2570,0.188,2571,0.188,2572,0.345,2573,0.188,2574,0.957,2575,0.188,2577,0.188,2578,0.188,2579,0.188,2580,0.17,2583,0.371,2584,0.371,2585,0.188,2587,0.156,2588,0.166,2589,0.17,2590,0.188,2591,0.371,2592,0.345,2593,0.175,2594,0.371,2595,0.17,2596,0.175,2597,0.188,2598,0.17,2599,0.188,2600,0.188,2601,0.188,2602,0.188,2603,0.188,2604,0.188,2605,0.188,2606,0.188,2607,0.188,2608,0.188,2609,0.188,2610,0.328,2611,0.371,2612,0.188,2613,0.159,2614,0.188,2615,0.188,2616,0.188,2617,0.188,2619,0.257,2621,0.166,2622,0.188,2663,0.162,2673,0.149,2788,0.175,2803,0.175,2874,0.175,3043,0.279,3129,1.755,3135,1.229,3206,0.156,3208,1.172,3210,0.181,3246,0.181,3264,0.391,3265,0.181,3266,0.181,3267,0.198,3268,0.198,3269,0.198,3270,0.198,3271,0.391,3272,0.391,3273,0.198,3274,0.198,3275,0.198,3276,0.198,3277,0.198,3278,0.391,3279,0.391,3280,1.114,3281,0.578,3282,0.578,3283,0.578,3284,0.198,3285,0.391,3286,0.391,3287,0.162,3288,0.391,3289,0.198,3290,0.391,3291,0.198,3292,0.761,3293,0.391,3294,0.198,3295,0.198,3296,0.198,3297,0.198,3298,0.198,3299,0.198,3300,0.198,3302,0.198,3303,0.198,3304,0.198,3305,0.761,3306,0.198,3307,0.198,3308,0.198,3309,1.768,3310,0.198,3311,0.357,3312,0.391,3313,0.391,3314,0.198,3315,0.391,3316,0.198,3317,0.198,3318,0.198,3319,0.391,3320,0.391,3321,0.198,3322,0.198,3323,0.198,3324,0.198,3325,0.198,3326,0.198,3327,0.391,3328,0.198,3329,0.198,3330,0.198,3331,0.198,3332,0.198,3333,0.198,3334,0.391,3335,0.198,3336,0.198,3337,0.198,3338,0.198,3339,0.198,3340,0.198,3341,0.198,3342,0.198,3343,0.578,3344,0.198,3345,0.198,3346,0.198,3347,0.198,3348,0.198,3349,0.391,3350,0.198,3351,0.198,3352,0.198,3353,0.198,3354,0.391,3739,0.213,3740,0.213,3741,0.213]],["component/217",[7,0.401]],["title/218-1",[923,82.026]],["name/218-1",[]],["text/218-1",[]],["component/218-1",[]],["title/218",[136,17.103,144,28.362,401,29.976]],["name/218",[631,1.45]],["text/218",[6,3.272,7,1.085,8,2.024,13,1.438,18,1.966,24,2.352,26,2.736,34,2.922,71,2.291,105,1.828,113,1.867,118,1.444,129,2.035,134,2.97,136,1.748,144,3.539,145,2.82,168,2.244,214,1.667,252,1.978,263,2.105,275,2.175,300,2.915,401,3.063,402,1.845,415,2.915,470,2.999,514,2.398,523,2.598,552,1.777,597,2.457,676,2.89,679,4.866,686,1.709,688,3.433,705,2.941,790,2.409,835,2.342,924,3.329,925,3.329,926,3.433,927,3.282,928,3.433,929,3.198,930,3.124,931,3.16,966,2.866,968,2.321,984,4.195,1031,3.124,1040,2.538,1116,3.913,1117,3.913,1118,5.728,1119,3.63,1120,3.913,1121,3.913,1122,3.239,1123,3.089,1124,3.913,1125,2.842,1126,3.026,1127,3.124,1136,4.255,1310,3.282,1483,1.997,1950,3.089,2018,3.026,2329,3.379,2406,3.557,2407,3.557,2623,4.207]],["component/218",[7,0.401]],["title/219-1",[86,33.757,343,46.175,1008,36.208]],["name/219-1",[]],["text/219-1",[]],["component/219-1",[]],["title/219-2",[236,39.251]],["name/219-2",[]],["text/219-2",[]],["component/219-2",[]],["title/219-3",[331,40.225,341,44.313]],["name/219-3",[]],["text/219-3",[]],["component/219-3",[]],["title/219-4",[3355,79.747]],["name/219-4",[]],["text/219-4",[]],["component/219-4",[]],["title/219-5",[3356,84.764]],["name/219-5",[]],["text/219-5",[]],["component/219-5",[]],["title/219-6",[3357,79.747]],["name/219-6",[]],["text/219-6",[]],["component/219-6",[]],["title/219-7",[3358,79.747]],["name/219-7",[]],["text/219-7",[]],["component/219-7",[]],["title/219-8",[3359,79.747]],["name/219-8",[]],["text/219-8",[]],["component/219-8",[]],["title/219-9",[3360,84.764]],["name/219-9",[]],["text/219-9",[]],["component/219-9",[]],["title/219-10",[3361,76.088]],["name/219-10",[]],["text/219-10",[]],["component/219-10",[]],["title/219-11",[191,29.399,3361,63.732]],["name/219-11",[]],["text/219-11",[]],["component/219-11",[]],["title/219-12",[3362,84.764]],["name/219-12",[]],["text/219-12",[]],["component/219-12",[]],["title/219-13",[3363,79.747]],["name/219-13",[]],["text/219-13",[]],["component/219-13",[]],["title/219-14",[3364,79.747]],["name/219-14",[]],["text/219-14",[]],["component/219-14",[]],["title/219-15",[301,31.278,3365,71]],["name/219-15",[]],["text/219-15",[]],["component/219-15",[]],["title/219-16",[191,29.399,3363,66.798]],["name/219-16",[]],["text/219-16",[]],["component/219-16",[]],["title/219-17",[1554,62.461,3366,71]],["name/219-17",[]],["text/219-17",[]],["component/219-17",[]],["title/219",[86,29.619,155,20.975,465,24.483,1008,31.77]],["name/219",[1008,1.338]],["text/219",[0,0.365,4,1.939,7,0.742,8,1.138,12,1.01,13,0.235,15,0.369,17,3.841,23,0.323,24,0.733,26,3.408,29,0.529,31,1.624,33,0.994,34,0.309,40,0.238,63,0.45,71,0.713,76,1.189,84,1.84,86,1.274,90,0.322,101,3.396,104,0.675,105,2.67,110,0.328,111,0.389,113,1.065,117,0.797,118,1.642,121,1.086,125,1.967,129,2.464,130,0.814,133,0.429,134,0.257,138,0.873,139,0.701,143,2.702,144,0.306,145,0.46,148,0.652,150,0.3,154,0.351,155,1.402,160,0.733,161,0.275,167,0.581,168,0.699,172,0.582,183,0.287,189,1.401,191,2.702,192,0.693,195,0.438,199,0.421,206,1.762,214,0.519,215,2.091,224,0.675,248,1.25,249,0.374,251,0.348,255,0.412,262,1.127,263,0.344,264,1.31,265,1.302,272,0.393,277,5.234,278,0.424,283,0.799,286,2.66,292,0.386,296,0.294,301,2.956,308,1.412,311,0.72,317,0.489,319,1.434,322,2.708,331,0.374,335,0.412,341,0.412,348,0.464,350,0.746,351,2.626,357,1.416,361,1.59,375,0.46,377,1.306,386,0.758,391,1.522,396,0.621,401,0.618,402,0.772,403,0.51,405,0.621,406,1.559,420,0.499,441,0.435,442,0.504,443,0.726,445,0.444,460,0.305,465,1.264,470,1.533,475,1.699,484,0.468,492,1.338,510,1.259,514,0.484,523,0.809,525,0.319,528,0.769,531,0.662,547,1.077,549,0.685,577,0.799,580,0.412,596,0.45,597,0.401,617,0.395,621,1.411,640,0.57,665,0.704,672,0.472,675,0.472,679,1.551,697,0.795,698,0.72,733,0.916,735,3.012,744,1.325,754,0.309,768,0.996,779,0.438,785,0.606,786,2.47,841,0.865,859,1.189,861,0.407,862,0.516,865,0.379,867,0.892,890,1.859,910,0.824,943,1.648,961,1.38,963,0.369,968,0.379,970,0.924,972,1.535,978,1.156,984,0.444,985,0.438,993,1.103,1008,5.778,1010,0.933,1011,0.536,1017,0.924,1031,0.51,1047,0.56,1053,0.916,1064,0.51,1066,0.386,1076,1.406,1099,5.138,1128,0.765,1129,0.675,1132,0.903,1133,1.929,1136,0.859,1139,0.9,1145,1.153,1195,0.424,1200,0.56,1219,1.994,1279,3.408,1280,0.581,1400,1.33,1456,0.311,1477,0.395,1483,0.326,1551,0.476,1554,1.589,1609,0.432,1612,0.414,1659,0.551,1786,0.795,1796,0.606,1852,0.933,1945,1.259,1948,1.108,2054,0.804,2067,0.606,2076,0.48,2096,1.185,2097,0.543,2138,1.762,2150,0.606,2177,2.287,2249,2.232,2281,0.639,2374,0.536,2419,1.446,2452,0.606,2468,3.094,2562,1.533,2619,1.302,2621,1.156,2636,2.491,2662,0.639,2684,0.606,2685,0.606,2756,1.219,2847,0.606,2890,0.606,3043,0.516,3129,3.184,3132,1.185,3135,1.509,3206,0.57,3247,0.66,3287,0.592,3355,2.17,3356,0.66,3357,0.621,3358,0.621,3359,1.185,3360,0.66,3361,1.621,3362,0.66,3363,1.185,3364,0.621,3365,0.66,3366,0.66,3367,0.722,3368,0.722,3369,1.378,3370,2.863,3371,1.378,3372,1.378,3373,0.722,3374,0.722,3375,0.722,3376,1.259,3377,1.31,3378,1.259,3379,1.185,3380,1.806,3381,4.32,3382,0.933,3383,1.378,3384,0.722,3385,0.66,3386,0.66,3387,1.259,3388,0.66,3389,0.66,3390,0.66,3391,0.621,3392,2.766,3393,1.259,3394,0.66,3395,1.378,3396,0.66,3397,0.66,3398,1.259,3399,0.621,3400,0.621,3401,0.722,3402,1.259,3403,0.722,3404,0.722,3405,0.66,3406,1.259,3407,0.66,3408,0.66,3409,0.66,3410,0.722,3411,0.722,3412,0.722,3413,0.592]],["component/219",[7,0.401]],["title/220-1",[236,39.251]],["name/220-1",[]],["text/220-1",[]],["component/220-1",[]],["title/220-2",[88,27.909]],["name/220-2",[]],["text/220-2",[]],["component/220-2",[]],["title/220-3",[30,28.681,466,37.709,2624,47.184]],["name/220-3",[]],["text/220-3",[]],["component/220-3",[]],["title/220-4",[134,23.806,264,22.343,361,30.449]],["name/220-4",[]],["text/220-4",[]],["component/220-4",[]],["title/220-5",[134,20.888,264,19.605,361,26.717,3413,48.109]],["name/220-5",[]],["text/220-5",[]],["component/220-5",[]],["title/220-6",[134,18.607,264,17.464,361,23.8,547,22.292,3258,44.917]],["name/220-6",[]],["text/220-6",[]],["component/220-6",[]],["title/220-7",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/220-7",[]],["text/220-7",[]],["component/220-7",[]],["title/220-8",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/220-8",[]],["text/220-8",[]],["component/220-8",[]],["title/220-9",[134,16.775,264,15.745,361,21.457,401,21.124,745,22.893,2817,39.504]],["name/220-9",[]],["text/220-9",[]],["component/220-9",[]],["title/220-10",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/220-10",[]],["text/220-10",[]],["component/220-10",[]],["title/220-11",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/220-11",[]],["text/220-11",[]],["component/220-11",[]],["title/220-12",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/220-12",[]],["text/220-12",[]],["component/220-12",[]],["title/220-13",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/220-13",[]],["text/220-13",[]],["component/220-13",[]],["title/220-14",[134,23.806,466,37.709,2627,51.038]],["name/220-14",[]],["text/220-14",[]],["component/220-14",[]],["title/220-15",[26,26.774,1772,48.309,2628,57.467]],["name/220-15",[]],["text/220-15",[]],["component/220-15",[]],["title/220-16",[859,40.238,1279,40.238,2629,57.467]],["name/220-16",[]],["text/220-16",[]],["component/220-16",[]],["title/220-17",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/220-17",[]],["text/220-17",[]],["component/220-17",[]],["title/220-18",[63,48.407,1513,54.244]],["name/220-18",[]],["text/220-18",[]],["component/220-18",[]],["title/220-19",[54,42.087,2631,66.798]],["name/220-19",[]],["text/220-19",[]],["component/220-19",[]],["title/220-20",[32,31.045,2309,53.672]],["name/220-20",[]],["text/220-20",[]],["component/220-20",[]],["title/220-21",[32,26.708,745,32.486,2309,46.175]],["name/220-21",[]],["text/220-21",[]],["component/220-21",[]],["title/220-22",[183,26.577,593,31.469,1079,51.038]],["name/220-22",[]],["text/220-22",[]],["component/220-22",[]],["title/220-23",[470,34.116,1846,56.153]],["name/220-23",[]],["text/220-23",[]],["component/220-23",[]],["title/220-24",[32,37.063]],["name/220-24",[]],["text/220-24",[]],["component/220-24",[]],["title/220-25",[36,25.454,88,17.646,129,26.976,470,25.753]],["name/220-25",[]],["text/220-25",[]],["component/220-25",[]],["title/220-26",[581,57.629,2610,65.163]],["name/220-26",[]],["text/220-26",[]],["component/220-26",[]],["title/220-27",[2632,88.192]],["name/220-27",[]],["text/220-27",[]],["component/220-27",[]],["title/220-28",[36,25.454,338,42.927,470,25.753,1846,42.387]],["name/220-28",[]],["text/220-28",[]],["component/220-28",[]],["title/220-29",[88,20.111,155,23.905,1040,38.337]],["name/220-29",[]],["text/220-29",[]],["component/220-29",[]],["title/220-30",[1255,32.348,1457,33.624]],["name/220-30",[]],["text/220-30",[]],["component/220-30",[]],["title/220",[679,30.741,1136,48.407]],["name/220",[679,0.547,1136,0.862]],["text/220",[0,0.954,2,0.173,3,0.671,4,0.634,5,0.574,6,0.284,7,0.214,8,0.768,10,0.744,13,0.098,15,0.155,17,0.86,18,0.507,19,0.18,23,0.626,24,1.579,26,2.292,29,1.14,30,0.811,31,0.318,32,2.811,34,0.599,35,0.16,36,0.379,38,0.165,40,0.288,45,0.135,52,0.401,54,1.5,57,0.631,65,0.198,68,0.344,71,0.854,79,0.842,84,1.398,86,0.3,88,1.532,91,0.335,92,1.123,93,0.169,94,0.509,96,0.141,98,0.19,101,1.218,102,0.163,105,0.125,110,0.137,111,0.163,112,0.853,113,0.696,115,0.492,117,1.765,118,1.617,120,0.176,121,0.166,122,0.198,125,1.528,127,0.548,129,2.011,133,1.261,134,2.68,135,0.243,136,0.709,138,0.134,139,0.752,141,3.053,143,2.66,144,0.484,146,0.31,147,0.19,148,0.623,153,0.222,154,0.555,155,1.618,158,0.157,160,0.744,161,1.206,163,0.565,165,0.196,166,1.385,167,0.243,168,0.153,169,0.644,170,0.519,171,0.771,172,0.797,178,0.155,180,1.393,183,0.843,186,0.31,188,0.506,190,0.179,191,1.876,192,0.152,195,0.529,196,1.543,199,0.509,200,0.384,201,0.41,205,0.231,206,0.211,214,1.119,215,1.465,221,0.199,224,0.559,228,0.152,231,0.205,238,0.623,239,0.407,240,0.216,242,0.216,243,0.181,246,0.716,247,0.353,248,2.088,249,1.214,250,0.597,251,0.421,252,0.39,253,0.196,255,0.498,262,0.173,263,1.506,264,1.355,265,0.391,267,0.171,268,0.364,271,0.878,272,0.165,275,0.688,277,1.544,278,0.178,279,0.742,280,0.626,282,0.346,283,0.176,286,0.337,287,0.211,288,0.468,289,0.225,292,0.748,293,0.185,296,0.953,297,0.477,301,1.822,308,0.667,311,0.731,313,0.525,316,0.785,319,1.379,328,0.225,330,0.194,333,0.506,335,0.941,340,0.832,345,0.468,347,0.453,348,0.194,350,0.164,351,1.036,354,0.512,355,0.378,357,0.333,360,1.012,361,1.92,374,0.216,375,0.193,377,1.214,378,0.402,379,0.239,386,0.77,393,0.277,394,0.19,395,0.37,397,0.228,401,1.42,402,0.365,406,1.553,412,0.398,413,0.248,421,0.162,428,0.689,429,0.201,430,0.205,431,0.175,432,0.666,440,0.19,441,1.411,443,0.738,446,0.15,451,0.436,452,0.207,455,2.568,460,0.368,461,0.239,464,0.364,465,0.789,466,0.492,468,0.142,470,3.493,480,0.487,482,0.18,502,1.033,505,0.544,508,0.174,509,0.536,513,0.239,514,0.745,516,0.248,517,0.342,523,0.968,525,0.134,528,0.169,531,0.549,542,0.268,547,1,549,0.434,553,0.18,557,0.174,577,0.344,580,1.21,581,0.647,583,0.329,586,0.344,590,0.228,591,0.936,593,0.776,596,0.37,597,0.634,603,0.181,604,0.164,608,0.154,615,0.166,617,0.477,619,1.397,620,0.658,630,1.13,636,0.248,637,0.46,640,0.239,641,0.487,649,0.231,660,0.26,662,0.243,665,0.446,668,0.716,670,2.952,673,1.544,674,0.384,675,0.387,679,2.64,682,0.85,683,0.159,684,1.674,686,0.989,694,0.35,696,0.46,697,1.09,698,0.31,708,0.315,711,0.183,712,1.177,716,0.689,719,0.631,723,0.226,732,0.378,734,0.209,745,0.68,752,0.297,754,0.373,760,0.203,768,0.219,772,0.519,774,0.199,779,0.36,786,1.565,788,0.506,790,1.028,827,0.162,834,0.205,841,0.716,850,0.209,853,0.239,859,0.182,861,0.335,865,1.343,889,0.515,893,0.381,894,0.196,900,1.352,903,0.168,910,0.522,913,0.235,929,0.219,930,0.214,932,0.198,937,0.196,938,0.44,943,1.234,963,0.584,964,3.931,966,0.739,967,0.532,968,0.458,972,0.71,982,0.57,983,0.216,984,0.364,985,0.692,990,0.231,991,0.235,993,0.331,998,0.797,1005,0.202,1008,0.618,1017,0.939,1019,0.886,1022,1.053,1033,3.662,1040,0.803,1045,0.248,1053,0.58,1066,1.792,1074,0.235,1076,0.276,1077,0.231,1079,0.453,1082,0.235,1091,0.171,1097,1.573,1101,1.674,1108,0.41,1109,0.406,1110,0.752,1112,0.228,1125,0.194,1126,0.207,1128,0.168,1129,0.148,1130,0.529,1135,0.235,1136,3.491,1155,0.216,1169,0.41,1211,0.194,1213,0.205,1219,0.391,1255,0.247,1282,2.524,1284,0.231,1285,0.219,1287,0.191,1294,0.248,1295,0.225,1308,0.222,1310,0.225,1311,0.268,1321,0.248,1348,1.302,1356,0.254,1398,0.254,1399,1.624,1403,0.205,1416,0.182,1451,0.886,1457,0.257,1463,0.487,1477,0.477,1483,0.744,1499,0.209,1508,0.429,1513,0.797,1520,0.194,1554,0.477,1556,0.185,1609,0.181,1612,0.174,1620,0.394,1625,0.216,1640,0.205,1643,0.656,1647,0.391,1650,0.214,1681,0.26,1682,0.228,1727,0.207,1759,0.167,1772,0.825,1779,0.216,1784,0.243,1786,0.175,1846,3.27,1852,0.402,1942,0.696,1945,0.193,1950,0.414,1963,1.55,1992,0.477,1995,0.239,2003,0.243,2009,0.254,2016,0.398,2018,0.597,2042,0.752,2054,0.962,2056,0.203,2076,0.201,2092,0.235,2109,0.225,2116,0.46,2118,0.243,2132,0.248,2148,0.26,2225,0.254,2238,1.043,2240,0.225,2256,0.918,2257,0.254,2260,0.26,2292,0.235,2294,0.26,2300,0.254,2306,0.219,2307,0.268,2309,2.444,2310,0.44,2336,0.446,2363,0.26,2370,0.248,2371,0.26,2379,0.477,2407,0.477,2417,0.228,2418,0.235,2419,0.222,2447,0.26,2448,0.647,2484,0.26,2495,0.248,2501,0.26,2502,0.26,2503,0.243,2507,0.26,2528,0.26,2552,0.243,2572,0.525,2580,0.26,2586,0.44,2587,0.239,2589,0.26,2595,0.26,2598,0.26,2610,0.498,2619,0.575,2625,1.334,2626,0.835,2627,0.231,2628,0.75,2630,0.453,2631,0.75,2633,0.51,2634,0.235,2635,1.624,2636,2.041,2637,2.201,2638,0.981,2639,0.75,2641,0.26,2642,0.179,2643,0.26,2644,0.26,2645,0.981,2646,0.453,2647,0.248,2648,0.26,2649,0.26,2650,0.26,2651,0.26,2652,0.51,2653,0.26,2654,0.51,2655,0.26,2656,0.26,2657,0.26,2658,0.239,2659,0.288,2660,0.288,2661,0.564,2662,0.268,2663,0.487,2664,0.26,2665,0.26,2666,0.26,2667,0.26,2668,4.969,2669,0.288,2670,0.288,2671,0.288,2672,0.564,2673,1.421,2674,0.564,2675,0.288,2676,0.288,2677,0.288,2678,0.288,2679,0.542,2680,0.288,2681,0.288,2682,0.268,2683,1.085,2684,0.254,2685,0.254,2686,0.288,2687,0.26,2688,0.83,2689,0.83,2690,0.288,2691,0.288,2692,2.017,2693,0.564,2694,0.772,2695,0.288,2696,0.288,2697,0.564,2698,0.564,2699,0.564,2700,0.564,2701,0.288,2702,0.288,2703,0.288,2704,0.288,2705,0.288,2706,0.564,2707,0.288,2708,0.288,2709,0.288,2710,0.288,2713,0.525,2714,0.288,2715,0.288,2716,0.26,2717,0.288,2718,0.288,2719,0.288,2720,0.288,2721,0.288,2722,0.83,2723,1.085,2724,0.83,2725,1.796,2726,0.564,2727,0.564,2728,0.288,2729,0.83,2730,0.83,2731,1.085,2732,0.288,2733,0.83,2734,0.26,2735,0.288,2736,0.243,2737,0.288,2738,0.288,2739,0.26,2740,0.288,2741,0.288,2742,0.288,2743,0.288,2744,0.288,2745,0.288,2746,0.288,2747,0.288,2748,0.564,2749,0.288,2750,0.564,2751,0.288,2752,0.288,2753,0.288,2754,0.288,2755,0.288,2756,0.268,3238,0.277,3257,0.239,3258,0.51,3413,0.248,3414,0.303,3415,0.594,3416,0.231,3417,0.288,3418,0.303,3419,0.303,3420,0.303,3421,0.303,3422,0.303,3423,0.303,3424,0.303,3425,0.873,3426,0.303,3427,0.873,3428,0.303,3429,0.873,3430,0.303]],["component/220",[7,0.401]],["title/221-1",[236,39.251]],["name/221-1",[]],["text/221-1",[]],["component/221-1",[]],["title/221-2",[96,36.21,679,30.741]],["name/221-2",[]],["text/221-2",[]],["component/221-2",[]],["title/221-3",[679,30.741,949,47.08]],["name/221-3",[]],["text/221-3",[]],["component/221-3",[]],["title/221-4",[980,68.801]],["name/221-4",[]],["text/221-4",[]],["component/221-4",[]],["title/221-5",[36,33.721,1005,26.424]],["name/221-5",[]],["text/221-5",[]],["component/221-5",[]],["title/221-6",[754,39.689]],["name/221-6",[]],["text/221-6",[]],["component/221-6",[]],["title/221-7",[2757,79.747]],["name/221-7",[]],["text/221-7",[]],["component/221-7",[]],["title/221-8",[2758,79.747]],["name/221-8",[]],["text/221-8",[]],["component/221-8",[]],["title/221-9",[2759,79.747]],["name/221-9",[]],["text/221-9",[]],["component/221-9",[]],["title/221-10",[2760,79.747]],["name/221-10",[]],["text/221-10",[]],["component/221-10",[]],["title/221-11",[2761,88.192]],["name/221-11",[]],["text/221-11",[]],["component/221-11",[]],["title/221",[402,17.184,679,30.741]],["name/221",[402,0.306,679,0.547]],["text/221",[5,3.213,8,2.229,13,0.28,14,0.356,17,3.002,19,0.513,23,0.386,24,1.234,26,2.275,29,0.626,31,0.463,34,0.369,36,1.947,45,0.383,52,0.397,68,0.5,71,0.845,76,0.519,79,1.034,84,2.849,86,0.824,88,1.209,96,3.217,99,3.175,101,4.083,105,0.356,111,1.251,115,0.487,117,1.187,118,0.532,120,1.346,127,0.541,129,0.397,134,0.826,136,0.897,139,2.135,142,0.856,143,0.875,144,0.985,146,0.852,148,0.285,154,0.793,155,1.253,161,0.329,163,0.427,166,0.963,168,0.437,171,1.085,172,0.364,178,0.441,186,0.852,190,0.963,192,2.021,196,0.358,199,0.503,214,0.325,224,0.422,228,0.432,241,1.287,245,1.105,248,2.222,249,0.447,251,0.787,252,1.567,263,1.399,264,1.172,266,0.631,275,0.802,277,3.367,280,0.386,282,0.503,283,0.5,292,0.461,296,0.663,301,1.184,319,0.953,331,2.08,341,0.93,351,0.381,357,1.302,375,2.859,377,1.201,394,0.541,395,0.537,401,0.732,402,0.992,406,1.491,408,0.449,415,0.568,421,0.875,424,0.602,442,0.602,445,1.807,451,0.431,465,1.228,508,2.01,509,1.807,514,2.598,521,0.559,525,0.381,531,0.415,547,0.368,549,0.811,552,0.346,553,0.513,570,0.952,580,1.323,583,0.479,586,0.5,593,1.891,597,0.479,608,0.831,615,0.472,617,2.689,630,0.516,668,0.834,670,0.454,673,0.796,679,1.775,683,0.452,684,1.158,686,2.052,687,0.579,697,0.941,698,0.45,711,0.523,723,0.62,733,1.084,736,0.969,742,0.59,743,0.482,754,1.259,768,0.623,786,2.799,790,2.187,827,0.461,830,0.523,841,1.846,865,0.856,924,0.649,925,0.649,926,0.669,927,0.64,928,0.669,929,0.623,932,1.515,934,1.8,936,0.649,943,0.563,949,2.979,961,1.139,963,0.441,967,0.995,976,1.246,981,0.669,984,0.53,989,0.708,990,0.659,991,0.669,993,0.482,994,0.708,995,0.708,996,0.708,997,0.708,998,0.602,999,0.708,1000,0.708,1001,0.64,1002,0.708,1003,0.708,1004,0.579,1005,1.807,1006,4.658,1007,0.708,1008,2.43,1009,0.708,1010,0.584,1011,0.64,1012,0.631,1013,0.64,1014,1.338,1015,1.745,1017,0.579,1018,0.708,1019,0.669,1033,0.59,1040,0.495,1053,0.573,1056,0.669,1061,0.708,1062,0.59,1063,1.338,1064,0.609,1066,1.239,1088,1.338,1099,0.64,1106,1.807,1107,1.55,1114,0.659,1195,0.506,1285,1.179,1479,0.708,1533,1.165,1852,0.584,1961,0.694,1962,1.266,1964,1.338,1965,1.338,1981,0.723,1982,0.723,1983,0.723,1984,0.723,1986,0.723,1987,1.946,1988,0.723,1989,1.946,1990,0.723,1991,1.946,1992,0.694,1993,1.946,1994,0.723,1995,1.831,1996,0.659,1999,0.723,2051,0.568,2056,0.579,2068,0.742,2177,0.421,2194,2.101,2234,1.227,2240,1.21,2310,1.21,2372,0.631,2387,0.631,2406,3.607,2415,0.694,2422,0.516,2423,0.669,2431,0.694,2432,1.311,2455,0.659,2464,1.402,2465,1.402,2468,0.681,2488,1.402,2489,0.742,2511,1.995,2514,0.742,2574,1.402,2586,0.64,2633,2.529,2757,0.742,2758,1.402,2762,1.551,2763,0.82,2764,1.551,2765,0.82,2766,0.82,2767,0.82,2768,0.82,2769,0.82,2770,0.82,2771,0.82,2772,0.82,2773,0.82,2774,0.82,2775,0.82,2776,0.82,2777,0.82,2778,0.82,2780,1.551,2781,1.551,2782,0.82,2783,0.82,2784,0.82,2785,1.368,2786,1.551,2787,0.82,2788,0.763,2789,0.82,2790,0.82,2791,0.82,2792,0.82,2793,0.82,2794,0.82,2795,0.82,2796,0.82,2797,0.82,2798,0.82,2799,0.82,2800,0.82,2801,0.82,2802,0.82,2803,1.442,2804,0.742,2805,0.82,3132,0.742,3265,0.788,3266,0.788,3370,0.708,3431,0.863,3432,1.632,3433,0.863,3434,1.632,3435,0.863,3436,0.863]],["component/221",[7,0.401]],["title/222-1",[29,25.643,42,29.179,502,29.437]],["name/222-1",[]],["text/222-1",[]],["component/222-1",[]],["title/222-2",[155,27.786,308,31.436]],["name/222-2",[]],["text/222-2",[]],["component/222-2",[]],["title/222-3",[183,30.892,1128,43.146]],["name/222-3",[]],["text/222-3",[]],["component/222-3",[]],["title/222-4",[183,30.892,1129,38.042]],["name/222-4",[]],["text/222-4",[]],["component/222-4",[]],["title/222-5",[356,40.753,835,41.118]],["name/222-5",[]],["text/222-5",[]],["component/222-5",[]],["title/222-6",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/222-6",[]],["text/222-6",[]],["component/222-6",[]],["title/222-7",[227,33.834,525,23.078,861,29.474,1130,31.658,1131,32.55]],["name/222-7",[]],["text/222-7",[]],["component/222-7",[]],["title/222-8",[349,34.906,1735,35.536,2806,57.467]],["name/222-8",[]],["text/222-8",[]],["component/222-8",[]],["title/222-9",[351,34.319,1967,55.481]],["name/222-9",[]],["text/222-9",[]],["component/222-9",[]],["title/222-10",[96,36.21,2807,73.872]],["name/222-10",[]],["text/222-10",[]],["component/222-10",[]],["title/222-11",[293,47.398,1004,52.112]],["name/222-11",[]],["text/222-11",[]],["component/222-11",[]],["title/222",[13,15.31,14,19.455,84,12.931,98,29.562,502,20.744,1132,21.525]],["name/222",[1132,1.129]],["text/222",[0,0.577,3,0.465,5,0.677,6,1.017,7,0.146,8,1.597,10,0.45,11,1.198,12,0.584,13,2.471,14,2.049,17,1.508,18,0.734,19,0.353,29,1.288,30,0.255,31,0.319,32,0.848,34,0.706,35,0.874,37,0.347,38,0.323,40,0.7,42,1.298,45,0.508,46,0.798,48,1.819,52,1.544,54,1.15,56,1.405,57,0.328,60,1.286,77,0.332,79,0.509,84,3.259,88,1.317,91,1.198,92,0.353,93,0.332,96,0.277,98,0.373,99,0.285,101,0.544,104,0.291,105,0.877,110,0.27,112,0.516,117,1.887,118,2.618,120,1.725,125,0.752,127,0.373,128,1.438,130,0.351,134,0.212,136,0.292,138,0.262,139,0.753,146,0.862,147,0.373,148,0.7,151,0.395,154,0.555,155,0.759,161,0.629,163,0.818,164,0.987,166,0.351,168,0.301,171,0.278,172,1.081,179,0.398,180,0.353,183,1.613,185,0.766,186,1.338,188,0.345,189,0.33,192,0.299,194,0.376,196,0.247,202,0.441,203,0.347,206,0.415,211,1.077,214,0.965,220,0.41,224,1.039,225,0.424,227,0.74,228,1.064,236,0.251,239,0.277,240,0.816,247,0.353,251,0.287,252,0.949,262,0.339,264,1.122,265,0.753,267,0.645,268,0.365,271,0.276,275,0.562,277,0.29,279,0.514,280,0.511,282,0.347,283,0.663,285,0.441,293,1.295,296,2.127,300,1.398,301,0.239,308,1.037,311,0.31,315,0.74,316,0.283,319,0.469,324,0.419,325,1.021,327,0.454,330,1.06,331,0.855,333,0.345,338,0.836,346,0.435,349,2.442,350,0.322,351,1.313,354,0.349,356,1.761,360,0.429,361,0.52,386,0.628,402,0.822,406,0.852,412,0.398,421,0.319,438,0.415,439,0.333,445,0.365,446,0.295,450,0.388,457,0.415,459,1.007,464,0.365,465,0.248,468,0.777,474,0.402,478,0.441,482,0.353,502,1.129,508,0.947,514,0.9,517,0.343,518,0.402,521,0.385,523,0.349,525,0.938,528,1.431,531,0.794,532,0.766,539,0.435,541,0.454,547,0.704,548,0.382,549,0.568,552,0.239,556,0.353,558,0.402,570,0.667,577,0.663,580,1.696,593,0.28,596,1.029,597,0.635,602,0.429,608,0.302,618,0.419,647,0.358,666,0.675,668,0.844,670,0.602,673,1.25,677,0.362,682,0.306,689,0.766,698,0.31,706,2.51,711,1.286,728,1.402,729,1.313,730,1.179,735,1.364,736,2.411,742,0.406,743,1.185,745,0.555,758,0.435,773,0.379,786,1.119,790,0.323,827,1.986,833,0.435,835,0.874,846,3.707,861,2.95,868,0.511,890,1.014,910,0.355,963,0.584,967,0.362,972,0.579,993,0.332,1004,0.398,1010,0.402,1021,0.487,1022,0.447,1024,0.447,1040,0.655,1048,0.454,1066,0.882,1083,1.193,1087,0.419,1097,0.398,1102,0.498,1128,1.179,1129,0.808,1130,1.286,1131,1.323,1133,1.633,1134,0.429,1135,0.461,1136,0.37,1137,0.424,1138,0.781,1139,1.078,1140,0.525,1141,0.826,1142,0.86,1143,0.86,1144,0.435,1145,0.347,1146,0.461,1147,0.525,1148,0.525,1149,1.01,1150,3.467,1151,0.807,1152,1.01,1153,0.937,1154,0.435,1155,0.424,1156,0.525,1157,0.461,1158,0.419,1159,0.525,1160,1.01,1161,0.525,1162,0.902,1163,0.525,1164,0.902,1165,1.46,1166,0.461,1167,0.525,1168,0.435,1169,0.41,1170,1.01,1171,0.525,1172,1.208,1173,0.525,1174,0.385,1175,0.525,1176,0.525,1177,0.525,1178,0.525,1179,0.525,1180,1.01,1181,0.525,1182,0.525,1183,1.01,1184,1.01,1185,1.01,1186,0.525,1187,0.807,1188,1.01,1189,0.525,1190,0.525,1191,0.525,1192,0.525,1193,0.525,1194,0.525,1195,0.349,1196,0.469,1197,1.303,1198,0.525,1199,0.525,1200,0.461,1201,1.452,1202,0.525,1203,1.01,1204,0.487,1205,1.01,1206,0.525,1207,0.525,1208,0.525,1209,0.525,1210,0.498,1211,0.382,1212,0.525,1214,0.759,1219,0.391,1277,0.424,1294,0.487,1295,0.441,1296,0.487,1300,0.461,1347,1.01,1349,1.46,1356,1.781,1361,6.334,1362,2.969,1379,1.877,1382,0.525,1400,0.313,1483,0.268,1520,0.382,1556,0.362,1558,0.333,1647,0.391,1682,0.86,1733,1.242,1735,1.977,1964,0.487,1967,1.83,1996,0.454,2003,0.478,2029,0.982,2037,0.982,2055,0.454,2060,0.385,2072,0.454,2076,0.395,2134,0.478,2135,0.454,2173,2.102,2336,0.447,2342,0.478,2478,1.354,2558,1.825,2806,3.197,2808,0.487,2809,1.57,2810,0.565,2811,0.565,2812,0.565,2813,0.565,2814,0.565,2815,1.086,2816,0.565,2817,0.498,2818,0.565,2819,0.565,2820,0.565,2821,0.565,2822,1.086,2823,0.565,2824,0.565,2825,0.565,2826,0.565,2827,1.57,2828,1.57,2829,0.565,2830,1.086,2831,0.565,2832,1.086,2833,0.565,2834,1.086,2835,0.565,2836,2.827,2837,0.525,2838,3.193,2839,0.565,2840,1.086,2841,1.086,2842,1.086,2843,1.086,2844,1.01,2845,1.086,2846,0.565,2847,0.498,2848,0.565,2849,0.565,2850,0.982,2851,0.525,2852,0.565,2853,0.565,2854,1.57,2855,0.565,2856,0.565,2857,1.57,2858,0.565,2859,0.565,2860,0.565,2861,0.565,2862,0.565,2863,0.565,2864,0.565,2865,0.565,2866,0.565,2867,0.565,2868,0.565,2869,0.565,2870,0.565,2871,0.565,2872,0.525,2873,0.565,2874,0.525,2875,1.086,2876,1.086,2877,1.086,2878,0.565,2879,0.565,2880,0.565,2881,0.565,2882,0.565,2883,1.086,2884,0.565,2885,1.57,2886,0.565,2887,0.565,2888,0.565,2889,0.565,2890,0.498,2891,0.565,2892,0.565,2893,0.565,2894,0.565]],["component/222",[7,0.401]],["title/223-1",[402,20.515]],["name/223-1",[]],["text/223-1",[]],["component/223-1",[]],["title/223-2",[116,50.007]],["name/223-2",[]],["text/223-2",[]],["component/223-2",[]],["title/223-3",[52,35.736,116,41.887]],["name/223-3",[]],["text/223-3",[]],["component/223-3",[]],["title/223-4",[118,25.347,2619,51.178]],["name/223-4",[]],["text/223-4",[]],["component/223-4",[]],["title/223-5",[134,27.671,2619,51.178]],["name/223-5",[]],["text/223-5",[]],["component/223-5",[]],["title/223-6",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/223-6",[]],["text/223-6",[]],["component/223-6",[]],["title/223-7",[33,23.693,36,20.443,111,25.393,116,25.393,118,15.366,421,25.274]],["name/223-7",[]],["text/223-7",[]],["component/223-7",[]],["title/223-8",[36,18.611,88,12.902,116,23.118,118,13.989,143,23.009,361,19.534,854,27.77]],["name/223-8",[]],["text/223-8",[]],["component/223-8",[]],["title/223-9",[33,23.693,111,25.393,118,23.373,361,21.457,421,25.274]],["name/223-9",[]],["text/223-9",[]],["component/223-9",[]],["title/223-10",[33,14.895,36,12.852,111,15.964,116,15.964,118,9.66,143,15.889,186,15.464,421,15.889,854,19.177,861,16.706,985,17.944,1153,24.29]],["name/223-10",[]],["text/223-10",[]],["component/223-10",[]],["title/223-11",[54,18.307,110,15.346,118,17.986,120,19.606,171,15.803,214,12.73,361,15.395,487,14.667,680,16.866]],["name/223-11",[]],["text/223-11",[]],["component/223-11",[]],["title/223-12",[245,52.609,528,43.37]],["name/223-12",[]],["text/223-12",[]],["component/223-12",[]],["title/223-13",[88,23.377,356,40.753]],["name/223-13",[]],["text/223-13",[]],["component/223-13",[]],["title/223-14",[48,36.208,88,20.111,356,35.06]],["name/223-14",[]],["text/223-14",[]],["component/223-14",[]],["title/223-15",[88,20.111,356,35.06,1172,48.923]],["name/223-15",[]],["text/223-15",[]],["component/223-15",[]],["title/223-16",[56,31.577,356,35.06,711,40.503]],["name/223-16",[]],["text/223-16",[]],["component/223-16",[]],["title/223-17",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/223-17",[]],["text/223-17",[]],["component/223-17",[]],["title/223-18",[88,27.909]],["name/223-18",[]],["text/223-18",[]],["component/223-18",[]],["title/223-19",[1276,68.801]],["name/223-19",[]],["text/223-19",[]],["component/223-19",[]],["title/223",[13,19.063,14,24.225,88,17.646,158,30.495]],["name/223",[88,0.743]],["text/223",[0,0.755,2,0.231,3,0.32,4,0.225,5,0.166,7,0.282,8,1.117,10,0.718,11,0.228,12,0.207,13,1.844,14,1.901,15,0.588,17,2.235,18,0.511,19,0.24,23,0.514,24,0.612,30,0.173,31,0.422,32,0.46,33,2.599,34,1.792,36,0.342,40,0.38,42,0.344,45,0.18,46,1.044,48,1.896,49,0.795,52,1.496,54,2.985,56,1.285,57,1.181,58,0.477,60,1.648,63,0.49,65,2.735,71,0.596,77,0.439,80,0.274,84,2.053,88,2.369,91,1.206,92,0.684,93,1.518,94,0.873,95,0.953,96,0.85,97,0.969,100,1.203,101,2.846,102,0.424,103,0.576,105,2.276,106,0.49,107,1.447,110,1.802,111,3.598,112,0.964,113,3.199,115,0.844,116,5.071,117,0.736,118,3.011,120,4.821,121,2.53,123,0.533,125,0.524,128,0.227,129,0.362,130,0.465,134,1.639,136,0.294,143,2.957,144,0.334,145,0.258,146,0.211,147,0.494,148,0.26,151,0.269,152,0.276,153,0.296,155,0.871,160,0.215,161,0.438,162,0.55,163,0.741,164,0.471,166,0.884,168,0.399,169,0.228,170,0.684,171,1.139,172,0.77,186,1.272,188,0.235,191,0.153,192,0.396,194,0.498,196,1.739,199,0.236,202,0.584,204,0.325,211,0.399,214,0.917,215,0.544,221,0.519,224,0.385,227,0.262,234,0.437,238,0.289,243,0.242,245,0.274,248,1.965,249,0.408,252,0.669,253,0.262,254,0.269,255,0.449,262,0.231,263,0.192,264,0.714,271,0.188,272,0.429,275,0.199,277,1.327,280,0.352,283,0.235,285,0.3,292,0.216,293,0.48,296,1.217,301,1.204,304,0.285,308,0.605,313,2.648,315,0.262,316,2.541,319,0.323,322,0.279,325,1.128,330,0.26,335,0.656,338,0.842,340,0.684,341,1.04,344,0.319,348,0.26,350,1.158,351,1.076,352,0.285,356,2.891,360,0.292,361,1.595,377,0.209,379,0.319,384,0.332,386,0.222,388,0.236,389,0.696,394,0.254,397,0.304,401,0.353,402,0.926,403,0.285,406,0.382,408,0.21,421,1.745,429,0.269,438,1.274,439,0.442,440,0.254,441,0.9,443,0.415,446,0.391,455,0.199,470,0.178,480,0.646,482,0.24,487,0.792,502,0.178,505,2.33,506,0.289,508,0.452,509,0.919,519,1.013,523,0.237,525,1.201,526,0.319,528,0.226,531,1.171,547,0.172,549,0.744,552,0.316,553,0.684,558,0.274,570,0.459,575,0.276,577,0.457,580,0.231,602,0.292,604,0.426,613,0.292,617,0.221,619,0.266,620,0.454,664,0.314,666,0.239,668,0.207,670,0.415,677,0.247,679,0.16,680,0.91,686,0.304,697,0.233,698,0.211,706,0.25,708,0.215,711,1.476,712,0.932,728,0.629,729,0.925,732,0.953,765,0.544,766,0.51,767,0.279,768,0.569,772,0.24,773,0.502,784,0.332,827,0.216,835,0.965,841,0.494,854,2.57,861,2.11,865,0.413,869,0.576,889,0.465,890,0.707,900,0.733,910,0.471,937,0.969,949,0.245,961,0.55,963,0.207,966,0.262,968,0.785,972,1.517,980,0.3,985,0.477,993,0.642,1013,0.3,1031,0.285,1040,0.232,1047,0.314,1049,0.319,1062,1.023,1075,0.228,1076,0.695,1083,1.081,1089,0.282,1092,0.256,1129,0.198,1130,0.245,1131,1.331,1133,0.953,1139,0.751,1144,0.296,1154,0.842,1155,0.562,1162,0.319,1164,0.621,1172,3.649,1197,0.621,1213,1.447,1214,1.212,1216,0.358,1217,0.358,1218,0.358,1219,0.985,1220,1.018,1221,0.944,1222,0.358,1223,0.358,1224,0.696,1225,0.696,1226,0.358,1227,0.358,1228,0.358,1229,0.358,1230,0.358,1231,0.358,1232,0.358,1233,0.358,1234,0.358,1235,0.358,1236,0.358,1237,0.358,1238,1.018,1239,0.358,1240,0.696,1241,1.018,1242,0.358,1243,0.358,1244,0.358,1245,0.358,1246,0.584,1247,0.696,1248,1.323,1249,0.611,1250,0.562,1251,0.696,1252,0.332,1253,0.25,1254,0.358,1255,0.168,1256,0.908,1257,0.358,1258,0.66,1261,0.358,1262,0.358,1265,0.358,1266,0.358,1267,0.358,1268,0.358,1269,0.358,1270,0.358,1271,0.358,1272,0.358,1273,0.358,1274,0.358,1275,0.358,1276,0.3,1277,1.303,1278,0.358,1295,0.3,1296,0.332,1297,0.358,1298,0.358,1299,0.358,1300,0.893,1301,0.319,1302,0.358,1303,0.319,1307,0.369,1308,0.296,1319,0.358,1320,0.696,1321,0.332,1322,0.358,1323,0.358,1324,0.358,1325,1.613,1326,0.358,1327,0.696,1328,0.358,1329,0.358,1331,0.358,1332,0.358,1333,0.358,1334,0.696,1335,0.358,1336,0.696,1337,0.358,1338,0.358,1339,0.696,1340,0.696,1341,0.358,1342,0.358,1343,0.332,1344,0.358,1345,0.358,1346,0.358,1383,0.358,1384,0.358,1385,0.358,1386,0.358,1387,0.358,1388,0.66,1389,0.319,1390,0.242,1391,0.339,1392,0.358,1393,0.358,1397,0.358,1416,0.474,1456,0.174,1483,0.519,1484,0.292,1498,0.269,1513,0.55,1641,0.925,1661,0.296,1733,1.607,1768,0.696,1770,1.227,1779,0.289,1849,0.309,1938,0.696,2042,0.519,2051,0.266,2054,0.236,2076,0.523,2083,0.309,2127,0.646,2166,0.696,2240,0.3,2444,0.348,2448,0.3,2518,0.348,2562,0.314,2619,1.791,2673,0.304,2895,0.384,2896,1.734,2897,0.348,2898,0.384,2899,0.384,2900,0.749,2901,0.384,2902,0.384,2903,0.384,2904,1.094,2905,0.384,2906,0.384,2907,0.384,2908,0.384,2909,0.384,2910,0.384,2911,0.384,2912,0.384,2913,0.384,2915,0.384,2916,1.734,2917,0.384,2918,0.384,2919,0.384,2921,1.094,2922,0.384,2923,0.384,2924,0.384,2925,0.384,2926,0.358,2927,0.384,2928,0.384,2929,0.749,2930,0.384,2931,0.749,2932,1.094,2933,0.384,2934,0.893,2935,1.094,2936,0.384,2937,0.384,2938,0.749,2939,0.384,2940,1.422,2941,0.384,2942,0.384,2943,0.384,2944,0.384,2945,0.369,2946,0.384,2947,0.384,2948,0.384,2949,0.384,2950,0.384,2951,0.384,2952,0.384,2953,0.384,2954,0.384,2955,0.384,2956,0.749,2957,0.384,2958,0.384,2959,0.749,2960,0.384,2961,0.384,2962,0.384,2963,0.384,2964,0.384,2965,0.384,2966,0.384,2967,0.384,2968,0.384,2969,0.384,2970,0.384,2971,0.749,2972,0.749,3370,2.667,3396,0.369,3400,0.989,3437,2.992,3438,0.404,3439,0.404,3440,1.825,3441,0.787,3442,0.787,3443,1.151,3444,0.404,3445,0.404,3446,0.404,3447,0.404]],["component/223",[7,0.401]],["title/224-1",[117,26.976,118,21.806,296,27.183]],["name/224-1",[]],["text/224-1",[]],["component/224-1",[]],["title/224-2",[8,10.407,26,17.177,117,17.306,118,13.989,168,21.743,296,17.438,402,9.484]],["name/224-2",[]],["text/224-2",[]],["component/224-2",[]],["title/224-3",[1276,68.801]],["name/224-3",[]],["text/224-3",[]],["component/224-3",[]],["title/224",[13,25.254,105,32.092]],["name/224",[631,1.45]],["text/224",[7,0.622,8,0.616,13,2.456,14,1.048,20,1.408,24,2.306,26,2.694,29,0.973,30,1.088,34,1.085,45,1.127,52,3.093,54,2.349,60,2.628,71,1.313,84,2.547,88,1.305,102,1.367,105,2.347,112,1.957,113,1.07,116,2.338,117,3.552,118,3.957,125,1.155,126,3.062,129,1.167,134,2.395,136,2.252,138,1.12,139,1.538,148,1.431,150,1.053,155,1.551,161,1.652,171,1.186,179,1.701,181,1.811,183,1.008,196,1.053,199,1.48,214,2.846,226,1.592,239,2.021,264,2.526,275,1.246,292,1.355,296,4.209,301,2.707,308,3.057,313,1.527,320,1.439,324,1.79,341,1.447,357,1.423,391,1.276,395,1.58,402,1.487,438,1.771,443,1.336,451,2.165,453,2.318,455,1.246,458,1.558,460,1.07,465,1.059,487,1.101,503,2.181,514,1.523,519,1.717,547,1.082,552,1.018,557,1.455,570,1.48,617,1.387,661,2.002,665,1.297,667,2.243,670,2.994,671,2.243,672,1.656,673,3.28,676,1.656,677,1.547,678,1.447,679,1.004,680,2.165,683,1.33,684,1.266,723,1.649,743,2.421,746,1.031,865,1.33,963,2.217,966,1.642,972,1.286,1005,0.863,1092,1.604,1125,1.629,1279,1.527,1280,2.039,1281,2.243,1282,1.908,1283,2.243,1284,1.937,1285,1.833,1286,2.002,1287,1.604,1305,1.937,1306,2.002,1477,1.387,1640,1.717,2054,1.48,3193,2.318,3370,3.558]],["component/224",[7,0.401]],["title/225-1",[78,56.976]],["name/225-1",[]],["text/225-1",[]],["component/225-1",[]],["title/225-2",[745,45.082]],["name/225-2",[]],["text/225-2",[]],["component/225-2",[]],["title/225-3",[1255,32.348,1457,33.624]],["name/225-3",[]],["text/225-3",[]],["component/225-3",[]],["title/225",[136,17.103,178,34.172,1005,22.733]],["name/225",[1473,1.613]],["text/225",[8,1.827,65,4.917,88,2.266,118,2.456,129,3.463,136,1.927,139,2.671,178,5.121,183,2.994,228,3.773,263,3.582,264,2.517,301,3.031,388,4.394,468,3.545,487,3.268,514,2.644,686,2.909,723,2.862,756,5.004,827,4.022,1005,3.828,1473,4.917,1585,4.876,2422,4.504,2566,4.762,2974,7.159,2976,7.159,3742,8.098,3743,8.098]],["component/225",[7,0.401]],["title/226-1",[78,56.976]],["name/226-1",[]],["text/226-1",[]],["component/226-1",[]],["title/226-2",[745,45.082]],["name/226-2",[]],["text/226-2",[]],["component/226-2",[]],["title/226-3",[1255,32.348,1457,33.624]],["name/226-3",[]],["text/226-3",[]],["component/226-3",[]],["title/226",[136,17.103,1005,22.733,3450,44.422]],["name/226",[3416,1.056,3450,0.919]],["text/226",[8,2.443,12,2.598,31,2.727,91,4.28,104,2.488,118,1.658,136,2.891,139,1.802,150,2.11,161,1.936,183,2.021,191,1.923,192,2.556,263,2.417,264,1.699,297,2.78,301,2.046,308,2.056,379,4.011,388,2.966,465,2.121,470,2.231,675,3.319,686,1.963,723,1.932,963,2.598,984,3.121,1005,4.259,1400,2.677,1472,2.948,1483,2.293,2063,3.629,2137,3.475,2422,4.537,2566,3.214,3257,4.011,3450,8.448,3451,6.522,3452,5.083,3453,7.588,3454,5.083,3455,5.083,3456,5.083,3457,5.083,3458,5.083,3459,4.168,3460,4.369,3461,4.369]],["component/226",[7,0.401]],["title/227-1",[78,56.976]],["name/227-1",[]],["text/227-1",[]],["component/227-1",[]],["title/227-2",[745,45.082]],["name/227-2",[]],["text/227-2",[]],["component/227-2",[]],["title/227-3",[191,25.292,728,36.562,1483,30.163]],["name/227-3",[]],["text/227-3",[]],["component/227-3",[]],["title/227-4",[10,30.592,228,38.927]],["name/227-4",[]],["text/227-4",[]],["component/227-4",[]],["title/227-5",[1255,32.348,1457,33.624]],["name/227-5",[]],["text/227-5",[]],["component/227-5",[]],["title/227",[136,17.103,538,50.281,1005,22.733]],["name/227",[538,1.858]],["text/227",[6,4.055,8,2.345,10,1.218,15,1.581,29,1.186,32,3.051,34,3.267,45,2.278,84,2.096,88,0.931,94,1.805,101,1.471,118,1.672,136,2.166,139,1.097,172,1.305,183,1.23,186,1.615,190,3.027,191,2.889,196,1.284,220,2.136,263,1.471,264,1.713,271,3.049,283,1.794,301,1.245,317,2.094,351,1.366,352,2.183,388,1.805,402,0.684,443,1.629,468,1.456,487,1.342,492,2.094,514,2.68,538,5.743,580,1.764,686,1.195,717,2.208,723,1.176,728,6.807,773,1.971,827,1.652,907,2.183,932,2.02,1005,2.879,1078,3.148,1106,1.594,1145,2.991,1150,1.629,1151,3.618,1174,5.481,1472,1.794,1483,1.396,1484,2.235,1488,2.441,1640,2.094,1727,2.115,1827,4.804,1945,3.266,2301,3.802,2408,2.537,2422,1.85,2566,1.956,2808,6.943,3462,7.485,3463,6.564,3464,4.873,3465,4.684,3466,2.594,3467,4.873,3468,2.826,3469,2.826,3470,4.873,3471,2.594,3472,2.94,3473,6.241,3474,6.241]],["component/227",[7,0.401]],["title/228-1",[78,56.976]],["name/228-1",[]],["text/228-1",[]],["component/228-1",[]],["title/228-2",[745,45.082]],["name/228-2",[]],["text/228-2",[]],["component/228-2",[]],["title/228-3",[1255,32.348,1457,33.624]],["name/228-3",[]],["text/228-3",[]],["component/228-3",[]],["title/228",[136,15.007,1005,19.947,1769,50.423,3477,38.977]],["name/228",[3478,2.257]],["text/228",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1769,5.173,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3478,7.843,3479,4.936,3480,6.019,3481,4.936]],["component/228",[7,0.401]],["title/229-1",[78,56.976]],["name/229-1",[]],["text/229-1",[]],["component/229-1",[]],["title/229-2",[745,45.082]],["name/229-2",[]],["text/229-2",[]],["component/229-2",[]],["title/229-3",[1255,32.348,1457,33.624]],["name/229-3",[]],["text/229-3",[]],["component/229-3",[]],["title/229",[136,15.007,1005,19.947,3477,38.977,3482,53.595]],["name/229",[3483,2.257]],["text/229",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3482,5.499,3483,7.843,3484,6.019]],["component/229",[7,0.401]],["title/230-1",[78,56.976]],["name/230-1",[]],["text/230-1",[]],["component/230-1",[]],["title/230-2",[745,45.082]],["name/230-2",[]],["text/230-2",[]],["component/230-2",[]],["title/230-3",[1255,32.348,1457,33.624]],["name/230-3",[]],["text/230-3",[]],["component/230-3",[]],["title/230",[136,15.007,1005,19.947,3477,38.977,3485,50.423]],["name/230",[3486,2.257]],["text/230",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3485,5.173,3486,7.843,3487,6.019]],["component/230",[7,0.401]],["title/231-1",[78,56.976]],["name/231-1",[]],["text/231-1",[]],["component/231-1",[]],["title/231-2",[745,45.082]],["name/231-2",[]],["text/231-2",[]],["component/231-2",[]],["title/231-3",[1255,32.348,1457,33.624]],["name/231-3",[]],["text/231-3",[]],["component/231-3",[]],["title/231",[136,15.007,1005,19.947,1741,44.118,3477,38.977]],["name/231",[3488,2.257]],["text/231",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1741,4.527,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3488,7.843,3489,6.019]],["component/231",[7,0.401]],["title/232-1",[78,56.976]],["name/232-1",[]],["text/232-1",[]],["component/232-1",[]],["title/232-2",[745,45.082]],["name/232-2",[]],["text/232-2",[]],["component/232-2",[]],["title/232-3",[1255,32.348,1457,33.624]],["name/232-3",[]],["text/232-3",[]],["component/232-3",[]],["title/232",[136,17.103,1005,22.733,1431,35.699]],["name/232",[1431,1.319]],["text/232",[8,1.538,65,4.137,84,1.739,88,1.906,101,3.014,118,2.067,136,1.621,139,2.247,183,2.519,191,3.368,252,2.833,264,2.118,279,2.85,301,2.551,357,3.555,388,3.697,451,3.162,487,2.75,514,3.125,567,4.332,686,2.448,723,2.408,827,3.384,1005,3.5,1076,2.943,1158,4.472,1431,6.689,1483,2.859,1578,4.637,1580,5.447,1617,7.653,2398,4.699,2422,3.789,2566,4.006,3180,5.447,3490,5.79,3491,6.337,3492,6.337,3493,6.337,3744,6.024]],["component/232",[7,0.401]],["title/233-1",[78,56.976]],["name/233-1",[]],["text/233-1",[]],["component/233-1",[]],["title/233-2",[745,45.082]],["name/233-2",[]],["text/233-2",[]],["component/233-2",[]],["title/233-3",[1255,32.348,1457,33.624]],["name/233-3",[]],["text/233-3",[]],["component/233-3",[]],["title/233",[136,17.103,1005,22.733,3494,51.038]],["name/233",[3494,1.886]],["text/233",[8,2.095,12,3.102,31,3.256,40,2.002,65,3.963,84,1.666,88,1.826,118,1.98,136,1.553,139,2.152,158,3.155,183,2.413,191,3.267,252,2.713,264,2.028,279,2.73,301,2.443,357,3.405,388,3.541,440,5.419,451,3.028,487,2.634,514,3.031,686,2.344,723,2.307,827,3.241,1005,3.418,1076,2.819,1483,2.738,1555,3.93,2422,3.629,2562,4.708,2566,3.837,3180,5.217,3494,9.654,3495,6.07,3496,6.07,3499,4.978,3500,5.545,3501,5.545,3502,5.545,3745,6.526,3746,6.526]],["component/233",[7,0.401]],["title/234-1",[78,56.976]],["name/234-1",[]],["text/234-1",[]],["component/234-1",[]],["title/234-2",[745,45.082]],["name/234-2",[]],["text/234-2",[]],["component/234-2",[]],["title/234-3",[191,25.292,728,36.562,1483,30.163]],["name/234-3",[]],["text/234-3",[]],["component/234-3",[]],["title/234-4",[10,30.592,228,38.927]],["name/234-4",[]],["text/234-4",[]],["component/234-4",[]],["title/234-5",[1255,32.348,1457,33.624]],["name/234-5",[]],["text/234-5",[]],["component/234-5",[]],["title/234",[136,17.103,1005,22.733,1591,42.597]],["name/234",[1591,1.574]],["text/234",[6,3.619,8,2.196,10,1.197,12,1.554,15,2.584,29,1.166,32,3.019,34,2.775,35,1.609,45,2.246,84,1.78,88,0.915,91,1.715,101,1.446,118,1.649,136,1.933,139,1.078,161,1.158,172,1.283,183,1.209,186,1.588,190,1.796,191,2.454,196,1.262,220,2.1,263,1.446,264,1.689,271,2.347,283,1.764,301,1.224,317,2.059,351,1.343,352,2.146,388,1.774,402,0.672,443,1.602,460,2.133,468,2.379,482,1.807,487,2.193,493,7.14,514,2.652,531,1.462,538,2.287,549,1.511,580,1.734,686,1.175,717,2.171,723,1.156,728,6.392,756,3.359,758,2.225,773,1.938,827,2.699,898,2.321,907,2.146,932,1.985,1005,2.852,1078,3.104,1106,1.567,1150,1.602,1174,4.892,1381,2.287,1483,1.372,1555,1.969,1591,5.766,1640,2.059,1727,2.079,1827,3.699,1945,1.938,2301,3.748,2408,2.494,2422,1.818,2566,1.923,2808,7.421,2979,2.891,3462,7.415,3464,4.805,3466,2.55,3467,4.805,3470,6.166,3471,2.55,3472,2.891,3473,4.805,3474,4.805,3503,3.041,3747,3.27,3748,3.27,3749,3.27,3750,3.27,3751,3.27,3752,3.27,3753,3.27]],["component/234",[7,0.401]],["title/235-1",[84,16.101,117,23.67,402,12.971,604,31.77]],["name/235-1",[]],["text/235-1",[]],["component/235-1",[]],["title/235-2",[84,12.931,117,19.01,136,12.052,139,16.706,604,25.515,1005,16.019]],["name/235-2",[]],["text/235-2",[]],["component/235-2",[]],["title/235",[402,17.184,1040,44.562]],["name/235",[402,0.306,1040,0.793]],["text/235",[0,0.862,3,0.694,6,0.817,7,0.418,8,1.422,13,1.653,14,1.265,17,0.692,18,1.361,23,1.863,26,1.227,29,1.599,30,1.314,34,1.31,36,0.74,37,0.996,40,0.563,42,0.745,45,1.852,84,0.841,86,1.547,88,0.513,101,1.457,108,1.155,110,0.775,112,1.382,115,0.962,117,1.682,118,0.557,125,0.777,133,1.014,134,2.703,135,0.697,136,2.154,139,3.412,144,1.299,145,1.952,148,1.01,150,0.708,151,1.134,155,1.49,158,0.887,160,0.907,161,1.588,163,2.518,172,2.145,178,0.872,180,1.014,183,1.218,189,1.701,196,2.944,202,1.265,203,0.996,214,2.206,224,2.04,225,2.187,236,0.722,248,2.064,252,1.863,262,0.973,263,1.982,267,0.962,268,1.881,270,1.323,271,1.423,272,0.929,277,1.494,280,0.763,292,1.636,296,1.245,301,0.687,319,1.712,333,0.99,354,1.001,357,0.957,386,0.938,394,1.922,395,1.063,397,1.283,401,0.765,402,2.311,406,2.167,408,1.592,418,1.303,420,1.178,441,1.027,443,0.899,445,1.881,450,1.114,455,1.505,460,0.72,465,1.278,468,0.803,474,1.155,487,0.74,514,1.075,518,1.155,523,2.446,525,1.841,548,1.096,549,0.848,552,0.685,557,0.978,583,0.947,593,1.442,617,0.933,630,3.041,665,0.872,668,2.599,674,1.105,675,1.114,678,0.973,679,3.176,683,1.606,686,1.61,695,0.829,696,1.323,719,1.692,723,0.648,733,1.134,735,1.096,741,1.041,745,0.829,754,0.73,756,1.134,779,1.034,827,0.911,835,0.903,865,2.186,903,0.947,949,1.034,967,1.041,968,0.895,970,1.144,993,0.952,1005,3.184,1008,0.924,1033,2.094,1040,1.756,1076,0.792,1082,1.323,1097,2.054,1106,1.579,1107,0.899,1125,1.096,1126,1.166,1131,1.063,1169,2.116,1213,2.074,1308,1.249,1400,0.899,1416,1.027,1456,0.734,1477,0.933,1483,0.77,1499,1.178,1516,1.323,1555,1.983,1852,2.074,1936,1.055,1965,2.512,2042,1.124,2097,1.283,2098,1.399,2135,1.303,2136,1.371,2177,0.832,2194,1.218,2348,1.303,2356,1.303,2387,1.249,2455,1.303,2479,1.371,2503,1.371,2586,1.265,2646,1.303,2687,1.467,2759,1.467,2760,1.467,2804,1.467,2980,1.622,2981,1.622,2982,1.622,2983,1.622,2984,1.622,2985,1.622,2986,1.622,2987,1.622,2988,1.622,3504,1.559,3505,1.706]],["component/235",[7,0.401]],["title/236-1",[402,17.184,1456,33.432]],["name/236-1",[]],["text/236-1",[]],["component/236-1",[]],["title/236-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/236-2",[]],["text/236-2",[]],["component/236-2",[]],["title/236-3",[8,18.856,150,32.262]],["name/236-3",[]],["text/236-3",[]],["component/236-3",[]],["title/236-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/236-4",[]],["text/236-4",[]],["component/236-4",[]],["title/236-5",[547,33.151,708,41.306]],["name/236-5",[]],["text/236-5",[]],["component/236-5",[]],["title/236-6",[350,31.77,546,42.927,830,35.539,2989,55.762]],["name/236-6",[]],["text/236-6",[]],["component/236-6",[]],["title/236-7",[8,16.222,546,48.923,830,40.503]],["name/236-7",[]],["text/236-7",[]],["component/236-7",[]],["title/236-8",[2177,45.248]],["name/236-8",[]],["text/236-8",[]],["component/236-8",[]],["title/236-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/236-9",[]],["text/236-9",[]],["component/236-9",[]],["title/236-10",[8,16.222,746,27.183,1005,22.733]],["name/236-10",[]],["text/236-10",[]],["component/236-10",[]],["title/236-11",[1255,32.348,1457,33.624]],["name/236-11",[]],["text/236-11",[]],["component/236-11",[]],["title/236",[545,55.999,862,41.88,1129,28.716]],["name/236",[545,0.919,862,0.988]],["text/236",[0,2,5,1.989,8,1.778,10,0.631,20,0.89,26,1.16,29,1.862,30,0.688,32,1.157,33,0.806,34,2.401,35,1.533,36,1.257,40,0.529,42,0.7,45,1.287,49,1.107,56,0.757,57,0.886,71,0.83,84,3.165,88,1.688,90,0.715,91,0.904,93,0.895,94,0.936,95,1.022,99,0.768,101,0.763,104,1.939,110,1.798,115,0.904,125,3.111,127,2.486,128,1.625,129,1.822,136,1.013,138,1.279,139,0.569,144,0.68,148,0.529,155,1.036,165,1.038,168,0.813,169,0.904,172,2.368,183,0.637,191,0.607,196,1.202,211,4.138,214,1.492,223,1.265,224,1.418,232,1.265,239,0.747,245,3.286,251,0.774,252,1.771,254,1.065,264,0.968,277,0.782,279,0.721,280,0.717,286,1.643,296,0.652,297,0.877,301,0.645,308,0.649,316,1.378,325,0.992,331,0.83,335,0.914,351,2.478,361,0.73,386,1.592,401,0.719,402,1.073,406,0.963,411,1.206,424,1.119,425,3.502,441,0.965,457,4.372,460,0.677,465,0.669,470,1.272,487,2.106,502,0.706,514,1.704,525,0.708,528,3.132,545,4.539,546,5.686,547,1.69,553,1.721,557,0.919,647,0.965,659,1.173,664,1.244,668,2.025,673,0.782,676,1.047,686,0.619,690,1.743,695,2.358,711,1.755,736,2.354,752,0.803,754,0.686,788,0.93,827,2.115,829,3.322,830,4.707,835,0.848,840,4.291,844,1.315,861,0.904,862,2.068,865,1.519,867,1.038,963,0.82,973,1.173,981,1.244,1005,0.545,1008,0.868,1076,0.745,1110,1.056,1122,2.12,1123,1.119,1127,1.132,1129,0.785,1132,0.733,1201,1.096,1279,0.965,1287,1.014,1421,1.096,1472,0.93,1477,0.877,1492,2.068,1519,1.224,1602,1.418,1639,1.378,1735,0.852,1963,2.376,1967,4.006,2177,1.932,2369,1.345,2636,0.925,2642,0.947,2667,1.378,2716,1.378,2734,2.49,2739,1.378,2850,2.49,2990,1.524,2991,2.753,2992,1.524,2993,1.524,2994,1.524,2995,1.524,2996,1.524,2997,2.753,2998,1.524,2999,1.524,3000,2.753,3001,2.753,3002,1.524,3003,1.418,3004,2.753,3005,1.524,3006,1.524,3007,1.524,3008,1.524,3009,1.524,3010,2.753,3011,1.524,3012,1.524,3013,1.524,3014,2.753,3015,2.753,3016,1.524,3017,1.524,3018,2.753,3019,1.524,3020,2.753,3021,1.524,3022,1.524,3087,1.006,3506,0.985,3507,1.604,3508,1.604,3510,1.604,3512,0.971,3754,3.114,3755,1.132]],["component/236",[7,0.401]],["title/237-1",[402,17.184,1456,33.432]],["name/237-1",[]],["text/237-1",[]],["component/237-1",[]],["title/237-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/237-2",[]],["text/237-2",[]],["component/237-2",[]],["title/237-3",[8,18.856,150,32.262]],["name/237-3",[]],["text/237-3",[]],["component/237-3",[]],["title/237-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/237-4",[]],["text/237-4",[]],["component/237-4",[]],["title/237-5",[2177,45.248]],["name/237-5",[]],["text/237-5",[]],["component/237-5",[]],["title/237-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/237-6",[]],["text/237-6",[]],["component/237-6",[]],["title/237-7",[8,16.222,746,27.183,1005,22.733]],["name/237-7",[]],["text/237-7",[]],["component/237-7",[]],["title/237-8",[1255,32.348,1457,33.624]],["name/237-8",[]],["text/237-8",[]],["component/237-8",[]],["title/237",[178,34.172,1129,32.728,1473,43.651]],["name/237",[677,0.844,1473,0.903]],["text/237",[5,2.98,8,2.221,12,1.833,26,2.317,29,2.219,33,1.804,84,3.118,88,2.188,90,1.599,99,1.718,129,1.65,135,2.365,136,1.48,138,2.556,139,1.272,144,1.522,148,1.183,155,1.283,161,1.366,172,1.513,178,5.003,183,1.426,191,1.357,214,2.179,228,1.797,231,2.428,239,1.671,263,1.706,264,1.934,277,1.749,280,2.587,301,1.444,308,1.451,331,1.857,349,1.873,351,1.584,361,1.634,394,2.251,395,2.234,401,1.608,402,1.608,406,2.417,445,2.203,446,1.783,451,1.79,459,2.188,465,1.497,470,2.54,484,2.322,514,2.929,654,2.477,686,1.385,687,2.405,695,2.812,726,2.159,746,1.458,752,1.797,788,2.081,830,2.173,835,1.898,873,2.304,896,2.251,983,2.561,1005,1.22,1008,1.943,1068,2.452,1076,1.666,1106,1.849,1107,1.889,1129,1.756,1187,2.532,1461,1.933,1472,2.081,1473,3.778,1474,3.171,1475,3.997,1476,5.116,1477,3.165,1478,2.883,1479,2.942,1480,3.171,1481,3.171,1482,3.083,1735,1.907,2177,3.547,2636,2.069,2642,2.118,3087,2.251,3506,2.203,3512,2.173,3513,2.532,3514,2.592,3755,2.532]],["component/237",[7,0.401]],["title/238-1",[402,17.184,1456,33.432]],["name/238-1",[]],["text/238-1",[]],["component/238-1",[]],["title/238-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/238-2",[]],["text/238-2",[]],["component/238-2",[]],["title/238-3",[118,25.347,694,45.892]],["name/238-3",[]],["text/238-3",[]],["component/238-3",[]],["title/238-4",[1145,45.341,1483,35.06]],["name/238-4",[]],["text/238-4",[]],["component/238-4",[]],["title/238-5",[1091,43.832,1145,45.341]],["name/238-5",[]],["text/238-5",[]],["component/238-5",[]],["title/238-6",[88,20.111,468,31.469,532,44.832]],["name/238-6",[]],["text/238-6",[]],["component/238-6",[]],["title/238-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/238-7",[]],["text/238-7",[]],["component/238-7",[]],["title/238-8",[8,16.222,30,28.681,150,27.755]],["name/238-8",[]],["text/238-8",[]],["component/238-8",[]],["title/238-9",[104,32.728,264,22.343,686,25.822]],["name/238-9",[]],["text/238-9",[]],["component/238-9",[]],["title/238-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/238-10",[]],["text/238-10",[]],["component/238-10",[]],["title/238-11",[2177,45.248]],["name/238-11",[]],["text/238-11",[]],["component/238-11",[]],["title/238-12",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/238-12",[]],["text/238-12",[]],["component/238-12",[]],["title/238-13",[8,16.222,746,27.183,1005,22.733]],["name/238-13",[]],["text/238-13",[]],["component/238-13",[]],["title/238-14",[728,36.562,1078,41.057,3463,57.467]],["name/238-14",[]],["text/238-14",[]],["component/238-14",[]],["title/238-15",[1255,32.348,1457,33.624]],["name/238-15",[]],["text/238-15",[]],["component/238-15",[]],["title/238",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/238",[728,0.757,1484,1]],["text/238",[2,0.571,5,0.769,6,1.268,7,0.245,8,1.751,10,1.043,12,0.512,13,1.084,14,0.775,15,2.3,17,0.761,20,0.556,26,0.401,29,1.918,30,1.43,32,1.332,33,0.503,34,1.426,35,0.53,36,0.434,37,1.095,40,2.282,42,0.819,45,1.177,56,0.886,57,1.036,65,0.654,79,2.43,84,0.727,87,1.16,88,0.797,90,1.18,94,0.584,96,0.466,97,0.648,98,1.177,101,1.878,104,0.919,110,0.852,117,0.757,118,3.086,120,1.536,134,2.089,135,0.409,136,1.688,138,1.744,139,1.4,142,0.525,144,1.415,148,0.33,155,0.947,160,0.532,161,0.715,171,0.468,172,2.109,183,0.746,184,0.839,186,2.35,189,0.556,191,2.364,196,1.099,214,1.695,224,0.49,234,0.556,239,0.874,251,0.483,252,0.447,253,0.648,264,0.627,267,1.494,271,2.09,272,0.545,275,0.492,277,0.488,278,0.587,279,1.5,280,0.447,283,0.581,292,1.002,300,0.659,301,0.403,308,1.071,315,2.159,316,1.586,319,1.622,320,1.064,328,0.742,330,1.205,331,0.518,333,0.581,340,0.595,341,0.571,350,0.542,355,1.195,361,0.855,401,1.77,402,1.381,406,1.495,408,0.52,412,0.671,443,0.988,451,0.499,455,0.492,465,0.418,468,2.118,470,0.824,482,1.115,492,2.673,502,0.441,514,2.806,517,0.577,525,1.744,528,1.047,531,0.902,532,1.776,538,2.508,539,0.732,547,0.427,552,0.753,580,0.571,593,0.471,603,1.122,608,0.51,620,0.577,656,1.824,666,0.591,679,1.562,683,2.07,686,2.106,694,1.108,695,0.486,698,0.523,723,0.713,728,4.24,746,1.356,752,0.501,754,0.428,755,0.764,765,0.691,766,0.648,773,0.638,835,2.089,850,1.296,871,0.665,890,3.604,894,0.648,896,0.628,903,0.556,907,0.706,932,0.654,972,0.507,985,1.604,1005,1.53,1008,0.542,1024,1.411,1076,0.871,1078,0.615,1083,0.723,1087,1.869,1089,3.141,1090,1.236,1091,2.538,1092,0.633,1096,0.715,1129,0.49,1133,4.203,1141,0.723,1142,0.753,1143,0.753,1145,4.664,1150,0.988,1151,3.849,1279,1.594,1381,0.753,1390,0.599,1400,0.527,1402,2.44,1416,0.602,1434,0.559,1456,0.431,1475,0.691,1477,1.026,1485,1.659,1488,4.63,1489,1.539,1490,0.623,1491,2.172,1492,0.715,1493,1.539,1494,2.172,1495,1.539,1496,0.821,1497,0.885,1498,0.665,1499,0.691,1500,0.885,1501,2.948,1502,1.659,1503,1.659,1504,2.221,1505,0.885,1506,1.659,1507,0.885,1508,1.356,1509,0.79,1513,0.699,1514,2.889,1515,0.742,1516,0.776,1517,0.715,1518,1.539,1519,0.764,1520,0.643,1521,0.821,1522,0.885,1523,0.839,1524,0.671,1622,0.742,1647,0.659,2177,0.915,2301,1.391,2408,0.821,2808,0.821,3087,0.628,3103,0.885,3287,0.821,3382,0.678,3462,1.659,3463,4.297,3465,1.714,3466,0.839,3468,0.914,3469,0.914,3471,0.839,3512,0.606,3513,0.706,3514,0.723,3515,1.001,3518,1.001,3519,1.001,3520,1.001,3521,1.001,3522,1.001,3523,1.001,3524,1.001,3525,1.001,3755,0.706,3756,2.017,3757,2.848]],["component/238",[7,0.401]],["title/239-1",[402,17.184,1456,33.432]],["name/239-1",[]],["text/239-1",[]],["component/239-1",[]],["title/239-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/239-2",[]],["text/239-2",[]],["component/239-2",[]],["title/239-3",[8,18.856,150,32.262]],["name/239-3",[]],["text/239-3",[]],["component/239-3",[]],["title/239-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/239-4",[]],["text/239-4",[]],["component/239-4",[]],["title/239-5",[2177,45.248]],["name/239-5",[]],["text/239-5",[]],["component/239-5",[]],["title/239-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/239-6",[]],["text/239-6",[]],["component/239-6",[]],["title/239-7",[8,16.222,746,27.183,1005,22.733]],["name/239-7",[]],["text/239-7",[]],["component/239-7",[]],["title/239-8",[191,22.192,984,36.025,1431,31.324,1483,26.465]],["name/239-8",[]],["text/239-8",[]],["component/239-8",[]],["title/239-9",[1255,32.348,1457,33.624]],["name/239-9",[]],["text/239-9",[]],["component/239-9",[]],["title/239",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/239",[1431,0.739,1559,0.928]],["text/239",[0,0.792,3,0.638,5,2.53,6,0.751,8,1.635,10,1.879,13,0.51,15,0.802,17,1.578,26,1.137,29,2.585,32,2.467,33,0.789,34,0.671,40,0.936,45,2.121,56,0.741,84,3.12,87,1.756,88,1.857,90,0.699,101,0.746,104,1.39,105,1.606,112,0.708,113,0.662,116,0.845,117,0.633,118,2.361,125,0.714,129,0.721,135,1.16,136,1.221,138,1.718,143,0.841,148,0.517,150,1.179,154,0.762,155,1.707,161,2.352,169,0.885,172,0.662,183,1.129,189,0.871,191,2.55,196,0.651,211,0.795,214,1.069,220,1.083,228,1.422,234,0.871,239,0.731,242,1.12,252,0.701,255,0.894,264,0.949,271,2.217,272,0.854,275,0.771,277,0.765,279,0.705,288,1.238,292,0.838,297,1.553,301,0.631,308,0.635,319,0.644,322,1.083,331,0.812,349,0.819,351,1.718,354,0.921,357,0.88,361,0.714,402,0.86,406,2.24,408,0.815,431,0.905,451,0.783,464,0.963,465,0.655,470,1.247,502,0.691,514,1.939,567,1.072,586,0.91,593,0.738,654,1.961,656,0.858,663,1.024,668,0.802,678,0.894,679,0.62,682,1.463,686,1.844,695,1.38,719,2.149,746,1.154,752,0.786,754,0.671,772,0.932,779,0.95,830,2.892,834,1.062,835,0.83,861,0.885,863,3.766,864,1.348,893,1.007,1005,1.323,1008,0.849,1068,1.941,1075,0.885,1076,1.319,1106,0.808,1107,0.826,1123,1.095,1129,0.768,1174,1.016,1195,0.921,1279,0.944,1287,0.992,1390,0.938,1431,5.419,1434,2.664,1436,1.261,1441,2.777,1456,0.675,1461,0.845,1468,1.744,1469,0.999,1475,1.083,1477,0.858,1483,2.153,1490,0.977,1498,1.042,1520,1.007,1526,1.961,1527,1.083,1555,1.838,1559,3.705,1561,1.133,1562,1.238,1563,1.387,1578,2.078,1581,2.329,1585,1.838,1622,1.163,1735,0.834,1779,1.12,1880,2.202,2177,1.897,2398,1.163,2477,1.133,2587,1.238,2636,0.905,2642,0.926,2646,1.197,2844,2.51,3023,1.387,3024,1.491,3025,2.51,3027,3.127,3028,1.491,3029,1.491,3030,4.22,3031,2.699,3032,3.439,3033,2.135,3034,3.439,3035,1.387,3037,1.491,3038,1.491,3039,1.491,3040,2.51,3041,1.491,3087,0.984,3382,1.062,3490,1.433,3506,0.963,3512,0.95,3513,1.107,3514,1.133,3526,2.84,3527,1.348,3528,1.433,3529,1.433,3530,2.594,3531,1.569,3532,1.569,3533,1.569,3534,1.569,3536,1.569,3537,1.569,3539,2.84,3540,1.569,3744,4.537,3755,1.107,3758,3.053,3759,1.686]],["component/239",[7,0.401]],["title/240-1",[402,17.184,1456,33.432]],["name/240-1",[]],["text/240-1",[]],["component/240-1",[]],["title/240-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/240-2",[]],["text/240-2",[]],["component/240-2",[]],["title/240-3",[8,18.856,150,32.262]],["name/240-3",[]],["text/240-3",[]],["component/240-3",[]],["title/240-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/240-4",[]],["text/240-4",[]],["component/240-4",[]],["title/240-5",[2177,45.248]],["name/240-5",[]],["text/240-5",[]],["component/240-5",[]],["title/240-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/240-6",[]],["text/240-6",[]],["component/240-6",[]],["title/240-7",[8,16.222,746,27.183,1005,22.733]],["name/240-7",[]],["text/240-7",[]],["component/240-7",[]],["title/240-8",[8,18.856,647,46.771]],["name/240-8",[]],["text/240-8",[]],["component/240-8",[]],["title/240-9",[1255,32.348,1457,33.624]],["name/240-9",[]],["text/240-9",[]],["component/240-9",[]],["title/240-10",[8,12.679,514,18.342,1144,38.239,3550,43.818,3760,44.917]],["name/240-10",[]],["text/240-10",[]],["component/240-10",[]],["title/240-11",[189,37.119,262,38.123,1650,47.184]],["name/240-11",[]],["text/240-11",[]],["component/240-11",[]],["title/240-12",[30,22.418,333,30.31,3544,49.674,3550,43.818,3760,44.917]],["name/240-12",[]],["text/240-12",[]],["component/240-12",[]],["title/240-13",[30,22.418,333,30.31,3550,43.818,3760,44.917,3761,52.259]],["name/240-13",[]],["text/240-13",[]],["component/240-13",[]],["title/240-14",[8,16.222,3550,56.06,3760,57.467]],["name/240-14",[]],["text/240-14",[]],["component/240-14",[]],["title/240-15",[1144,48.923,3550,56.06,3760,57.467]],["name/240-15",[]],["text/240-15",[]],["component/240-15",[]],["title/240",[402,10.417,1129,23.063,3494,54.705,3499,58.768]],["name/240",[3494,1.056,3499,1.135]],["text/240",[0,0.315,3,0.486,5,0.707,8,1.174,10,1.784,12,0.882,13,0.202,14,0.712,17,0.7,23,0.771,24,0.636,26,0.691,29,1.738,30,2.532,32,0.249,33,0.313,34,0.512,40,0.731,42,1.35,45,1.714,56,0.294,57,1.475,58,0.377,79,0.533,82,0.788,84,3.627,87,0.385,88,0.931,101,1.835,104,1.084,105,0.494,118,1.846,125,1.409,129,0.286,133,0.37,134,0.222,135,0.705,136,0.893,138,1.366,143,0.334,144,0.264,146,0.325,150,0.92,154,1.076,155,0.955,161,1.953,163,0.308,164,0.372,168,1.123,169,0.351,172,0.505,174,0.476,181,0.445,183,0.881,188,0.694,189,0.664,190,0.368,191,1.17,192,0.313,199,1.007,211,0.606,214,0.834,224,0.844,227,0.403,228,0.864,239,0.804,242,0.445,248,1.322,251,0.3,252,2.025,255,0.984,257,0.535,262,0.355,264,0.577,271,1.62,272,0.339,275,0.306,277,0.583,286,0.678,287,0.835,293,1.052,296,0.486,301,0.251,308,0.698,316,0.296,320,0.353,325,0.385,331,0.322,349,2.366,351,1.541,361,0.545,394,0.391,401,1.387,402,0.381,403,0.44,406,2.588,415,0.41,439,0.349,451,0.597,464,0.383,465,0.72,470,1.989,474,1.499,482,0.711,484,0.403,514,1.8,517,0.359,525,0.275,531,0.575,547,0.51,549,1.918,557,1.27,575,0.426,578,2.295,586,1.001,593,1.043,596,0.388,599,0.981,609,0.522,620,0.69,640,0.492,647,0.375,649,0.476,652,0.511,656,0.341,672,1.126,678,0.355,679,0.246,686,0.666,690,0.375,694,0.706,695,0.303,698,0.325,708,0.917,719,0.953,723,0.237,726,0.375,729,0.385,745,3.19,746,0.253,752,0.312,754,0.266,790,1.453,827,0.639,830,1.618,833,0.456,834,0.81,835,0.913,859,0.375,861,1.249,873,0.768,895,1.262,907,0.844,922,0.961,931,0.445,933,0.4,949,0.725,982,0.407,1004,0.802,1005,0.587,1008,0.337,1010,1.499,1012,0.456,1048,0.476,1068,1.514,1075,0.675,1076,1.24,1078,0.383,1106,0.321,1107,0.328,1108,0.43,1110,0.41,1114,0.476,1122,0.456,1123,0.435,1129,0.305,1138,1.179,1144,0.875,1187,1.218,1195,0.366,1201,0.426,1211,1.108,1214,0.414,1250,0.445,1255,0.259,1279,1.333,1284,0.476,1287,0.756,1390,0.372,1431,0.333,1434,0.348,1457,0.27,1461,0.336,1475,0.43,1477,0.341,1483,0.778,1490,0.388,1498,0.414,1509,0.492,1514,1.621,1519,0.476,1526,0.826,1527,0.43,1529,0.476,1546,0.501,1555,0.774,1556,0.38,1561,0.45,1585,0.774,1625,1.232,1643,0.468,1691,0.483,1693,0.551,1708,1.157,1735,0.636,1750,0.462,1771,1.525,1783,0.462,1795,0.522,1916,0.569,1924,0.535,1930,1.093,1933,0.492,1950,0.835,2092,0.483,2121,0.569,2177,0.841,2211,0.483,2256,0.501,2312,0.551,2356,0.476,2429,0.551,2477,0.45,2588,0.522,2596,0.551,2626,0.875,2636,0.359,2642,0.368,2679,0.569,2945,0.569,3033,0.468,3040,0.551,3087,0.391,3115,0.551,3129,2.206,3135,1.691,3234,0.511,3311,0.569,3377,0.592,3382,0.422,3394,0.569,3399,0.535,3417,1.137,3494,6.643,3498,0.592,3499,2.537,3500,8.513,3501,3.525,3502,1.093,3506,0.383,3512,0.377,3513,0.44,3514,0.45,3542,1.196,3543,0.623,3544,2.538,3545,0.623,3546,0.623,3547,0.623,3548,1.725,3549,1.725,3550,4.528,3551,0.623,3552,0.623,3553,0.623,3554,0.623,3555,0.623,3557,0.623,3558,0.623,3559,0.623,3560,0.623,3561,0.623,3562,1.196,3563,0.623,3564,0.623,3565,0.623,3566,2.215,3567,1.196,3568,0.623,3569,0.623,3570,0.623,3571,0.511,3572,0.623,3573,1.196,3574,1.196,3575,0.623,3577,0.623,3578,1.725,3579,0.623,3580,0.623,3581,0.623,3582,0.623,3583,0.623,3584,4.206,3585,0.623,3586,0.623,3587,1.725,3588,1.725,3589,0.623,3590,0.623,3591,1.196,3592,0.623,3593,0.623,3594,0.623,3595,0.623,3596,0.623,3597,1.196,3598,1.196,3599,0.623,3600,0.623,3601,0.623,3602,0.623,3652,0.551,3738,0.592,3755,0.44,3760,4.407,3761,1.196,3762,0.67,3763,0.67,3764,1.855,3765,0.67,3766,0.67,3767,0.67,3768,0.67,3769,0.67,3770,0.67,3771,1.855,3772,2.871,3773,0.67,3774,0.67,3775,0.67,3776,1.286,3777,0.67,3778,0.67,3779,0.67,3780,0.67,3781,2.871,3782,0.67,3783,0.67,3784,0.67,3785,0.67,3786,0.67,3787,0.67,3788,0.67,3789,0.67,3790,1.286,3791,0.67,3792,0.67,3793,1.286,3794,0.67,3795,0.67,3796,0.67,3797,0.67,3798,0.67]],["component/240",[7,0.401]],["title/241-1",[402,17.184,1456,33.432]],["name/241-1",[]],["text/241-1",[]],["component/241-1",[]],["title/241-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/241-2",[]],["text/241-2",[]],["component/241-2",[]],["title/241-3",[8,18.856,150,32.262]],["name/241-3",[]],["text/241-3",[]],["component/241-3",[]],["title/241-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/241-4",[]],["text/241-4",[]],["component/241-4",[]],["title/241-5",[2177,45.248]],["name/241-5",[]],["text/241-5",[]],["component/241-5",[]],["title/241-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/241-6",[]],["text/241-6",[]],["component/241-6",[]],["title/241-7",[8,16.222,746,27.183,1005,22.733]],["name/241-7",[]],["text/241-7",[]],["component/241-7",[]],["title/241-8",[1255,32.348,1457,33.624]],["name/241-8",[]],["text/241-8",[]],["component/241-8",[]],["title/241",[402,10.417,1129,23.063,1591,45.657,3042,44.784,3043,33.634]],["name/241",[1591,0.882,3043,0.988]],["text/241",[3,0.93,8,2.144,13,0.743,14,0.944,19,3.122,26,0.916,29,2.405,33,1.15,38,1.244,40,2.068,42,0.998,56,1.08,84,3.737,99,1.9,105,2.17,115,1.29,117,0.923,118,2.046,135,0.935,136,1.015,138,2.77,139,1.407,148,0.754,150,1.647,154,1.111,155,1.418,161,2.703,162,1.596,172,0.965,191,2.373,214,1.979,239,1.066,240,1.633,248,2.601,264,0.764,273,3.13,277,1.115,280,1.022,296,0.93,301,0.92,324,1.614,331,1.184,349,1.194,351,1.01,361,1.041,402,1.387,406,1.318,408,1.189,415,1.506,464,1.404,465,0.954,474,2.686,493,5.599,502,1.007,506,1.633,514,1.392,525,1.01,541,1.746,557,2.275,564,3.625,593,1.867,608,1.164,621,1.633,645,1.875,656,1.251,686,2.029,690,1.376,695,1.111,708,1.215,752,1.145,754,0.978,835,1.21,861,1.29,1005,0.778,1008,1.238,1076,1.062,1091,1.29,1106,1.179,1107,1.205,1109,1.563,1129,1.119,1131,1.424,1150,1.205,1195,1.342,1279,1.376,1475,1.579,1477,1.251,1514,1.673,1517,1.633,1524,1.533,1556,1.395,1566,2.022,1591,4.955,1599,2.022,1600,2.022,1601,2.022,1622,1.696,1735,1.215,1781,1.966,2177,1.935,2342,1.838,2897,1.966,3043,5.961,3044,2.174,3045,2.174,3046,2.174,3047,2.174,3048,2.174,3049,2.174,3050,2.174,3051,2.174,3052,2.174,3053,2.174,3054,2.174,3055,2.174,3056,2.174,3058,3.771,3059,2.174,3060,2.174,3061,2.174,3062,2.174,3087,1.435,3382,1.548,3506,1.404,3512,1.385,3513,1.614,3514,1.652,3755,1.614,3799,2.459]],["component/241",[7,0.401]],["title/242-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/242-1",[]],["text/242-1",[]],["component/242-1",[]],["title/242-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/242-2",[]],["text/242-2",[]],["component/242-2",[]],["title/242-3",[8,18.856,150,32.262]],["name/242-3",[]],["text/242-3",[]],["component/242-3",[]],["title/242-4",[401,41.598]],["name/242-4",[]],["text/242-4",[]],["component/242-4",[]],["title/242-5",[191,29.399,615,42.499]],["name/242-5",[]],["text/242-5",[]],["component/242-5",[]],["title/242-6",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/242-6",[]],["text/242-6",[]],["component/242-6",[]],["title/242-7",[2177,45.248]],["name/242-7",[]],["text/242-7",[]],["component/242-7",[]],["title/242-8",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/242-8",[]],["text/242-8",[]],["component/242-8",[]],["title/242-9",[8,16.222,746,27.183,1005,22.733]],["name/242-9",[]],["text/242-9",[]],["component/242-9",[]],["title/242-10",[1255,32.348,1457,33.624]],["name/242-10",[]],["text/242-10",[]],["component/242-10",[]],["title/242",[615,46.09,937,37.981,1129,28.716]],["name/242",[937,0.896,1528,0.903]],["text/242",[0,0.878,3,0.707,5,2.113,6,0.833,8,1.861,10,1.227,18,0.773,26,1.248,29,3.26,30,2.213,33,0.875,36,0.755,38,2.304,40,1.396,42,0.759,56,0.821,58,1.054,82,1.145,84,3.177,88,1.786,96,0.81,105,1.287,108,1.177,118,1.381,129,0.8,135,1.73,136,1.32,138,1.376,148,1.396,150,0.722,155,1.114,161,3.37,172,0.734,183,2.36,185,2.09,191,1.179,199,1.015,201,1.201,211,0.882,214,1.174,228,1.561,239,1.452,262,0.992,264,0.581,265,1.145,271,2.757,277,0.848,279,1.402,301,0.7,308,0.704,316,0.827,319,1.28,330,2.001,331,0.9,350,0.942,361,0.792,378,2.11,401,0.78,402,0.936,406,2.383,408,0.904,446,0.864,465,0.726,470,1.368,486,4.679,502,0.766,514,3.105,516,1.426,528,0.971,552,0.698,601,1.29,608,1.586,615,3.609,620,1.003,630,1.863,668,1.593,674,1.126,676,1.136,677,1.061,679,1.233,683,0.912,686,1.204,687,2.09,695,1.514,719,2.338,746,0.707,752,0.871,754,0.744,760,2.09,788,1.009,790,0.947,830,1.054,835,0.92,873,1.117,937,2.741,970,1.166,1005,0.591,1008,0.942,1075,0.981,1076,0.808,1106,0.896,1107,0.916,1126,1.189,1127,1.227,1129,0.851,1130,1.054,1134,1.257,1150,2.717,1169,1.201,1201,1.189,1279,2.548,1286,1.372,1305,1.328,1390,2.532,1434,0.971,1461,0.937,1469,1.108,1472,1.009,1475,1.201,1477,0.951,1514,3.775,1528,4.683,1529,1.328,1530,1.372,1531,1.426,1532,1.538,1533,1.242,1534,1.538,1537,1.328,1538,2.071,1540,1.372,1544,2.866,1545,1.29,1546,1.398,1552,1.426,1555,2.018,1556,1.901,1590,3.232,1622,1.29,1735,0.924,1741,2.344,1779,2.225,2177,2.065,2301,1.29,2636,1.003,2642,1.027,3063,4.024,3064,1.653,3065,1.653,3066,1.653,3067,1.653,3068,1.653,3069,1.653,3070,1.653,3071,1.653,3073,4.024,3077,1.653,3079,1.653,3080,1.653,3081,1.653,3082,1.653,3083,2.962,3084,1.653,3085,1.653,3086,1.653,3087,1.091,3382,1.177,3477,2.071,3506,1.068,3512,1.054,3513,1.227,3514,1.257,3605,1.739,3607,1.739,3755,1.227,3800,1.87,3801,1.87,3802,1.87,3803,1.87]],["component/242",[7,0.401]],["title/243-1",[402,17.184,1456,33.432]],["name/243-1",[]],["text/243-1",[]],["component/243-1",[]],["title/243-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/243-2",[]],["text/243-2",[]],["component/243-2",[]],["title/243-3",[8,18.856,150,32.262]],["name/243-3",[]],["text/243-3",[]],["component/243-3",[]],["title/243-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/243-4",[]],["text/243-4",[]],["component/243-4",[]],["title/243-5",[2177,45.248]],["name/243-5",[]],["text/243-5",[]],["component/243-5",[]],["title/243-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/243-6",[]],["text/243-6",[]],["component/243-6",[]],["title/243-7",[8,16.222,746,27.183,1005,22.733]],["name/243-7",[]],["text/243-7",[]],["component/243-7",[]],["title/243-8",[1255,32.348,1457,33.624]],["name/243-8",[]],["text/243-8",[]],["component/243-8",[]],["title/243",[138,34.207,139,18.53,677,47.243]],["name/243",[138,0.611,677,0.844]],["text/243",[5,2.737,7,0.615,8,1.043,17,1.018,26,3.008,29,1.649,33,1.262,34,1.074,37,1.465,40,0.828,58,1.521,84,3.322,88,1.696,90,1.119,101,1.194,110,2.56,113,1.059,129,1.977,135,1.026,136,1.442,138,3.617,142,1.316,144,1.065,146,1.311,148,1.418,150,1.042,155,0.898,161,3.12,163,1.243,170,1.492,172,1.059,180,1.492,183,0.998,191,1.626,196,3.118,199,2.508,205,1.916,214,1.619,215,2.969,228,1.257,239,1.17,264,1.437,271,1.166,277,1.224,279,1.934,280,2.986,301,2.269,316,1.194,331,2.225,333,1.456,351,1.109,361,1.143,401,1.126,402,1.247,406,1.429,408,1.305,445,1.542,459,1.531,465,1.048,470,2.475,474,1.699,484,2.784,508,2.465,514,2.344,521,1.625,525,1.109,531,1.207,547,1.071,556,1.492,570,1.465,593,1.182,608,1.278,630,3.372,677,1.531,686,0.97,695,3.65,719,1.387,728,1.373,732,1.599,745,1.22,752,1.257,760,1.683,864,2.158,865,1.316,910,1.501,932,2.807,949,4.55,950,1.981,1008,1.36,1076,1.166,1091,1.416,1106,1.294,1107,1.322,1114,1.916,1169,2.969,1255,1.045,1390,2.571,1458,2.059,1459,2.219,1460,2.219,1461,1.353,1462,2.219,1463,2.059,1465,1.916,1466,2.219,1467,1.947,1468,1.542,1469,1.599,1470,2.219,1471,2.219,1472,1.456,1477,1.373,1484,1.814,1530,1.981,1661,1.837,1735,1.334,2177,3.257,2348,1.916,2477,1.814,2479,2.018,2634,1.947,2636,1.448,2642,2.539,2646,1.916,3087,2.698,3088,2.386,3089,2.386,3090,2.386,3506,1.542,3512,1.521,3513,1.772,3609,2.51,3755,1.772]],["component/243",[7,0.401]],["title/244-1",[402,17.184,1456,33.432]],["name/244-1",[]],["text/244-1",[]],["component/244-1",[]],["title/244-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/244-2",[]],["text/244-2",[]],["component/244-2",[]],["title/244-3",[8,18.856,150,32.262]],["name/244-3",[]],["text/244-3",[]],["component/244-3",[]],["title/244-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/244-4",[]],["text/244-4",[]],["component/244-4",[]],["title/244-5",[17,23.79,18,26.062,2658,46.286,3610,58.665]],["name/244-5",[]],["text/244-5",[]],["component/244-5",[]],["title/244-6",[2177,45.248]],["name/244-6",[]],["text/244-6",[]],["component/244-6",[]],["title/244-7",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/244-7",[]],["text/244-7",[]],["component/244-7",[]],["title/244-8",[8,16.222,746,27.183,1005,22.733]],["name/244-8",[]],["text/244-8",[]],["component/244-8",[]],["title/244-9",[1255,32.348,1457,33.624]],["name/244-9",[]],["text/244-9",[]],["component/244-9",[]],["title/244",[311,30.628,1609,35.079,1610,36.54,3228,44.782]],["name/244",[1610,0.599,1612,0.551,3228,0.734]],["text/244",[3,1.069,8,1.671,10,3.039,13,0.855,17,1.066,18,1.168,26,1.791,32,1.787,34,1.125,45,2.593,79,1.172,84,3.176,88,0.791,99,1.259,105,1.086,109,2.114,112,1.186,113,1.109,117,1.061,118,0.858,121,1.445,125,1.198,129,1.209,136,0.673,138,1.161,139,0.932,144,1.116,148,0.867,155,3.373,157,2.04,168,1.333,170,1.563,172,1.109,174,2.007,183,1.778,191,0.995,206,1.835,214,2.908,226,1.65,239,1.225,247,1.563,249,1.361,251,1.268,252,1.999,255,1.499,264,0.879,266,1.924,277,1.282,296,2.373,301,2.349,308,1.064,311,2.335,316,1.251,320,1.491,331,1.361,335,1.499,361,1.198,391,2.249,402,0.989,406,0.874,442,1.835,460,1.109,465,1.867,470,1.964,487,1.141,502,1.158,514,1.57,547,1.122,557,1.508,567,1.798,569,2.075,608,1.339,617,1.438,679,1.769,686,1.728,695,1.278,708,1.398,752,1.317,754,1.125,760,1.763,863,2.075,871,1.747,907,1.856,922,2.114,963,1.344,972,2.959,1005,0.894,1008,1.424,1015,1.978,1062,1.798,1075,1.483,1076,1.221,1137,1.877,1421,3.058,1431,4.122,1441,3.193,1477,1.438,1562,2.075,1578,3.273,1581,2.157,1609,1.572,1610,4.809,1611,2.972,1612,1.508,1613,2.325,1614,2.325,1619,2.04,1620,2.972,1623,2.157,1735,1.398,1880,3.47,2005,2.402,2006,2.402,2177,2.847,2374,3.317,2636,1.516,2642,1.553,2658,2.075,3087,1.65,3228,4.456,3260,6.292,3391,2.26,3506,1.615,3512,1.593,3611,2.63,3612,2.63,3613,4.473,3614,2.63,3615,4.473,3616,2.63,3617,2.63,3618,2.63,3619,2.63,3755,1.856]],["component/244",[7,0.401]],["title/245-1",[402,17.184,1456,33.432]],["name/245-1",[]],["text/245-1",[]],["component/245-1",[]],["title/245-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/245-2",[]],["text/245-2",[]],["component/245-2",[]],["title/245-3",[8,18.856,150,32.262]],["name/245-3",[]],["text/245-3",[]],["component/245-3",[]],["title/245-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/245-4",[]],["text/245-4",[]],["component/245-4",[]],["title/245-5",[2177,45.248]],["name/245-5",[]],["text/245-5",[]],["component/245-5",[]],["title/245-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/245-6",[]],["text/245-6",[]],["component/245-6",[]],["title/245-7",[8,16.222,746,27.183,1005,22.733]],["name/245-7",[]],["text/245-7",[]],["component/245-7",[]],["title/245-8",[1255,32.348,1457,33.624]],["name/245-8",[]],["text/245-8",[]],["component/245-8",[]],["title/245",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/245",[1612,0.793,1754,0.977]],["text/245",[5,2.47,8,1.463,13,1.227,14,2.49,17,3.053,18,1.677,26,2.415,84,3.168,88,2.264,105,2.49,118,1.231,129,1.736,136,1.542,138,2.663,139,1.339,148,1.245,155,3.759,168,1.914,172,1.593,191,1.428,214,2.835,224,1.848,228,1.891,239,1.759,264,1.262,271,1.753,277,1.841,301,1.52,308,1.527,316,1.796,331,1.954,361,1.719,391,1.899,402,1.333,406,2.004,460,1.593,465,1.576,470,2.647,487,1.638,514,3.017,547,1.611,557,2.165,608,1.922,617,2.065,679,2.385,686,2.329,695,1.835,708,2.007,752,1.891,754,1.615,930,2.664,963,1.93,1005,1.284,1008,2.045,1075,3.401,1076,1.753,1137,2.695,1279,2.272,1421,4.122,1468,6.151,1472,2.19,1477,2.065,1612,2.165,1735,2.007,1754,2.664,1755,6.967,1756,3.338,2177,3.671,2636,2.177,2642,2.229,3087,2.369,3194,3.449,3382,2.556,3506,2.318,3512,2.287,3620,3.776,3621,3.776,3622,3.776,3755,2.664]],["component/245",[7,0.401]],["title/246-1",[402,17.184,1456,33.432]],["name/246-1",[]],["text/246-1",[]],["component/246-1",[]],["title/246-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/246-2",[]],["text/246-2",[]],["component/246-2",[]],["title/246-3",[8,18.856,150,32.262]],["name/246-3",[]],["text/246-3",[]],["component/246-3",[]],["title/246-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/246-4",[]],["text/246-4",[]],["component/246-4",[]],["title/246-5",[2177,45.248]],["name/246-5",[]],["text/246-5",[]],["component/246-5",[]],["title/246-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/246-6",[]],["text/246-6",[]],["component/246-6",[]],["title/246-7",[8,16.222,746,27.183,1005,22.733]],["name/246-7",[]],["text/246-7",[]],["component/246-7",[]],["title/246-8",[1255,32.348,1457,33.624]],["name/246-8",[]],["text/246-8",[]],["component/246-8",[]],["title/246",[311,34.906,1609,39.979,3623,54.829]],["name/246",[1612,0.793,3623,1.135]],["text/246",[5,2.417,8,1.431,10,1.446,13,1.194,17,0.849,18,0.93,25,1.513,26,0.838,29,2.835,32,2.681,33,1.053,40,0.691,45,2.18,63,1.304,79,0.933,84,3.613,87,2.272,88,0.63,90,0.933,105,2.027,110,1.668,117,0.845,118,1.198,125,0.954,129,0.963,136,0.536,148,0.691,150,0.869,154,1.017,155,1.313,161,2.556,183,2.345,189,1.162,191,1.857,214,1.848,225,1.495,228,1.049,234,1.162,239,1.712,242,1.495,251,1.01,264,0.7,271,2.279,272,1.139,279,1.652,292,1.118,297,1.145,301,0.843,319,0.86,331,1.084,349,1.093,351,0.925,356,1.098,361,0.954,386,1.151,402,0.812,406,0.696,408,1.088,431,1.207,464,1.286,470,1.613,487,0.908,502,0.922,508,1.201,514,1.289,593,0.985,617,1.145,654,1.446,656,1.145,663,1.367,668,1.07,682,1.893,686,1.895,694,1.236,695,2.385,719,1.157,746,1.494,752,1.049,754,1.571,772,1.244,779,1.268,782,1.756,830,2.225,863,4.654,893,1.345,963,1.07,1005,1.249,1075,1.181,1195,1.229,1279,1.26,1421,2.511,1431,4.518,1434,2.739,1436,2.952,1441,2.622,1456,0.901,1468,1.286,1486,1.851,1509,1.652,1526,1.446,1527,1.446,1555,1.356,1571,1.913,1578,1.532,1581,3.013,1585,3.177,1612,1.201,1665,1.851,1691,1.624,1735,1.952,1747,1.624,1880,1.624,2177,1.021,2309,1.446,2477,1.513,2587,1.652,2636,1.207,2642,1.236,2684,3.08,3023,1.851,3025,1.851,3027,1.683,3030,1.851,3032,1.851,3033,1.575,3034,4.339,3035,1.851,3087,1.314,3382,1.417,3504,1.913,3506,1.286,3512,1.268,3513,1.478,3514,1.513,3527,1.8,3528,1.913,3529,1.913,3530,1.913,3623,5.504,3624,4.484,3625,2.094,3626,2.094,3627,2.094,3628,2.094,3629,2.094,3630,2.094,3631,2.094,3632,2.094,3633,2.094,3634,2.094,3636,2.094,3637,2.094,3744,4.665,3755,1.478,3804,2.251]],["component/246",[7,0.401]],["title/247-1",[402,17.184,1456,33.432]],["name/247-1",[]],["text/247-1",[]],["component/247-1",[]],["title/247-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/247-2",[]],["text/247-2",[]],["component/247-2",[]],["title/247-3",[8,18.856,150,32.262]],["name/247-3",[]],["text/247-3",[]],["component/247-3",[]],["title/247-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/247-4",[]],["text/247-4",[]],["component/247-4",[]],["title/247-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/247-5",[]],["text/247-5",[]],["component/247-5",[]],["title/247-6",[10,23.093,333,34.025,706,36.279,1758,36.279]],["name/247-6",[]],["text/247-6",[]],["component/247-6",[]],["title/247-7",[1758,48.06,3257,61.318]],["name/247-7",[]],["text/247-7",[]],["component/247-7",[]],["title/247-8",[8,16.222,746,27.183,1005,22.733]],["name/247-8",[]],["text/247-8",[]],["component/247-8",[]],["title/247-9",[1255,32.348,1457,33.624]],["name/247-9",[]],["text/247-9",[]],["component/247-9",[]],["title/247",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/247",[1758,0.856,1759,0.764]],["text/247",[3,0.484,6,1.056,8,1.769,10,2.011,13,0.716,17,1.83,23,0.532,26,0.476,29,2.921,30,0.946,32,1.535,34,0.509,35,2.033,36,1.336,37,0.694,40,0.392,42,0.962,56,0.562,57,0.657,58,1.335,71,0.616,84,3.604,88,0.926,90,0.53,92,1.83,104,0.582,110,1.001,113,0.93,115,1.243,117,1.243,118,2.262,125,0.542,127,0.747,129,0.547,133,0.707,135,0.486,136,0.564,138,0.525,142,0.624,143,1.652,147,0.747,154,1.071,155,1.614,161,2.777,165,0.77,168,0.603,172,2.379,183,0.876,188,0.69,191,0.45,195,0.721,196,0.915,236,0.503,239,0.554,251,1.063,252,1.376,253,0.77,263,0.566,271,1.43,272,0.647,275,1.083,279,0.535,286,0.675,289,0.882,293,0.726,301,0.479,319,1.578,335,0.678,341,0.678,349,0.621,350,0.644,356,0.624,357,1.237,402,1.129,406,1.023,431,1.776,441,0.716,451,0.594,455,1.083,468,0.56,470,2.242,482,1.31,486,3.115,502,1.356,508,0.682,517,0.686,549,0.591,580,1.756,603,0.711,604,0.644,608,1.122,630,1.318,656,0.651,684,1.536,686,2.362,690,1.327,695,0.578,698,1.608,706,1.904,719,0.657,730,0.849,746,0.896,751,0.908,752,0.596,754,0.509,786,0.627,859,0.716,873,0.764,907,2.173,932,2.011,943,0.777,968,2.015,980,0.882,1005,1.047,1011,2.849,1012,0.871,1066,0.635,1068,3.492,1076,1.024,1127,0.84,1195,0.698,1200,0.923,1348,0.939,1361,0.939,1388,0.998,1400,0.627,1461,1.188,1468,1.354,1483,1.389,1520,0.764,1524,0.798,1528,0.777,1530,0.939,1538,0.79,1540,0.939,1544,0.805,1620,0.79,1643,0.895,1735,0.632,1741,0.895,1758,6.324,1759,2.122,1764,1.052,1765,1.052,1767,1.052,1780,0.976,1783,0.882,1827,1.613,1942,1.344,1963,0.976,1996,1.683,2016,0.798,2045,0.882,2050,1.71,2067,0.998,2137,0.813,2177,0.58,2237,1.023,2336,0.895,2369,0.998,2422,0.711,2559,1.949,2588,0.998,2593,1.052,2619,0.783,2626,0.871,2636,0.686,2642,0.703,2682,1.052,2694,1.052,2837,1.052,2851,4.985,2926,1.052,3257,4.824,3287,1.808,3466,2.582,3471,2.582,3477,1.465,3506,0.731,3512,0.721,3624,1.087,3638,1.19,3639,1.19,3640,1.19,3647,1.19,3648,2.014,3649,1.19,3650,2.014,3651,1.19,3652,1.052,3653,1.087,3654,1.087,3655,1.19,3656,1.19,3657,1.19,3660,2.204,3661,1.19,3662,1.19,3663,1.19,3664,1.19,3665,1.19,3666,4.513,3667,4.513,3668,2.204,3669,2.204,3670,1.19,3671,1.19,3672,1.19,3673,1.19,3674,1.19,3675,1.19,3676,1.19,3677,1.19,3678,1.19,3679,1.19,3680,1.19,3681,1.19,3682,1.19,3683,1.19,3684,1.19,3755,0.84,3805,1.279,3806,1.279,3807,1.279,3808,1.279,3809,1.279,3810,1.279,3811,1.279,3812,1.279,3813,1.279,3814,1.279,3815,1.279,3816,1.279,3817,1.279,3818,1.279]],["component/247",[7,0.401]],["title/248-1",[402,17.184,1456,33.432]],["name/248-1",[]],["text/248-1",[]],["component/248-1",[]],["title/248-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/248-2",[]],["text/248-2",[]],["component/248-2",[]],["title/248-3",[8,18.856,150,32.262]],["name/248-3",[]],["text/248-3",[]],["component/248-3",[]],["title/248-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/248-4",[]],["text/248-4",[]],["component/248-4",[]],["title/248-5",[8,16.222,746,27.183,1005,22.733]],["name/248-5",[]],["text/248-5",[]],["component/248-5",[]],["title/248-6",[1255,32.348,1457,33.624]],["name/248-6",[]],["text/248-6",[]],["component/248-6",[]],["title/248",[161,13.854,968,30.686,1431,19.421,1647,23.953,1759,20.09,3027,29.233,3234,29.828,3685,29.828]],["name/248",[1431,0.513,1759,0.531,3685,0.788]],["text/248",[5,3.419,8,1.404,13,1.166,32,3.334,46,2.504,64,5.193,76,2.159,77,2.002,84,3.348,91,2.023,93,2.002,118,1.17,124,2.625,128,2.012,130,2.118,136,1.48,161,4.581,167,2.883,168,1.818,169,2.023,214,1.351,242,2.561,253,2.322,263,1.706,271,3.378,272,1.952,275,1.763,277,1.749,311,3.798,349,1.873,386,1.971,402,1.608,406,3.042,451,1.79,502,2.548,608,2.946,647,2.159,665,1.833,679,1.419,686,1.385,754,1.534,786,3.831,873,2.304,903,4.038,910,3.46,963,1.833,968,4.376,972,1.818,998,2.504,1005,1.22,1200,2.782,1431,1.915,1461,3.119,1647,3.811,1672,3.171,2191,3.171,2493,3.008,2619,2.362,3027,5.846,3033,2.698,3234,5.965,3450,2.383,3459,2.942,3685,4.746,3686,3.587,3687,3.587,3688,3.587,3689,3.587,3690,3.277,3691,3.277,3692,3.083,3693,3.083,3694,3.083,3695,3.587,3696,3.587,3697,3.587]],["component/248",[7,0.401]],["title/249-1",[402,17.184,1456,33.432]],["name/249-1",[]],["text/249-1",[]],["component/249-1",[]],["title/249-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/249-2",[]],["text/249-2",[]],["component/249-2",[]],["title/249-3",[1145,45.341,1483,35.06]],["name/249-3",[]],["text/249-3",[]],["component/249-3",[]],["title/249-4",[1091,43.832,1145,45.341]],["name/249-4",[]],["text/249-4",[]],["component/249-4",[]],["title/249-5",[88,20.111,468,31.469,532,44.832]],["name/249-5",[]],["text/249-5",[]],["component/249-5",[]],["title/249-6",[8,18.856,150,32.262]],["name/249-6",[]],["text/249-6",[]],["component/249-6",[]],["title/249-7",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/249-7",[]],["text/249-7",[]],["component/249-7",[]],["title/249-8",[36,25.454,88,17.646,148,19.348,161,22.344]],["name/249-8",[]],["text/249-8",[]],["component/249-8",[]],["title/249-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/249-9",[]],["text/249-9",[]],["component/249-9",[]],["title/249-10",[8,16.222,746,27.183,1005,22.733]],["name/249-10",[]],["text/249-10",[]],["component/249-10",[]],["title/249-11",[1255,32.348,1457,33.624]],["name/249-11",[]],["text/249-11",[]],["component/249-11",[]],["title/249",[161,13.854,968,30.686,1759,20.09,3092,44.672,3093,44.672,3094,31.263]],["name/249",[1759,0.531,3092,0.734,3093,0.734]],["text/249",[3,0.681,8,0.731,10,2.76,12,0.856,13,0.544,15,0.856,29,1.574,34,0.716,40,0.993,56,0.791,84,3.83,88,0.906,97,1.95,99,1.443,101,0.796,104,2.831,110,0.76,117,0.676,118,2.45,120,2.381,135,0.684,136,1.05,154,0.814,161,3.885,171,0.783,172,2.116,188,0.971,191,0.633,194,1.059,196,1.25,239,0.78,252,1.835,270,1.299,271,0.778,272,0.911,275,0.823,279,0.753,280,0.748,296,0.681,315,1.084,316,1.432,319,0.688,333,0.971,352,2.126,386,0.92,402,1.109,406,1.001,451,0.835,460,0.706,465,0.699,468,1.418,502,1.326,514,1.76,525,0.739,532,2.02,538,1.259,539,1.225,553,2.439,630,2.454,656,0.916,686,1.163,688,6.471,728,4.753,730,4.129,746,0.681,752,0.839,754,0.716,968,1.579,1005,0.569,1087,2.126,1091,0.944,1106,0.863,1107,0.882,1141,1.21,1142,1.259,1143,1.259,1145,4.382,1150,0.882,1151,4.082,1154,2.204,1169,2.835,1195,0.983,1381,1.259,1402,1.225,1434,0.934,1456,0.72,1461,0.903,1488,3.239,1489,1.373,1490,1.043,1491,2.47,1492,1.195,1493,2.47,1494,1.373,1495,2.47,1496,1.373,1498,1.113,1499,1.156,1524,1.123,1735,0.89,1759,2.267,1780,1.373,1827,1.225,1889,1.48,2244,1.53,2356,2.299,2455,1.278,3092,3.133,3093,3.828,3094,3.528,3095,1.592,3096,1.592,3097,1.592,3098,1.592,3099,1.592,3100,1.592,3101,2.863,3102,1.592,3103,1.48,3104,2.863,3105,1.592,3106,1.592,3107,1.592,3108,1.592,3109,1.592,3110,1.592,3111,1.592,3112,1.592,3113,1.592,3114,1.592,3115,1.48,3116,1.592,3506,1.028,3512,1.014,3755,1.182]],["component/249",[7,0.401]],["title/250-1",[402,17.184,1456,33.432]],["name/250-1",[]],["text/250-1",[]],["component/250-1",[]],["title/250-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/250-2",[]],["text/250-2",[]],["component/250-2",[]],["title/250-3",[8,18.856,150,32.262]],["name/250-3",[]],["text/250-3",[]],["component/250-3",[]],["title/250-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/250-4",[]],["text/250-4",[]],["component/250-4",[]],["title/250-5",[2177,45.248]],["name/250-5",[]],["text/250-5",[]],["component/250-5",[]],["title/250-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/250-6",[]],["text/250-6",[]],["component/250-6",[]],["title/250-7",[8,16.222,746,27.183,1005,22.733]],["name/250-7",[]],["text/250-7",[]],["component/250-7",[]],["title/250-8",[1255,32.348,1457,33.624]],["name/250-8",[]],["text/250-8",[]],["component/250-8",[]],["title/250",[1128,32.569,1558,47.283,1786,33.829]],["name/250",[1558,0.776,1786,0.798]],["text/250",[3,0.652,5,2.799,6,0.768,8,1.178,10,1.911,14,0.662,15,0.82,17,2.276,18,0.712,26,1.16,29,2.62,30,1.243,32,0.641,33,0.806,40,1.307,49,1.107,56,0.757,63,1.804,84,3.606,88,2.205,99,0.768,101,1.884,105,0.662,110,0.728,113,0.677,117,0.647,118,2.228,121,0.881,129,0.737,130,0.947,135,1.984,136,1.013,138,1.749,155,1.036,161,1.849,168,0.813,169,0.904,172,0.677,181,1.145,183,1.151,191,0.607,196,0.666,203,0.936,211,0.813,214,1.492,228,1.984,239,0.747,251,2.707,252,0.717,264,0.536,271,1.84,277,0.782,278,0.941,279,0.721,280,0.717,301,0.645,311,1.512,316,0.763,319,0.659,320,0.909,331,0.83,350,2.145,361,1.319,395,0.999,402,1.241,406,2.27,408,0.834,420,1.107,421,0.86,459,0.978,461,1.265,465,0.669,470,1.272,486,3.423,514,2.865,525,0.708,531,0.771,552,0.644,558,1.086,593,0.755,608,0.816,615,0.877,618,1.132,665,1.481,670,0.845,679,1.146,684,0.8,686,1.119,695,0.779,726,2.384,740,1.244,746,0.652,752,0.803,754,0.686,774,1.056,779,0.971,788,0.93,865,0.841,893,1.03,896,3.521,903,0.89,931,1.145,968,0.841,1005,0.545,1008,0.868,1017,1.075,1075,0.904,1076,1.84,1106,1.493,1107,1.526,1128,1.608,1150,2.557,1279,0.965,1390,0.959,1400,0.845,1434,0.895,1453,1.418,1461,0.864,1465,1.224,1469,1.022,1477,0.877,1483,1.787,1517,2.068,1524,1.075,1528,1.047,1537,1.224,1538,1.925,1543,1.265,1544,1.086,1546,1.289,1551,1.056,1555,1.875,1556,1.767,1558,4.579,1565,1.224,1590,1.224,1620,1.065,1726,2.328,1735,0.852,1741,1.206,1770,1.315,1787,2.429,1788,1.418,1789,1.345,1790,1.189,1794,1.265,1795,2.429,1796,1.345,1797,1.418,1798,1.345,1799,1.345,1800,1.345,1801,1.265,1802,1.265,1803,1.224,1804,1.345,1805,1.265,1806,1.289,1807,1.189,1808,1.224,1809,1.265,1810,1.418,1811,1.265,1812,1.345,1813,1.265,1815,2.561,2177,1.932,2211,1.244,2352,2.12,2613,1.289,2629,1.378,2636,0.925,2642,0.947,2736,1.289,3087,1.006,3117,1.378,3118,1.378,3119,1.378,3120,1.378,3121,1.524,3382,1.086,3477,1.065,3506,0.985,3512,0.971,3513,1.132,3514,1.159,3648,1.465,3650,2.646,3652,1.418,3653,2.646,3654,1.465,3699,1.604,3755,1.132,3819,1.724]],["component/250",[7,0.401]],["title/251-1",[402,17.184,1456,33.432]],["name/251-1",[]],["text/251-1",[]],["component/251-1",[]],["title/251-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/251-2",[]],["text/251-2",[]],["component/251-2",[]],["title/251-3",[8,18.856,150,32.262]],["name/251-3",[]],["text/251-3",[]],["component/251-3",[]],["title/251-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/251-4",[]],["text/251-4",[]],["component/251-4",[]],["title/251-5",[2177,45.248]],["name/251-5",[]],["text/251-5",[]],["component/251-5",[]],["title/251-6",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/251-6",[]],["text/251-6",[]],["component/251-6",[]],["title/251-7",[8,16.222,746,27.183,1005,22.733]],["name/251-7",[]],["text/251-7",[]],["component/251-7",[]],["title/251-8",[1255,32.348,1457,33.624]],["name/251-8",[]],["text/251-8",[]],["component/251-8",[]],["title/251",[1128,32.569,1786,33.829,1819,55.503]],["name/251",[1786,0.798,1819,0.911]],["text/251",[3,0.938,5,2.923,6,0.599,8,1.136,10,2.294,14,1.934,17,2.145,18,0.555,26,1.286,29,2.586,30,1.378,32,1.871,36,0.542,40,1.318,42,0.545,56,0.59,79,1.781,84,3.7,88,2.146,99,0.599,101,0.594,105,0.953,112,0.564,117,0.931,118,1.901,125,0.569,129,0.575,134,0.821,135,1.914,136,1.023,138,1.419,144,0.53,146,0.652,148,0.412,150,0.958,154,0.607,155,0.825,158,1.199,161,2.015,169,0.705,172,0.973,183,1.589,191,0.473,196,1.659,199,0.729,203,0.729,205,0.954,211,0.634,214,0.869,221,0.823,228,1.155,234,0.694,239,0.582,251,0.603,254,1.533,264,0.418,267,0.705,271,1.492,277,0.609,279,0.562,280,0.559,301,0.928,311,1.204,320,1.308,331,0.647,361,0.569,388,0.729,391,0.628,401,0.56,402,1.036,406,2.24,408,0.65,414,0.927,420,0.863,431,0.721,455,0.614,458,0.767,465,0.522,470,1.013,486,3.554,502,2.062,508,0.717,514,2.366,520,0.863,531,0.601,549,0.621,552,0.502,557,0.717,558,0.846,577,1.863,593,0.588,615,1.757,618,0.882,647,1.388,656,0.683,665,0.639,670,0.658,679,0.494,682,0.644,684,0.624,686,1.241,695,0.607,726,2.406,746,0.508,752,0.626,754,0.535,772,0.743,779,0.757,788,0.725,835,0.661,893,1.481,896,3.319,903,0.694,933,0.803,964,0.94,1005,0.425,1008,0.677,1075,0.705,1076,0.58,1106,1.189,1107,1.215,1125,1.481,1128,0.694,1139,0.816,1150,2.105,1168,0.914,1214,0.83,1287,0.79,1301,1.82,1352,1.048,1390,1.379,1434,0.697,1461,0.674,1469,0.796,1477,0.683,1483,0.564,1528,0.816,1538,0.83,1543,0.986,1544,1.562,1551,0.823,1555,1.493,1556,0.762,1558,1.294,1565,0.954,1585,2.08,1669,0.914,1726,1.854,1735,1.226,1741,0.94,1750,0.927,1759,0.69,1787,1.048,1790,0.927,1794,0.986,1798,1.048,1799,1.048,1800,1.048,1801,0.986,1802,0.986,1803,0.954,1804,1.048,1805,0.986,1807,0.927,1808,0.954,1809,0.986,1811,0.986,1812,1.048,1813,0.986,1819,5.69,1820,2.039,1821,2.535,1822,2.84,1823,2.694,1824,1.105,1825,1.105,1827,1.688,1831,1.105,1832,1.105,1838,1.105,1843,1.854,1844,1.105,1845,1.048,1846,0.903,1847,1.105,1848,1.105,1849,0.954,1851,1.934,1852,0.846,1853,1.105,2076,0.83,2177,1.567,2211,0.969,2613,1.004,2636,0.721,2642,0.738,2736,1.004,3087,0.784,3117,1.074,3118,1.074,3119,1.074,3120,1.074,3477,0.83,3506,0.767,3512,0.757,3700,3.213,3701,2.307,3702,1.25,3703,1.25,3704,1.25,3705,1.25,3706,1.25,3707,1.25,3708,1.25,3709,1.25,3710,1.25,3711,1.25,3712,1.25,3713,1.25,3714,1.25,3715,1.25,3755,0.882]],["component/251",[7,0.401]],["title/252-1",[402,17.184,1456,33.432]],["name/252-1",[]],["text/252-1",[]],["component/252-1",[]],["title/252-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/252-2",[]],["text/252-2",[]],["component/252-2",[]],["title/252-3",[8,18.856,150,32.262]],["name/252-3",[]],["text/252-3",[]],["component/252-3",[]],["title/252-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/252-4",[]],["text/252-4",[]],["component/252-4",[]],["title/252-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/252-5",[]],["text/252-5",[]],["component/252-5",[]],["title/252-6",[8,16.222,746,27.183,1005,22.733]],["name/252-6",[]],["text/252-6",[]],["component/252-6",[]],["title/252-7",[1255,32.348,1457,33.624]],["name/252-7",[]],["text/252-7",[]],["component/252-7",[]],["title/252",[2,24.457,64,47.596,402,9.484,3416,32.742,3450,44.297]],["name/252",[64,0.686,3416,0.734,3450,0.639]],["text/252",[5,3.4,8,1.393,10,1.398,12,1.815,13,1.154,15,1.815,32,3.315,40,1.171,64,6.503,84,3.42,104,1.739,112,1.602,118,1.158,136,1.469,154,1.726,155,1.27,161,3.906,169,2.003,185,2.382,196,1.474,239,1.655,242,2.536,271,3.355,272,1.933,308,2.923,402,1.598,406,2.757,414,2.634,464,2.181,465,2.396,502,1.564,531,2.759,608,1.808,647,2.138,656,1.942,672,2.319,679,1.405,686,2.79,752,1.779,754,2.456,758,2.599,786,3.806,903,4.011,993,1.982,1005,1.208,1066,1.896,1195,2.085,1287,2.245,1461,1.914,1483,1.602,1526,2.453,1527,2.453,1596,2.855,1735,1.888,2103,2.802,3033,2.671,3450,6.474,3451,3.053,3459,5.925,3460,4.934,3461,4.934,3506,2.181,3512,2.152,3571,2.913,3690,3.245,3691,3.245,3692,3.053,3693,3.053,3694,3.053,3716,3.552,3717,3.245,3718,5.245,3719,3.245,3720,3.245,3721,3.245,3722,3.245,3723,3.245,3724,3.245,3755,2.507]],["component/252",[7,0.401]],["title/253-1",[343,64.077]],["name/253-1",[]],["text/253-1",[]],["component/253-1",[]],["title/253-2",[192,33.622,402,14.783,690,40.238]],["name/253-2",[]],["text/253-2",[]],["component/253-2",[]],["title/253-3",[402,17.184,1129,38.042]],["name/253-3",[]],["text/253-3",[]],["component/253-3",[]],["title/253-4",[402,17.184,1128,43.146]],["name/253-4",[]],["text/253-4",[]],["component/253-4",[]],["title/253-5",[311,34.906,402,14.783,1609,39.979]],["name/253-5",[]],["text/253-5",[]],["component/253-5",[]],["title/253-6",[161,25.466,402,14.783,1759,36.93]],["name/253-6",[]],["text/253-6",[]],["component/253-6",[]],["title/253-7",[2,38.123,402,14.783,3450,44.422]],["name/253-7",[]],["text/253-7",[]],["component/253-7",[]],["title/253-8",[264,22.343,402,14.783,1936,41.347]],["name/253-8",[]],["text/253-8",[]],["component/253-8",[]],["title/253-9",[402,17.184,1040,44.562]],["name/253-9",[]],["text/253-9",[]],["component/253-9",[]],["title/253",[7,19.043,402,17.184]],["name/253",[631,1.45]],["text/253",[2,1.412,3,1.727,5,1.014,8,1.031,12,2.171,13,1.381,14,1.754,15,1.265,17,1.723,18,1.887,20,1.375,23,1.107,26,2.65,29,1.629,34,2.387,40,0.817,52,1.954,56,2.007,64,1.767,71,1.281,77,1.382,84,1.532,88,0.745,98,1.553,104,1.212,105,1.754,110,1.124,117,0.999,118,0.807,125,1.935,128,1.389,134,1.987,135,1.736,136,1.087,144,1.05,146,2.914,148,1.84,150,1.028,151,2.823,155,0.885,158,1.287,160,1.316,161,2.837,162,1.728,163,2.103,178,1.265,183,1.689,185,1.66,192,2.137,196,1.028,221,1.63,224,1.212,248,1.226,252,1.107,255,2.423,264,2.212,275,2.087,282,1.444,286,1.404,296,1.007,297,1.354,308,2.257,311,3.455,343,1.71,391,1.245,401,1.11,402,2.691,465,1.773,514,1.959,531,1.19,547,1.056,548,1.59,620,1.428,643,1.953,647,1.49,665,1.265,678,1.412,679,0.979,680,1.235,686,0.956,690,2.557,698,1.293,719,2.347,728,2.323,729,1.531,865,2.228,906,2.189,931,1.767,972,1.255,1040,2.436,1128,2.359,1129,4.492,1306,1.953,1431,1.322,1468,1.52,1477,1.354,1484,3.07,1555,2.751,1558,1.389,1609,3.957,1610,1.542,1692,1.99,1755,1.836,1758,1.531,1759,3.655,1779,1.767,1819,1.63,1821,1.953,1936,1.531,1937,2.189,1940,2.189,1942,1.51,1943,1.99,1944,3.756,1945,1.577,1946,1.953,2234,3.195,2477,1.789,2673,1.862,2934,1.92,3092,1.89,3093,1.89,3122,2.353,3123,2.353,3124,2.353,3125,2.353,3126,2.353,3228,1.89,3450,3.708,3571,3.484,3623,2.03,3685,2.03,3820,2.662]],["component/253",[7,0.401]],["title/254-1",[402,17.184,1456,33.432]],["name/254-1",[]],["text/254-1",[]],["component/254-1",[]],["title/254-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/254-2",[]],["text/254-2",[]],["component/254-2",[]],["title/254-3",[8,18.856,150,32.262]],["name/254-3",[]],["text/254-3",[]],["component/254-3",[]],["title/254-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/254-4",[]],["text/254-4",[]],["component/254-4",[]],["title/254-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/254-5",[]],["text/254-5",[]],["component/254-5",[]],["title/254-6",[8,16.222,746,27.183,1005,22.733]],["name/254-6",[]],["text/254-6",[]],["component/254-6",[]],["title/254-7",[1255,32.348,1457,33.624]],["name/254-7",[]],["text/254-7",[]],["component/254-7",[]],["title/254",[2,24.457,402,9.484,2934,51.712,3416,32.742,3450,44.297]],["name/254",[2934,0.745,3416,0.734,3450,0.639]],["text/254",[5,2.808,8,0.633,10,1.028,12,1.334,13,0.848,15,1.334,32,3.566,40,0.861,84,3.513,104,1.278,111,1.407,112,1.178,118,0.851,122,1.704,136,1.967,154,1.268,155,0.933,161,3.735,166,3.428,169,2.507,185,1.751,196,1.084,239,1.216,242,1.864,248,1.292,271,2.696,272,1.421,277,2.831,301,2.337,308,2.348,402,1.516,406,3.375,414,1.936,426,5.304,464,1.603,465,1.855,478,1.936,502,1.957,525,1.153,531,2.137,608,1.329,647,1.571,656,1.428,670,1.375,672,1.704,679,1.033,686,2.242,712,3.616,752,1.308,754,1.902,758,1.91,786,5.165,903,5.445,993,1.457,1005,0.888,1066,1.394,1129,2.842,1195,1.532,1287,1.65,1461,1.407,1483,1.178,1596,2.098,1735,1.388,2103,2.06,2109,1.936,2934,5.317,3033,1.963,3450,6.516,3451,2.244,3459,4.761,3460,3.821,3461,3.821,3506,1.603,3512,1.582,3571,2.141,3692,2.244,3693,2.244,3694,2.244,3717,2.385,3718,4.061,3719,2.385,3720,2.385,3721,4.061,3722,2.385,3723,2.385,3724,2.385,3725,2.611,3726,2.611,3727,2.611,3728,2.611,3729,2.611,3730,5.806,3731,2.611,3732,2.611,3755,1.842]],["component/254",[7,0.401]],["title/255-1",[343,64.077]],["name/255-1",[]],["text/255-1",[]],["component/255-1",[]],["title/255-2",[331,40.225,341,44.313]],["name/255-2",[]],["text/255-2",[]],["component/255-2",[]],["title/255-3",[301,37.342]],["name/255-3",[]],["text/255-3",[]],["component/255-3",[]],["title/255-4",[331,48.023]],["name/255-4",[]],["text/255-4",[]],["component/255-4",[]],["title/255-5",[3087,58.217]],["name/255-5",[]],["text/255-5",[]],["component/255-5",[]],["title/255-6",[191,35.099]],["name/255-6",[]],["text/255-6",[]],["component/255-6",[]],["title/255-7",[361,42.254]],["name/255-7",[]],["text/255-7",[]],["component/255-7",[]],["title/255-8",[33,46.658]],["name/255-8",[]],["text/255-8",[]],["component/255-8",[]],["title/255-9",[3379,79.747]],["name/255-9",[]],["text/255-9",[]],["component/255-9",[]],["title/255-10",[1279,55.838]],["name/255-10",[]],["text/255-10",[]],["component/255-10",[]],["title/255-11",[3382,62.807]],["name/255-11",[]],["text/255-11",[]],["component/255-11",[]],["title/255",[26,31.122,2177,37.901]],["name/255",[2177,1.205]],["text/255",[4,3.12,7,0.612,8,2.18,15,0.697,17,2.026,23,1.117,26,4.233,29,1.327,33,1.74,34,0.583,40,0.824,71,1.294,76,3.007,77,0.761,84,1.542,92,0.81,104,1.223,105,2.321,111,0.735,113,1.054,117,0.55,118,0.445,121,0.749,125,1.95,129,1.591,133,0.81,138,1.528,139,1.227,143,1.341,150,0.566,155,1.237,161,0.519,163,0.675,172,1.807,183,0.542,189,3.12,191,2.685,194,0.862,196,0.566,199,0.795,206,0.952,214,0.941,215,6.206,224,0.667,248,0.675,262,0.777,264,2.225,277,4.695,293,0.832,301,2.68,308,2.694,311,0.712,322,5.847,331,2.217,341,0.777,348,0.876,351,3.465,357,1.402,361,2.81,375,0.869,391,1.257,396,1.172,402,0.301,403,0.962,405,1.172,406,1.423,441,0.821,442,0.952,446,0.678,465,1.043,470,1.097,475,2.974,492,2.342,502,0.6,514,0.479,523,0.8,547,2.131,557,0.782,597,0.757,621,0.973,675,0.89,698,0.712,768,0.985,769,1.296,779,0.826,784,1.118,786,0.718,859,0.821,861,0.769,862,0.973,865,0.715,867,1.618,890,3.068,910,0.815,943,0.89,968,0.715,972,0.691,993,0.761,1008,4.732,1011,1.011,1031,0.962,1053,1.66,1066,0.728,1128,0.757,1129,0.667,1132,1.142,1133,3.183,1139,1.632,1145,2.018,1219,0.898,1255,0.567,1279,4.917,1402,1.829,1456,1.488,1475,0.942,1477,0.746,1483,1.127,1551,0.898,1659,1.908,1942,0.832,2054,1.458,2076,0.906,2150,1.143,2177,4.129,2243,1.296,2249,2.209,2374,1.011,2419,0.998,2468,3.942,2485,1.205,2562,2.683,2619,2.278,2621,2.095,2636,0.786,2685,1.143,2847,1.143,2890,1.143,3043,1.784,3087,2.171,3129,0.862,3355,2.974,3357,2.148,3358,2.148,3359,2.148,3361,3.512,3364,1.172,3376,3.913,3378,2.283,3379,2.148,3380,3.161,3382,0.923,3385,1.246,3386,1.246,3387,2.283,3388,1.246,3389,1.246,3390,1.246,3391,1.172,3392,1.246,3393,2.283,3397,1.246,3398,2.283,3399,1.172,3400,1.172,3402,1.246,3405,1.246,3406,2.283,3407,1.246,3408,1.246,3409,1.246,3413,1.118,3527,1.172,3733,2.499,3734,2.499,3735,1.363,3736,1.363,3737,1.363,3738,1.296]],["component/255",[7,0.401]],["title/256-1",[402,17.184,1456,33.432]],["name/256-1",[]],["text/256-1",[]],["component/256-1",[]],["title/256-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/256-2",[]],["text/256-2",[]],["component/256-2",[]],["title/256-3",[8,18.856,150,32.262]],["name/256-3",[]],["text/256-3",[]],["component/256-3",[]],["title/256-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/256-4",[]],["text/256-4",[]],["component/256-4",[]],["title/256-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/256-5",[]],["text/256-5",[]],["component/256-5",[]],["title/256-6",[8,16.222,746,27.183,1005,22.733]],["name/256-6",[]],["text/256-6",[]],["component/256-6",[]],["title/256-7",[1255,32.348,1457,33.624]],["name/256-7",[]],["text/256-7",[]],["component/256-7",[]],["title/256",[23,26.157,40,11.996,264,19.556,547,15.516,1936,22.493,2073,27.766,2199,26.615]],["name/256",[23,0.329,264,0.246,2073,0.562,2199,0.539]],["text/256",[23,5.362,40,3.956,117,4.275,134,2.382,136,1.712,144,2.838,252,4.736,264,2.236,267,3.774,268,7.019,401,3,402,1.479,459,4.081,484,5.987,642,5.19,681,4.406,683,3.509,1456,2.878,1472,3.881,1490,4.168,1936,4.138,2199,8.778,2234,6.954,3127,5.751]],["component/256",[7,0.401]],["title/257-1",[402,17.184,1456,33.432]],["name/257-1",[]],["text/257-1",[]],["component/257-1",[]],["title/257-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/257-2",[]],["text/257-2",[]],["component/257-2",[]],["title/257-3",[8,18.856,150,32.262]],["name/257-3",[]],["text/257-3",[]],["component/257-3",[]],["title/257-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/257-4",[]],["text/257-4",[]],["component/257-4",[]],["title/257-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/257-5",[]],["text/257-5",[]],["component/257-5",[]],["title/257-6",[8,16.222,746,27.183,1005,22.733]],["name/257-6",[]],["text/257-6",[]],["component/257-6",[]],["title/257-7",[1255,32.348,1457,33.624]],["name/257-7",[]],["text/257-7",[]],["component/257-7",[]],["title/257",[13,21.665,14,17.712,105,17.712,264,22.28,1936,26.525]],["name/257",[13,0.312,14,0.397,264,0.321]],["text/257",[13,3.774,14,4.796,23,3.106,40,2.292,117,4.361,134,2.474,136,1.778,144,2.948,252,4.831,264,2.322,267,3.92,268,7.132,401,3.116,402,1.537,459,4.238,484,6.145,642,5.39,681,4.577,683,3.644,1456,2.99,1472,4.031,1490,4.329,1936,4.298,2199,5.085,2234,7.138,3127,5.973]],["component/257",[7,0.401]],["title/258-1",[406,25.824,694,45.892]],["name/258-1",[]],["text/258-1",[]],["component/258-1",[]],["title/258-2",[88,27.909]],["name/258-2",[]],["text/258-2",[]],["component/258-2",[]],["title/258-3",[30,28.681,466,37.709,2624,47.184]],["name/258-3",[]],["text/258-3",[]],["component/258-3",[]],["title/258-4",[134,23.806,264,22.343,361,30.449]],["name/258-4",[]],["text/258-4",[]],["component/258-4",[]],["title/258-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/258-5",[]],["text/258-5",[]],["component/258-5",[]],["title/258-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/258-6",[]],["text/258-6",[]],["component/258-6",[]],["title/258-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/258-7",[]],["text/258-7",[]],["component/258-7",[]],["title/258-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/258-8",[]],["text/258-8",[]],["component/258-8",[]],["title/258-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/258-9",[]],["text/258-9",[]],["component/258-9",[]],["title/258-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/258-10",[]],["text/258-10",[]],["component/258-10",[]],["title/258-11",[134,23.806,466,37.709,2627,51.038]],["name/258-11",[]],["text/258-11",[]],["component/258-11",[]],["title/258-12",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/258-12",[]],["text/258-12",[]],["component/258-12",[]],["title/258-13",[32,26.708,267,37.709,466,37.709]],["name/258-13",[]],["text/258-13",[]],["component/258-13",[]],["title/258",[129,35.736,470,34.116]],["name/258",[129,0.636,470,0.607]],["text/258",[0,0.667,3,0.537,4,1.348,7,0.595,8,0.32,15,0.675,17,0.984,18,0.587,23,1.867,24,0.702,26,1.673,29,1.292,30,2.094,31,0.709,32,1.669,34,1.787,36,0.573,40,0.801,45,0.587,52,1.116,54,3.537,79,1.082,84,2.496,88,1.256,91,0.745,93,0.737,101,1.602,105,1.002,111,0.712,117,0.979,118,2.623,125,0.602,127,0.829,129,3.548,134,3.725,143,5.38,148,0.801,153,0.967,154,0.642,155,0.472,161,1.591,163,0.654,166,2.467,170,1.442,171,2.57,172,1.762,180,1.442,183,0.525,188,0.766,196,1.398,199,0.771,206,0.922,214,2.459,224,0.647,239,0.615,248,1.202,249,0.684,255,1.384,264,2.328,271,0.613,277,2.037,279,0.594,280,1.085,288,2.657,289,1.8,292,1.296,301,3.566,308,0.534,311,2.181,316,0.628,348,0.848,350,0.715,351,1.845,355,0.842,361,3.173,374,0.943,377,1.743,378,1.643,386,0.726,401,1.088,402,0.745,428,1.915,446,0.656,455,1.193,466,1.369,468,0.622,470,3.66,482,0.785,502,0.582,513,1.042,514,0.464,517,0.762,531,0.635,545,0.878,547,2.082,553,0.785,593,0.622,597,0.733,620,0.762,637,1.024,649,1.008,668,0.675,670,0.696,673,0.644,679,1.332,686,0.51,694,1.433,719,1.341,734,0.912,752,0.662,760,0.886,786,1.774,788,0.766,790,0.719,850,0.912,853,1.042,862,0.943,865,1.766,900,3.851,943,0.862,967,1.48,972,0.67,984,0.811,1074,1.024,1076,0.613,1101,4.662,1128,0.733,1129,0.647,1135,1.024,1136,2.602,1211,1.559,1282,4.135,1461,0.712,1483,1.884,1609,0.79,1612,0.757,1620,0.878,1625,0.943,1643,1.826,1647,0.87,1727,1.659,1735,0.702,1759,0.73,1779,0.943,1784,1.062,1786,0.762,1852,0.894,1950,1.694,2018,2.302,2042,0.87,2103,1.042,2225,1.108,2257,1.108,2300,1.108,2379,1.062,2552,1.062,2619,0.87,2625,4.609,2626,3.571,2627,1.008,2630,2.571,2634,1.024,2635,2.895,2636,2.815,2637,5.613,2638,3.59,2639,2.895,2641,1.135,2642,0.78,2643,1.135,2644,1.135,2645,2.086,2647,1.083,2648,1.135,2649,1.135,2650,1.135,2651,1.135,2652,2.086,2653,1.135,2654,2.086,2655,1.135,2656,1.135,2657,1.135,2658,1.042,2663,2.762,2664,1.135,2665,2.086,2666,1.135,3128,1.256,3506,0.811,3512,0.8,3755,0.932]],["component/258",[7,0.401]]],"invertedIndex":[["",{"_index":84,"title":{"12":{},"100":{},"104":{},"156":{},"222":{},"2-7":{},"4-2":{},"4-3":{},"4-6":{},"7-2":{},"8-2":{},"22-1":{},"22-5":{},"25-2":{},"26-2":{},"27-2":{},"28-1":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"32-10":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"41-7":{},"43-2":{},"43-3":{},"43-6":{},"46-2":{},"47-2":{},"58-1":{},"58-5":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-1":{},"65-2":{},"66-2":{},"67-2":{},"68-10":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"88-2":{},"91-2":{},"91-3":{},"91-6":{},"94-4":{},"94-14":{},"96-4":{},"98-12":{},"102-1":{},"108-1":{},"108-2":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-1":{},"114-2":{},"115-2":{},"116-2":{},"117-10":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"128-3":{},"141-2":{},"145-2":{},"145-3":{},"145-6":{},"148-4":{},"148-14":{},"151-4":{},"169-1":{},"169-2":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-1":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"194-3":{},"207-2":{},"211-2":{},"211-3":{},"211-6":{},"214-4":{},"214-14":{},"217-4":{},"235-1":{},"235-2":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-1":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"252-2":{},"254-2":{},"256-2":{},"257-2":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"8":{},"13":{},"14":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"24":{},"25":{},"26":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"47":{},"49":{},"50":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"87":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"104":{},"105":{},"106":{},"108":{},"109":{},"110":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"140":{},"141":{},"142":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"206":{},"207":{},"208":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["0",{"_index":1963,"title":{},"name":{},"text":{"39":{},"75":{},"98":{},"154":{},"181":{},"220":{},"236":{},"247":{}},"component":{}}],["0.0.0.0/0",{"_index":359,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["0.1.0",{"_index":2139,"title":{"80-21":{},"133-21":{},"199-21":{}},"name":{},"text":{},"component":{}}],["0.1.x",{"_index":256,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"77":{},"130":{},"196":{}},"component":{}}],["0.10",{"_index":3794,"title":{},"name":{},"text":{"240":{}},"component":{}}],["0.10.2",{"_index":2168,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["0.11.0",{"_index":2152,"title":{},"name":{},"text":{"80":{},"94":{},"133":{},"148":{},"199":{},"214":{}},"component":{}}],["0.12",{"_index":3786,"title":{},"name":{},"text":{"240":{}},"component":{}}],["0.13.1",{"_index":2062,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["0.7.x",{"_index":3577,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["0.8",{"_index":257,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"130":{},"196":{},"240":{}},"component":{}}],["0.9.1",{"_index":259,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"130":{},"196":{}},"component":{}}],["0.9.3",{"_index":261,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"80":{},"130":{},"133":{},"196":{},"199":{}},"component":{}}],["0.9.4",{"_index":2202,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["0.9.x",{"_index":3770,"title":{},"name":{},"text":{"240":{}},"component":{}}],["04",{"_index":3481,"title":{},"name":{},"text":{"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["1",{"_index":91,"title":{"2-15":{},"2-37":{},"2-47":{},"41-15":{},"41-37":{},"41-47":{},"127-2":{},"193-2":{}},"name":{},"text":{"3":{},"6":{},"20":{},"22":{},"32":{},"42":{},"45":{},"56":{},"58":{},"68":{},"87":{},"90":{},"96":{},"98":{},"100":{},"101":{},"109":{},"117":{},"126":{},"140":{},"144":{},"151":{},"154":{},"156":{},"157":{},"160":{},"170":{},"182":{},"192":{},"206":{},"210":{},"217":{},"220":{},"222":{},"223":{},"226":{},"234":{},"236":{},"248":{},"258":{}},"component":{}}],["1.0",{"_index":2281,"title":{"83-14":{},"136-14":{},"202-14":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["1.0.0",{"_index":978,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"153":{},"217":{},"219":{}},"component":{}}],["1.0.1",{"_index":3514,"title":{},"name":{},"text":{"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"180":{},"184":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"246":{},"250":{}},"component":{}}],["1.0.2",{"_index":1746,"title":{},"name":{},"text":{"32":{},"68":{}},"component":{}}],["1.0.x",{"_index":258,"title":{"80-20":{},"80-21":{},"133-20":{},"133-21":{},"199-20":{},"199-21":{}},"name":{},"text":{"2":{},"41":{},"77":{},"80":{},"130":{},"133":{},"196":{},"199":{}},"component":{}}],["1.1",{"_index":2279,"title":{"83-13":{},"136-13":{},"202-13":{}},"name":{},"text":{},"component":{}}],["1.1.2",{"_index":3091,"title":{},"name":{},"text":{"117":{}},"component":{}}],["1.1.6",{"_index":2978,"title":{},"name":{},"text":{"107":{}},"component":{}}],["1.1.x",{"_index":260,"title":{"23-1":{},"59-1":{},"80-18":{},"80-20":{},"133-18":{},"133-20":{},"199-18":{},"199-20":{}},"name":{},"text":{"2":{},"41":{},"77":{},"80":{},"130":{},"133":{},"196":{},"199":{}},"component":{}}],["1.14.2",{"_index":2975,"title":{},"name":{},"text":{"103":{}},"component":{}}],["1.2",{"_index":2277,"title":{"83-12":{},"136-12":{},"202-12":{}},"name":{},"text":{},"component":{}}],["1.2.2",{"_index":2061,"title":{},"name":{},"text":{"77":{},"79":{},"130":{},"132":{},"196":{},"198":{}},"component":{}}],["1.2.x",{"_index":2063,"title":{"80-10":{},"80-18":{},"133-10":{},"133-18":{},"199-10":{},"199-18":{}},"name":{},"text":{"77":{},"80":{},"94":{},"130":{},"133":{},"148":{},"160":{},"196":{},"199":{},"214":{},"226":{}},"component":{}}],["1.21.x",{"_index":3448,"title":{},"name":{},"text":{"159":{}},"component":{}}],["1.23.0",{"_index":3742,"title":{},"name":{},"text":{"225":{}},"component":{}}],["1.25.0",{"_index":2977,"title":{},"name":{},"text":{"103":{}},"component":{}}],["1.25.3.1",{"_index":3509,"title":{},"name":{},"text":{"170":{}},"component":{}}],["1.25.3.2",{"_index":3754,"title":{},"name":{},"text":{"236":{}},"component":{}}],["1.29.0",{"_index":3635,"title":{},"name":{},"text":{"180":{}},"component":{}}],["1.31.ga",{"_index":565,"title":{},"name":{},"text":{"3":{},"42":{}},"component":{}}],["1.38.0",{"_index":3804,"title":{},"name":{},"text":{"246":{}},"component":{}}],["1.4.4.releas",{"_index":3734,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["1.4.6",{"_index":3455,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["1.5",{"_index":2040,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["1.54.x",{"_index":3449,"title":{},"name":{},"text":{"159":{}},"component":{}}],["1.6",{"_index":2245,"title":{},"name":{},"text":{"81":{}},"component":{}}],["1.6.0",{"_index":3621,"title":{},"name":{},"text":{"179":{},"245":{}},"component":{}}],["1.60.1",{"_index":3743,"title":{},"name":{},"text":{"225":{}},"component":{}}],["1.75",{"_index":3497,"title":{},"name":{},"text":{"167":{}},"component":{}}],["1.75.0",{"_index":3576,"title":{},"name":{},"text":{"174":{}},"component":{}}],["1.75.x",{"_index":3498,"title":{},"name":{},"text":{"167":{},"174":{},"240":{}},"component":{}}],["1.79",{"_index":3745,"title":{},"name":{},"text":{"233":{}},"component":{}}],["1.79.x",{"_index":3746,"title":{},"name":{},"text":{"233":{}},"component":{}}],["1.8.2",{"_index":3503,"title":{},"name":{},"text":{"168":{},"234":{}},"component":{}}],["1.81.0",{"_index":3778,"title":{},"name":{},"text":{"240":{}},"component":{}}],["1.81.x",{"_index":3769,"title":{},"name":{},"text":{"240":{}},"component":{}}],["10",{"_index":590,"title":{"105":{}},"name":{},"text":{"4":{},"12":{},"30":{},"37":{},"43":{},"64":{},"73":{},"91":{},"145":{},"154":{},"211":{},"220":{}},"component":{}}],["10.0.0",{"_index":3076,"title":{},"name":{},"text":{"114":{}},"component":{}}],["100",{"_index":635,"title":{},"name":{},"text":{"5":{},"12":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["1001",{"_index":3675,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["100m",{"_index":1988,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["10m",{"_index":3265,"title":{},"name":{},"text":{"151":{},"155":{},"217":{},"221":{}},"component":{}}],["10mi",{"_index":2466,"title":{},"name":{},"text":{"96":{},"99":{}},"component":{}}],["11",{"_index":2808,"title":{},"name":{},"text":{"100":{},"156":{},"161":{},"172":{},"222":{},"227":{},"234":{},"238":{}},"component":{}}],["12",{"_index":3492,"title":{},"name":{},"text":{"166":{},"232":{}},"component":{}}],["12.0.0",{"_index":3619,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["120",{"_index":3429,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["120x120.png",{"_index":1894,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["123",{"_index":975,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["1234",{"_index":2692,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["14",{"_index":1547,"title":{},"name":{},"text":{"28":{},"38":{},"65":{},"74":{}},"component":{}}],["14.0.13",{"_index":3078,"title":{},"name":{},"text":{"114":{}},"component":{}}],["144x144.png",{"_index":1904,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["15",{"_index":2571,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["150x150.png",{"_index":1906,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["152x152.png",{"_index":1895,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["153",{"_index":999,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["16",{"_index":1769,"title":{"162":{},"228":{}},"name":{},"text":{"34":{},"70":{},"162":{},"228":{}},"component":{}}],["16.0.0",{"_index":3607,"title":{},"name":{},"text":{"176":{},"242":{}},"component":{}}],["16.4.0",{"_index":1873,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["16gb",{"_index":2031,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["16x16.png",{"_index":1901,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["17",{"_index":3462,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"234":{},"238":{}},"component":{}}],["18",{"_index":3482,"title":{"163":{},"229":{}},"name":{},"text":{"163":{},"229":{}},"component":{}}],["18.0.1",{"_index":3698,"title":{},"name":{},"text":{"184":{}},"component":{}}],["18.2.1",{"_index":3819,"title":{},"name":{},"text":{"250":{}},"component":{}}],["180x180.png",{"_index":1896,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["192.168.56.1",{"_index":370,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["192.168.56.101",{"_index":373,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["192.168.56.31",{"_index":365,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["192x192.png",{"_index":1890,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["1gi",{"_index":1992,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["2",{"_index":93,"title":{"2-16":{},"2-38":{},"2-48":{},"41-16":{},"41-38":{},"41-48":{},"83-11":{},"127-3":{},"136-11":{},"193-3":{},"202-11":{}},"name":{"79":{},"132":{},"198":{}},"text":{"6":{},"14":{},"16":{},"20":{},"45":{},"50":{},"52":{},"56":{},"79":{},"83":{},"95":{},"98":{},"100":{},"101":{},"109":{},"126":{},"127":{},"132":{},"136":{},"149":{},"154":{},"156":{},"157":{},"170":{},"182":{},"192":{},"193":{},"198":{},"202":{},"215":{},"220":{},"222":{},"223":{},"236":{},"248":{},"258":{}},"component":{}}],["2.0",{"_index":1289,"title":{},"name":{},"text":{"21":{},"41":{},"57":{},"78":{},"94":{},"131":{},"148":{},"197":{},"214":{}},"component":{}}],["2.0.4",{"_index":2023,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["2.1.0",{"_index":2014,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["2.1.16.releas",{"_index":3383,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["2.11.2",{"_index":563,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["2.13",{"_index":2044,"title":{},"name":{},"text":{"77":{}},"component":{}}],["2.13.1",{"_index":3057,"title":{},"name":{},"text":{"113":{},"175":{}},"component":{}}],["2.13.10",{"_index":3799,"title":{},"name":{},"text":{"241":{}},"component":{}}],["2.13.2",{"_index":2038,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["2.6,6",{"_index":1928,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["2.6.2",{"_index":2021,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["2.7.5",{"_index":3452,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["2.8.0",{"_index":3044,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["2.8.2",{"_index":564,"title":{},"name":{},"text":{"3":{},"42":{},"175":{},"241":{}},"component":{}}],["2.acm",{"_index":2145,"title":{},"name":{},"text":{"80":{},"83":{},"133":{},"136":{},"199":{},"202":{}},"component":{}}],["2.x",{"_index":1253,"title":{"94":{},"148":{},"214":{},"80-10":{},"133-10":{},"199-10":{}},"name":{},"text":{"20":{},"56":{},"77":{},"79":{},"80":{},"81":{},"83":{},"94":{},"95":{},"96":{},"101":{},"130":{},"132":{},"133":{},"136":{},"148":{},"149":{},"151":{},"157":{},"196":{},"198":{},"199":{},"202":{},"214":{},"215":{},"217":{},"223":{}},"component":{}}],["20",{"_index":3485,"title":{"164":{},"230":{}},"name":{},"text":{"164":{},"176":{},"181":{},"230":{}},"component":{}}],["20.10.0",{"_index":3608,"title":{},"name":{},"text":{"176":{}},"component":{}}],["200",{"_index":2854,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["2018",{"_index":2283,"title":{"83-14":{},"136-14":{},"202-14":{}},"name":{},"text":{},"component":{}}],["2019",{"_index":1715,"title":{"83-11":{},"83-12":{},"83-13":{},"136-11":{},"136-12":{},"136-13":{},"202-11":{},"202-12":{},"202-13":{}},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["2020",{"_index":2275,"title":{"83-9":{},"83-10":{},"136-10":{},"202-10":{}},"name":{},"text":{},"component":{}}],["2021",{"_index":3180,"title":{"136-9":{},"202-9":{}},"name":{},"text":{"166":{},"167":{},"232":{},"233":{}},"component":{}}],["2022",{"_index":3179,"title":{"136-8":{},"202-8":{}},"name":{},"text":{},"component":{}}],["2024",{"_index":3480,"title":{},"name":{},"text":{"162":{},"228":{}},"component":{}}],["2025",{"_index":3484,"title":{},"name":{},"text":{"163":{},"229":{}},"component":{}}],["2026",{"_index":3487,"title":{},"name":{},"text":{"164":{},"230":{}},"component":{}}],["2027",{"_index":3489,"title":{},"name":{},"text":{"165":{},"231":{}},"component":{}}],["21",{"_index":3463,"title":{"172-14":{},"238-14":{}},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["22",{"_index":1741,"title":{"165":{},"231":{}},"name":{},"text":{"32":{},"68":{},"117":{},"165":{},"184":{},"185":{},"231":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["22.4.1",{"_index":3803,"title":{},"name":{},"text":{"242":{}},"component":{}}],["23",{"_index":3493,"title":{},"name":{},"text":{"166":{},"232":{}},"component":{}}],["2306",{"_index":3453,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["2306:latest",{"_index":3457,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["26.0.0",{"_index":3074,"title":{},"name":{},"text":{"114":{}},"component":{}}],["262144",{"_index":3163,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["28",{"_index":1872,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["29.7.0",{"_index":3605,"title":{},"name":{},"text":{"176":{},"242":{}},"component":{}}],["2gi",{"_index":2465,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["2nd",{"_index":1522,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["2x",{"_index":2376,"title":{},"name":{"94":{},"148":{},"214":{}},"text":{},"component":{}}],["3",{"_index":94,"title":{"2-17":{},"2-39":{},"2-49":{},"41-17":{},"41-39":{},"41-49":{},"83-10":{},"136-10":{},"202-10":{}},"name":{"79":{},"132":{},"198":{}},"text":{"20":{},"36":{},"56":{},"72":{},"79":{},"83":{},"95":{},"101":{},"109":{},"122":{},"127":{},"132":{},"136":{},"149":{},"150":{},"154":{},"157":{},"161":{},"170":{},"172":{},"193":{},"198":{},"202":{},"215":{},"216":{},"220":{},"223":{},"227":{},"236":{},"238":{}},"component":{}}],["3.0.0",{"_index":3531,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["3.0.14",{"_index":3618,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["3.10",{"_index":568,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["3.11",{"_index":567,"title":{},"name":{},"text":{"3":{},"42":{},"83":{},"90":{},"127":{},"130":{},"136":{},"144":{},"150":{},"166":{},"173":{},"178":{},"180":{},"193":{},"196":{},"202":{},"210":{},"216":{},"232":{},"239":{},"244":{}},"component":{}}],["3.12",{"_index":3744,"title":{},"name":{},"text":{"232":{},"239":{},"246":{}},"component":{}}],["3.2",{"_index":3609,"title":{},"name":{},"text":{"177":{},"243":{}},"component":{}}],["3.2.0",{"_index":3516,"title":{},"name":{},"text":{"172":{}},"component":{}}],["3.2.2",{"_index":3454,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["3.3.3",{"_index":3756,"title":{},"name":{},"text":{"238":{}},"component":{}}],["3.4.0",{"_index":1884,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["3.4.4",{"_index":219,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["3.6",{"_index":1617,"title":{},"name":{},"text":{"31":{},"32":{},"67":{},"68":{},"166":{},"232":{}},"component":{}}],["3.8",{"_index":2398,"title":{"95-10":{},"149-10":{},"215-10":{}},"name":{},"text":{"95":{},"106":{},"112":{},"116":{},"117":{},"149":{},"166":{},"173":{},"215":{},"232":{},"239":{}},"component":{}}],["3.9",{"_index":3490,"title":{},"name":{},"text":{"166":{},"173":{},"232":{},"239":{}},"component":{}}],["3.9.5",{"_index":3075,"title":{},"name":{},"text":{"114":{}},"component":{}}],["3.acm",{"_index":2085,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["3.custom",{"_index":2291,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["3.x",{"_index":2060,"title":{"95":{},"149":{},"215":{}},"name":{},"text":{"77":{},"79":{},"80":{},"83":{},"95":{},"96":{},"98":{},"100":{},"130":{},"132":{},"133":{},"136":{},"149":{},"150":{},"151":{},"156":{},"196":{},"198":{},"199":{},"202":{},"215":{},"216":{},"217":{},"222":{}},"component":{}}],["30",{"_index":207,"title":{},"name":{},"text":{"2":{},"41":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["300m",{"_index":3266,"title":{},"name":{},"text":{"151":{},"155":{},"217":{},"221":{}},"component":{}}],["300mi",{"_index":2467,"title":{},"name":{},"text":{"96":{},"99":{}},"component":{}}],["31",{"_index":1814,"title":{},"name":{},"text":{"35":{},"71":{}},"component":{}}],["32",{"_index":175,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["32gb",{"_index":2032,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["32x32.png",{"_index":1902,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["3399",{"_index":1044,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["343311263",{"_index":595,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["38",{"_index":3541,"title":{},"name":{},"text":{"173":{}},"component":{}}],["39",{"_index":3759,"title":{},"name":{},"text":{"239":{}},"component":{}}],["3rd",{"_index":1093,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"96":{},"151":{},"217":{}},"component":{}}],["3x",{"_index":2399,"title":{},"name":{"95":{},"149":{},"215":{}},"text":{},"component":{}}],["4",{"_index":95,"title":{"2-18":{},"2-40":{},"2-50":{},"41-18":{},"41-40":{},"41-50":{},"83-9":{},"136-9":{},"202-9":{}},"name":{},"text":{"20":{},"28":{},"56":{},"65":{},"83":{},"95":{},"101":{},"109":{},"127":{},"136":{},"149":{},"150":{},"157":{},"170":{},"193":{},"202":{},"215":{},"216":{},"223":{},"236":{}},"component":{}}],["4.0.0",{"_index":1875,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["4.0.8",{"_index":3378,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["4.1.1",{"_index":3622,"title":{},"name":{},"text":{"179":{},"245":{}},"component":{}}],["4.14.3",{"_index":560,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["4.15",{"_index":1548,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["4.17.1",{"_index":3072,"title":{},"name":{},"text":{"114":{}},"component":{}}],["4.18.2",{"_index":3604,"title":{},"name":{},"text":{"176":{}},"component":{}}],["4.19.2",{"_index":3801,"title":{},"name":{},"text":{"242":{}},"component":{}}],["4.2",{"_index":3177,"title":{"136-8":{},"202-8":{}},"name":{},"text":{},"component":{}}],["4.x",{"_index":2292,"title":{"150":{},"216":{},"150-8":{},"216-8":{}},"name":{},"text":{"83":{},"136":{},"150":{},"154":{},"202":{},"216":{},"220":{}},"component":{}}],["44",{"_index":1927,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["4gi",{"_index":1994,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["4x",{"_index":3229,"title":{},"name":{"150":{},"216":{}},"text":{},"component":{}}],["5",{"_index":97,"title":{"2-19":{},"2-41":{},"2-51":{},"41-19":{},"41-41":{},"41-51":{}},"name":{},"text":{"20":{},"27":{},"56":{},"62":{},"80":{},"96":{},"101":{},"111":{},"120":{},"133":{},"136":{},"151":{},"157":{},"172":{},"183":{},"199":{},"202":{},"217":{},"223":{},"238":{},"249":{}},"component":{}}],["5.16.3",{"_index":216,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["5.3.2",{"_index":3606,"title":{},"name":{},"text":{"176":{}},"component":{}}],["5.5.4",{"_index":3802,"title":{},"name":{},"text":{"242":{}},"component":{}}],["500",{"_index":2887,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["500m",{"_index":1990,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["503",{"_index":2875,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["50x.html",{"_index":3011,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["512x512.png",{"_index":1891,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["5mb",{"_index":1071,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["6",{"_index":100,"title":{"2-20":{},"2-52":{},"41-20":{},"41-52":{}},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["6.1.3",{"_index":562,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["6.14.3",{"_index":218,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["60x60.png",{"_index":1897,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["63",{"_index":3385,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["7",{"_index":103,"title":{"2-21":{},"2-53":{},"41-21":{},"41-53":{}},"name":{},"text":{"32":{},"35":{},"68":{},"71":{},"95":{},"101":{},"117":{},"149":{},"157":{},"215":{},"223":{}},"component":{}}],["7.13.3",{"_index":217,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["7.2.0",{"_index":3700,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["7.3.6",{"_index":561,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["76x76.png",{"_index":1898,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["8",{"_index":106,"title":{"2-22":{},"2-54":{},"41-22":{},"41-54":{},"94-8":{},"148-8":{},"214-8":{}},"name":{},"text":{"14":{},"19":{},"22":{},"27":{},"29":{},"30":{},"50":{},"55":{},"58":{},"62":{},"63":{},"64":{},"93":{},"94":{},"96":{},"101":{},"111":{},"147":{},"148":{},"151":{},"157":{},"213":{},"214":{},"217":{},"223":{}},"component":{}}],["8.10",{"_index":3757,"title":{},"name":{},"text":{"238":{}},"component":{}}],["8.5",{"_index":3517,"title":{},"name":{},"text":{"172":{}},"component":{}}],["8080",{"_index":1575,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["86",{"_index":1396,"title":{},"name":{},"text":{"23":{},"59":{}},"component":{}}],["9",{"_index":1768,"title":{},"name":{},"text":{"34":{},"70":{},"101":{},"157":{},"223":{}},"component":{}}],["9000:9000",{"_index":2366,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["9092:9092",{"_index":2367,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["9a",{"_index":3389,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["_",{"_index":2419,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"149":{},"150":{},"151":{},"153":{},"154":{},"189":{},"215":{},"216":{},"217":{},"219":{},"220":{},"255":{}},"component":{}}],["__",{"_index":1836,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["__init__.pi",{"_index":1436,"title":{},"name":{},"text":{"24":{},"29":{},"60":{},"63":{},"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["__test__",{"_index":3070,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["_helpers.tpl",{"_index":3560,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["_service_host",{"_index":2995,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["_service_port",{"_index":2996,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["_version",{"_index":874,"title":{},"name":{},"text":{"12":{}},"component":{}}],["a.git",{"_index":2640,"title":{},"name":{},"text":{"98":{},"126":{}},"component":{}}],["abort",{"_index":2550,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["aborting\\ncurr",{"_index":2839,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["about.vu",{"_index":1921,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["abov",{"_index":620,"title":{},"name":{},"text":{"4":{},"22":{},"23":{},"27":{},"43":{},"58":{},"59":{},"62":{},"80":{},"81":{},"91":{},"95":{},"98":{},"101":{},"111":{},"114":{},"123":{},"128":{},"133":{},"137":{},"142":{},"145":{},"146":{},"149":{},"154":{},"157":{},"172":{},"174":{},"176":{},"186":{},"194":{},"199":{},"203":{},"208":{},"211":{},"212":{},"215":{},"220":{},"223":{},"238":{},"240":{},"242":{},"253":{},"258":{}},"component":{}}],["accept",{"_index":730,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"88":{},"100":{},"120":{},"141":{},"151":{},"156":{},"181":{},"183":{},"207":{},"217":{},"222":{},"247":{},"249":{}},"component":{}}],["acceptance.config.t",{"_index":3813,"title":{},"name":{},"text":{"247":{}},"component":{}}],["acceptance.json",{"_index":3644,"title":{},"name":{},"text":{"181":{}},"component":{}}],["acceptance.spec.cy.t",{"_index":3810,"title":{},"name":{},"text":{"247":{}},"component":{}}],["acceptance.spec.t",{"_index":3641,"title":{},"name":{},"text":{"181":{}},"component":{}}],["acceptance/great_expect",{"_index":3695,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["acceptance/pytest",{"_index":3697,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["accepted_ev",{"_index":2332,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["access",{"_index":115,"title":{"2-31":{},"2-44":{},"41-31":{},"41-44":{}},"name":{},"text":{"2":{},"14":{},"20":{},"32":{},"41":{},"50":{},"56":{},"68":{},"78":{},"79":{},"80":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"109":{},"113":{},"117":{},"131":{},"132":{},"133":{},"149":{},"151":{},"154":{},"155":{},"157":{},"169":{},"170":{},"175":{},"181":{},"197":{},"198":{},"199":{},"215":{},"217":{},"220":{},"221":{},"223":{},"235":{},"236":{},"241":{},"247":{}},"component":{}}],["access_by_lua_block",{"_index":3004,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["accident",{"_index":2600,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["accompani",{"_index":2295,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["accord",{"_index":420,"title":{},"name":{},"text":{"2":{},"14":{},"30":{},"41":{},"50":{},"64":{},"96":{},"108":{},"121":{},"122":{},"151":{},"153":{},"169":{},"184":{},"185":{},"217":{},"219":{},"235":{},"250":{},"251":{}},"component":{}}],["account",{"_index":122,"title":{"2-39":{},"2-54":{},"41-39":{},"41-54":{}},"name":{},"text":{"2":{},"13":{},"14":{},"24":{},"32":{},"41":{},"49":{},"50":{},"60":{},"68":{},"81":{},"96":{},"98":{},"117":{},"150":{},"151":{},"154":{},"188":{},"216":{},"217":{},"220":{},"254":{}},"component":{}}],["accross",{"_index":543,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["accusam",{"_index":814,"title":{},"name":{},"text":{"10":{}},"component":{}}],["achiev",{"_index":1508,"title":{},"name":{},"text":{"27":{},"32":{},"62":{},"68":{},"96":{},"98":{},"111":{},"117":{},"136":{},"151":{},"154":{},"172":{},"202":{},"217":{},"220":{},"238":{}},"component":{}}],["acm",{"_index":2224,"title":{},"name":{},"text":{"81":{}},"component":{}}],["acme’",{"_index":2255,"title":{},"name":{},"text":{"81":{}},"component":{}}],["action",{"_index":520,"title":{},"name":{},"text":{"2":{},"36":{},"37":{},"41":{},"72":{},"73":{},"78":{},"94":{},"95":{},"122":{},"131":{},"148":{},"149":{},"150":{},"185":{},"197":{},"214":{},"215":{},"216":{},"251":{}},"component":{}}],["activ",{"_index":379,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"101":{},"154":{},"157":{},"160":{},"220":{},"223":{},"226":{}},"component":{}}],["actor",{"_index":1593,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["actual",{"_index":2240,"title":{},"name":{},"text":{"81":{},"96":{},"98":{},"99":{},"128":{},"151":{},"154":{},"155":{},"157":{},"194":{},"217":{},"220":{},"221":{},"223":{}},"component":{}}],["ad",{"_index":350,"title":{"8-1":{},"47-6":{},"88-6":{},"109-6":{},"141-6":{},"170-6":{},"207-6":{},"236-6":{}},"name":{},"text":{"2":{},"4":{},"14":{},"19":{},"32":{},"34":{},"38":{},"41":{},"43":{},"50":{},"55":{},"68":{},"70":{},"74":{},"91":{},"96":{},"98":{},"100":{},"101":{},"114":{},"117":{},"119":{},"121":{},"126":{},"145":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"172":{},"176":{},"181":{},"184":{},"192":{},"211":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"238":{},"242":{},"247":{},"250":{},"258":{}},"component":{}}],["adapt",{"_index":162,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"81":{},"96":{},"113":{},"123":{},"130":{},"133":{},"151":{},"157":{},"175":{},"186":{},"196":{},"199":{},"217":{},"223":{},"241":{},"253":{}},"component":{}}],["adapters.confluence.enabled=fals",{"_index":3446,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["adapters/servic",{"_index":3445,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["add",{"_index":110,"title":{"2-25":{},"2-26":{},"2-27":{},"2-28":{},"2-32":{},"2-34":{},"2-43":{},"2-44":{},"2-48":{},"2-56":{},"2-68":{},"14-11":{},"41-25":{},"41-26":{},"41-27":{},"41-28":{},"41-32":{},"41-34":{},"41-43":{},"41-44":{},"41-48":{},"41-56":{},"41-68":{},"50-11":{},"101-8":{},"157-11":{},"223-11":{}},"name":{},"text":{"2":{},"6":{},"14":{},"22":{},"25":{},"27":{},"32":{},"41":{},"45":{},"47":{},"50":{},"58":{},"62":{},"66":{},"68":{},"77":{},"80":{},"81":{},"82":{},"85":{},"88":{},"94":{},"96":{},"98":{},"100":{},"101":{},"108":{},"109":{},"111":{},"115":{},"117":{},"120":{},"123":{},"130":{},"133":{},"135":{},"136":{},"138":{},"141":{},"148":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"170":{},"172":{},"177":{},"180":{},"181":{},"183":{},"184":{},"186":{},"196":{},"199":{},"201":{},"202":{},"204":{},"207":{},"214":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"236":{},"238":{},"243":{},"246":{},"247":{},"249":{},"250":{},"253":{}},"component":{}}],["add/remov",{"_index":3723,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["addion",{"_index":530,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["addit",{"_index":63,"title":{"98-15":{},"154-18":{},"220-18":{}},"name":{},"text":{"1":{},"2":{},"34":{},"40":{},"41":{},"70":{},"76":{},"80":{},"95":{},"96":{},"101":{},"119":{},"121":{},"129":{},"133":{},"149":{},"151":{},"153":{},"157":{},"180":{},"184":{},"195":{},"199":{},"215":{},"217":{},"219":{},"223":{},"246":{},"250":{}},"component":{}}],["addition",{"_index":1641,"title":{},"name":{},"text":{"32":{},"68":{},"82":{},"101":{},"117":{},"135":{},"157":{},"201":{},"223":{}},"component":{}}],["additionalflag",{"_index":3292,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["additon",{"_index":515,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["address",{"_index":75,"title":{},"name":{},"text":{"1":{},"2":{},"32":{},"40":{},"41":{},"68":{},"76":{},"87":{},"117":{},"129":{},"140":{},"195":{},"206":{}},"component":{}}],["adher",{"_index":2243,"title":{},"name":{},"text":{"81":{},"189":{},"255":{}},"component":{}}],["adjust",{"_index":395,"title":{},"name":{},"text":{"2":{},"26":{},"35":{},"39":{},"41":{},"47":{},"61":{},"71":{},"75":{},"88":{},"96":{},"98":{},"99":{},"108":{},"110":{},"121":{},"141":{},"151":{},"154":{},"155":{},"158":{},"169":{},"171":{},"184":{},"207":{},"217":{},"220":{},"221":{},"224":{},"235":{},"237":{},"250":{}},"component":{}}],["adm",{"_index":2160,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["admin",{"_index":313,"title":{},"name":{},"text":{"2":{},"13":{},"22":{},"41":{},"49":{},"58":{},"77":{},"78":{},"83":{},"87":{},"92":{},"94":{},"98":{},"101":{},"102":{},"128":{},"130":{},"131":{},"136":{},"140":{},"146":{},"148":{},"151":{},"154":{},"157":{},"158":{},"194":{},"196":{},"197":{},"202":{},"206":{},"212":{},"214":{},"217":{},"220":{},"223":{},"224":{}},"component":{}}],["admin1",{"_index":2077,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["admin123",{"_index":463,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["admingroup",{"_index":1331,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["administ",{"_index":912,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["administr",{"_index":102,"title":{"80":{},"84":{},"92":{},"133":{},"137":{},"142":{},"146":{},"199":{},"203":{},"208":{},"212":{},"2-20":{},"2-27":{},"2-39":{},"2-54":{},"13-2":{},"41-20":{},"41-27":{},"41-39":{},"41-54":{},"49-2":{},"92-2":{}},"name":{"84":{},"92":{},"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"text":{"2":{},"22":{},"41":{},"58":{},"78":{},"79":{},"94":{},"95":{},"98":{},"128":{},"131":{},"132":{},"136":{},"148":{},"149":{},"154":{},"157":{},"158":{},"194":{},"197":{},"198":{},"202":{},"214":{},"215":{},"220":{},"223":{},"224":{}},"component":{}}],["administrators,opendevstack",{"_index":2943,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["administrators|us",{"_index":423,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["adminstr",{"_index":334,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["adopt",{"_index":1448,"title":{"127-2":{},"150-8":{},"193-2":{},"216-8":{}},"name":{},"text":{"24":{},"60":{},"83":{},"127":{},"136":{},"150":{},"193":{},"202":{},"216":{}},"component":{}}],["adress",{"_index":363,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["advanc",{"_index":980,"title":{"96-6":{},"99-4":{},"151-6":{},"155-4":{},"217-6":{},"221-4":{}},"name":{},"text":{"14":{},"50":{},"96":{},"101":{},"157":{},"181":{},"223":{},"247":{}},"component":{}}],["advantag",{"_index":2094,"title":{},"name":{},"text":{"79":{},"96":{},"132":{},"151":{},"198":{},"217":{}},"component":{}}],["advis",{"_index":2087,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["advisori",{"_index":3772,"title":{},"name":{},"text":{"240":{}},"component":{}}],["affect",{"_index":2401,"title":{},"name":{},"text":{"95":{},"149":{},"150":{},"215":{},"216":{}},"component":{}}],["aforement",{"_index":848,"title":{},"name":{},"text":{"11":{},"136":{},"202":{}},"component":{}}],["afterward",{"_index":1640,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"77":{},"79":{},"81":{},"88":{},"98":{},"117":{},"130":{},"132":{},"141":{},"154":{},"158":{},"161":{},"196":{},"198":{},"207":{},"220":{},"224":{},"227":{},"234":{}},"component":{}}],["again",{"_index":328,"title":{},"name":{},"text":{"2":{},"4":{},"13":{},"41":{},"43":{},"49":{},"91":{},"98":{},"145":{},"154":{},"172":{},"211":{},"220":{},"238":{}},"component":{}}],["against",{"_index":188,"title":{},"name":{},"text":{"2":{},"4":{},"19":{},"20":{},"32":{},"34":{},"41":{},"43":{},"55":{},"56":{},"68":{},"70":{},"82":{},"91":{},"96":{},"98":{},"100":{},"101":{},"117":{},"119":{},"120":{},"126":{},"135":{},"142":{},"145":{},"151":{},"154":{},"156":{},"157":{},"181":{},"183":{},"192":{},"201":{},"208":{},"211":{},"217":{},"220":{},"222":{},"223":{},"240":{},"247":{},"249":{},"258":{}},"component":{}}],["agent",{"_index":1005,"title":{"85":{},"103":{},"104":{},"105":{},"106":{},"107":{},"138":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"204":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"84-3":{},"91-6":{},"95-6":{},"95-9":{},"95-11":{},"96-7":{},"99-5":{},"108-2":{},"109-9":{},"110-6":{},"111-12":{},"112-6":{},"113-6":{},"114-8":{},"115-6":{},"116-6":{},"117-19":{},"118-6":{},"119-6":{},"120-10":{},"121-6":{},"122-6":{},"124-6":{},"125-6":{},"145-6":{},"149-6":{},"149-9":{},"149-11":{},"151-7":{},"155-5":{},"169-2":{},"170-10":{},"171-7":{},"172-13":{},"173-7":{},"174-7":{},"175-7":{},"176-9":{},"177-7":{},"178-8":{},"179-7":{},"180-7":{},"181-8":{},"182-5":{},"183-10":{},"184-7":{},"185-7":{},"187-6":{},"188-6":{},"190-6":{},"191-6":{},"211-6":{},"215-6":{},"215-9":{},"215-11":{},"217-7":{},"221-5":{},"235-2":{},"236-10":{},"237-7":{},"238-13":{},"239-7":{},"240-7":{},"241-7":{},"242-9":{},"243-7":{},"244-8":{},"245-7":{},"246-7":{},"247-8":{},"248-5":{},"249-10":{},"250-7":{},"251-7":{},"252-6":{},"254-6":{},"256-6":{},"257-6":{}},"name":{"85":{},"138":{},"204":{}},"text":{"14":{},"50":{},"77":{},"79":{},"84":{},"85":{},"91":{},"95":{},"96":{},"98":{},"99":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"128":{},"130":{},"132":{},"136":{},"137":{},"138":{},"145":{},"149":{},"150":{},"151":{},"154":{},"155":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"194":{},"196":{},"198":{},"202":{},"203":{},"204":{},"211":{},"215":{},"216":{},"217":{},"220":{},"221":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"254":{}},"component":{}}],["agent_image_tag",{"_index":3432,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["agentimagetag",{"_index":3431,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["agents/pag",{"_index":2982,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["agnost",{"_index":925,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"97":{},"99":{},"136":{},"151":{},"152":{},"155":{},"202":{},"217":{},"218":{},"221":{}},"component":{}}],["airflow",{"_index":1403,"title":{"24":{},"60":{},"24-10":{},"60-10":{},"95-11":{},"149-11":{},"215-11":{}},"name":{"24":{},"60":{}},"text":{"24":{},"39":{},"60":{},"75":{},"94":{},"95":{},"98":{},"148":{},"149":{},"154":{},"214":{},"215":{},"220":{}},"component":{}}],["airflow:2.x",{"_index":2458,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["aka",{"_index":3551,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["akhilsoman",{"_index":1879,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["akka",{"_index":1592,"title":{"30":{},"64":{}},"name":{"30":{},"64":{}},"text":{"30":{},"64":{}},"component":{}}],["alertemail",{"_index":3283,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["algorithm/job",{"_index":1532,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"176":{},"242":{}},"component":{}}],["alia",{"_index":2431,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["alias",{"_index":3243,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["align",{"_index":2433,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["alik",{"_index":1391,"title":{},"name":{},"text":{"22":{},"25":{},"58":{},"66":{},"101":{},"157":{},"223":{}},"component":{}}],["aliquyam",{"_index":809,"title":{},"name":{},"text":{"10":{}},"component":{}}],["allow",{"_index":275,"title":{},"name":{},"text":{"2":{},"5":{},"13":{},"14":{},"18":{},"24":{},"27":{},"29":{},"32":{},"39":{},"41":{},"44":{},"47":{},"49":{},"50":{},"54":{},"60":{},"62":{},"63":{},"68":{},"75":{},"80":{},"83":{},"88":{},"92":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"111":{},"112":{},"117":{},"120":{},"123":{},"128":{},"133":{},"136":{},"141":{},"146":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"158":{},"172":{},"173":{},"174":{},"181":{},"182":{},"183":{},"186":{},"194":{},"199":{},"202":{},"207":{},"212":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"224":{},"238":{},"239":{},"240":{},"247":{},"248":{},"249":{},"253":{}},"component":{}}],["allowed_change_ref_typ",{"_index":2334,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["allowed_external_project",{"_index":1973,"title":{},"name":{},"text":{"47":{},"88":{},"95":{},"141":{},"149":{},"207":{},"215":{}},"component":{}}],["allowpartialrebuild",{"_index":2659,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["along",{"_index":637,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"126":{},"136":{},"154":{},"192":{},"202":{},"220":{},"258":{}},"component":{}}],["alongsid",{"_index":2081,"title":{},"name":{},"text":{"79":{},"82":{},"132":{},"135":{},"198":{},"201":{}},"component":{}}],["alpha",{"_index":2889,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["alphanumer",{"_index":3387,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["alpin",{"_index":828,"title":{"12":{}},"name":{},"text":{"11":{}},"component":{}}],["alreadi",{"_index":286,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"32":{},"41":{},"44":{},"45":{},"50":{},"68":{},"76":{},"77":{},"95":{},"96":{},"98":{},"109":{},"117":{},"123":{},"129":{},"130":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"153":{},"154":{},"170":{},"174":{},"181":{},"186":{},"195":{},"196":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"219":{},"220":{},"236":{},"240":{},"247":{},"253":{}},"component":{}}],["altern",{"_index":1144,"title":{"240-10":{},"240-15":{}},"name":{},"text":{"19":{},"39":{},"55":{},"75":{},"100":{},"101":{},"150":{},"156":{},"157":{},"216":{},"222":{},"223":{},"240":{}},"component":{}}],["although",{"_index":3198,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["altogeth",{"_index":2696,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["alway",{"_index":1017,"title":{},"name":{},"text":{"14":{},"50":{},"81":{},"82":{},"95":{},"96":{},"98":{},"99":{},"121":{},"135":{},"149":{},"151":{},"153":{},"154":{},"155":{},"184":{},"201":{},"215":{},"217":{},"219":{},"220":{},"221":{},"250":{}},"component":{}}],["alwayspullimag",{"_index":1995,"title":{},"name":{},"text":{"50":{},"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["amend",{"_index":1462,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["amet",{"_index":795,"title":{},"name":{},"text":{"10":{}},"component":{}}],["amount",{"_index":2131,"title":{},"name":{},"text":{"79":{},"128":{},"132":{},"194":{},"198":{}},"component":{}}],["analys",{"_index":904,"title":{},"name":{},"text":{"13":{},"14":{},"15":{},"16":{},"49":{},"50":{},"51":{},"52":{},"93":{},"96":{},"147":{},"151":{},"213":{},"217":{}},"component":{}}],["analysi",{"_index":896,"title":{},"name":{},"text":{"13":{},"14":{},"17":{},"26":{},"27":{},"49":{},"50":{},"53":{},"61":{},"62":{},"83":{},"93":{},"96":{},"110":{},"111":{},"121":{},"122":{},"136":{},"147":{},"151":{},"171":{},"172":{},"184":{},"185":{},"202":{},"213":{},"217":{},"237":{},"238":{},"250":{},"251":{}},"component":{}}],["analyz",{"_index":1947,"title":{},"name":{},"text":{"39":{},"75":{},"77":{},"96":{},"130":{},"136":{},"151":{},"196":{},"202":{},"217":{}},"component":{}}],["analyzepullrequest",{"_index":2555,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["and/or",{"_index":1122,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"80":{},"97":{},"109":{},"117":{},"133":{},"152":{},"170":{},"199":{},"218":{},"236":{},"240":{}},"component":{}}],["andrewrothstein.openshift",{"_index":2017,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["android",{"_index":1823,"title":{},"name":{},"text":{"36":{},"38":{},"72":{},"74":{},"122":{},"185":{},"251":{}},"component":{}}],["angular",{"_index":1558,"title":{"35":{},"71":{},"105":{},"121":{},"184":{},"250":{}},"name":{"35":{},"71":{},"105":{},"121":{},"184":{},"250":{}},"text":{"28":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"94":{},"95":{},"100":{},"105":{},"114":{},"119":{},"121":{},"122":{},"123":{},"136":{},"148":{},"149":{},"156":{},"184":{},"185":{},"186":{},"202":{},"214":{},"215":{},"222":{},"250":{},"251":{},"253":{}},"component":{}}],["angular.json",{"_index":1787,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["angularj",{"_index":3408,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["annot",{"_index":1177,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["announc",{"_index":2641,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["anonym",{"_index":507,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["anoth",{"_index":2042,"title":{},"name":{},"text":{"77":{},"94":{},"96":{},"98":{},"101":{},"108":{},"126":{},"128":{},"130":{},"148":{},"150":{},"151":{},"154":{},"157":{},"169":{},"192":{},"194":{},"196":{},"214":{},"216":{},"217":{},"220":{},"223":{},"235":{},"258":{}},"component":{}}],["ansibl",{"_index":9,"title":{"2-8":{},"4-4":{},"41-8":{},"43-4":{},"76-2":{},"91-4":{},"129-2":{},"145-4":{},"195-2":{},"211-4":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"40":{},"41":{},"43":{},"44":{},"76":{},"83":{},"91":{},"129":{},"145":{},"195":{},"211":{}},"component":{}}],["ansible.cfg",{"_index":600,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["ansible_vault_password_file=/vagrant/ansible/.vault_pass.txt",{"_index":2015,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["ansicolor:0.5.2",{"_index":704,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["antora",{"_index":2259,"title":{"82-1":{},"135-1":{},"201-1":{}},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["anymor",{"_index":740,"title":{},"name":{},"text":{"6":{},"8":{},"41":{},"45":{},"80":{},"133":{},"150":{},"184":{},"199":{},"216":{},"250":{}},"component":{}}],["anyth",{"_index":636,"title":{},"name":{},"text":{"5":{},"6":{},"44":{},"45":{},"83":{},"98":{},"154":{},"220":{}},"component":{}}],["anyway",{"_index":2681,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["anywher",{"_index":3185,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["apach",{"_index":2247,"title":{},"name":{},"text":{"81":{}},"component":{}}],["apart",{"_index":2083,"title":{},"name":{},"text":{"79":{},"80":{},"95":{},"101":{},"132":{},"133":{},"149":{},"157":{},"198":{},"199":{},"215":{},"223":{}},"component":{}}],["api",{"_index":861,"title":{"19-5":{},"22-5":{},"55-5":{},"58-5":{},"100-6":{},"100-7":{},"101-7":{},"156-6":{},"156-7":{},"157-10":{},"222-6":{},"222-7":{},"223-10":{}},"name":{},"text":{"12":{},"19":{},"20":{},"22":{},"23":{},"55":{},"56":{},"58":{},"59":{},"96":{},"98":{},"100":{},"101":{},"109":{},"113":{},"151":{},"153":{},"154":{},"156":{},"157":{},"170":{},"173":{},"174":{},"175":{},"189":{},"217":{},"219":{},"220":{},"222":{},"223":{},"236":{},"239":{},"240":{},"241":{},"255":{}},"component":{}}],["api/compon",{"_index":2615,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["api/v2/project",{"_index":1165,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["api/v2/project?onlycheckpreconditions=tru",{"_index":2892,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["apihost",{"_index":2004,"title":{},"name":{},"text":{"60":{}},"component":{}}],["apiurl",{"_index":2700,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["apivers",{"_index":2175,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["api’",{"_index":1212,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["app",{"_index":14,"title":{"100":{},"101":{},"125":{},"156":{},"157":{},"191":{},"222":{},"223":{},"257":{},"5-8":{},"20-4":{},"44-8":{},"56-4":{},"78-6":{},"79-7":{},"80-9":{},"80-17":{},"80-24":{},"101-14":{},"131-6":{},"132-7":{},"133-9":{},"133-17":{},"133-24":{},"157-17":{},"197-6":{},"198-7":{},"199-9":{},"199-17":{},"199-24":{},"223-17":{}},"name":{"33":{},"125":{},"191":{},"257":{}},"text":{"1":{},"2":{},"5":{},"8":{},"13":{},"14":{},"19":{},"20":{},"21":{},"22":{},"27":{},"33":{},"35":{},"36":{},"39":{},"40":{},"41":{},"44":{},"47":{},"49":{},"50":{},"55":{},"56":{},"57":{},"58":{},"62":{},"69":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"88":{},"92":{},"94":{},"95":{},"96":{},"99":{},"100":{},"101":{},"108":{},"111":{},"113":{},"118":{},"121":{},"122":{},"123":{},"125":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"141":{},"146":{},"148":{},"149":{},"151":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"174":{},"175":{},"179":{},"184":{},"185":{},"186":{},"191":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"207":{},"212":{},"214":{},"215":{},"217":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"240":{},"241":{},"245":{},"250":{},"251":{},"253":{},"257":{}},"component":{}}],["app.component.html",{"_index":1798,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.component.scss",{"_index":1799,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.component.spec.t",{"_index":1800,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.component.t",{"_index":1801,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.e2",{"_index":1792,"title":{},"name":{},"text":{"35":{},"71":{},"121":{}},"component":{}}],["app.git",{"_index":1140,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["app.html",{"_index":1833,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["app.j",{"_index":1857,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["app.kubernetes.io/compon",{"_index":3358,"title":{"153-7":{},"219-7":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.kubernetes.io/inst",{"_index":3356,"title":{"153-5":{},"219-5":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.kubernetes.io/manag",{"_index":3360,"title":{"153-9":{},"219-9":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.kubernetes.io/nam",{"_index":3355,"title":{"153-4":{},"219-4":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.kubernetes.io/part",{"_index":3359,"title":{"153-8":{},"219-8":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.kubernetes.io/vers",{"_index":3357,"title":{"153-6":{},"219-6":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.module.t",{"_index":1802,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.opendevstack.org/project",{"_index":3363,"title":{"153-13":{},"153-16":{},"219-13":{},"219-16":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.opendevstack.org/system",{"_index":3365,"title":{"153-15":{},"219-15":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.opendevstack.org/typ",{"_index":3364,"title":{"153-14":{},"219-14":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.opendevstack.org/work",{"_index":3366,"title":{"153-17":{},"219-17":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.openshift.io/runtim",{"_index":3361,"title":{"153-10":{},"153-11":{},"219-10":{},"219-11":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.pi",{"_index":1564,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["app.po.t",{"_index":1793,"title":{},"name":{},"text":{"35":{},"71":{},"121":{}},"component":{}}],["app.r",{"_index":1756,"title":{},"name":{},"text":{"33":{},"69":{},"118":{},"179":{},"245":{}},"component":{}}],["app.run('0.0.0.0",{"_index":1576,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["app.scss",{"_index":1834,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["app.test.j",{"_index":1858,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["app.vu",{"_index":1911,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["app/issues/336",{"_index":2397,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["app/protocol/openid",{"_index":1235,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["app/src/work/storag",{"_index":1618,"title":{},"name":{},"text":{"31":{}},"component":{}}],["app=$project",{"_index":2717,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["app=${context.projectid",{"_index":2514,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["app=${projectid",{"_index":3246,"title":{},"name":{},"text":{"150":{},"151":{},"216":{},"217":{}},"component":{}}],["app=foo",{"_index":2495,"title":{},"name":{},"text":{"96":{},"98":{},"127":{},"151":{},"154":{},"193":{},"217":{},"220":{}},"component":{}}],["app_dn",{"_index":2315,"title":{},"name":{},"text":{"85":{},"138":{},"204":{}},"component":{}}],["appear",{"_index":435,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["append",{"_index":2518,"title":{},"name":{},"text":{"96":{},"101":{},"151":{},"157":{},"217":{},"223":{}},"component":{}}],["appl",{"_index":1892,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["applciat",{"_index":3121,"title":{},"name":{},"text":{"121":{},"184":{},"250":{}},"component":{}}],["appli",{"_index":697,"title":{},"name":{},"text":{"6":{},"11":{},"12":{},"45":{},"60":{},"79":{},"80":{},"82":{},"84":{},"87":{},"96":{},"98":{},"99":{},"101":{},"127":{},"128":{},"132":{},"133":{},"135":{},"137":{},"140":{},"142":{},"146":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"193":{},"194":{},"198":{},"199":{},"201":{},"203":{},"206":{},"208":{},"212":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{}},"component":{}}],["applic",{"_index":105,"title":{"22":{},"33":{},"58":{},"69":{},"102":{},"118":{},"125":{},"158":{},"179":{},"191":{},"224":{},"245":{},"257":{},"2-21":{},"2-28":{},"2-37":{},"2-44":{},"2-66":{},"22-5":{},"41-21":{},"41-28":{},"41-37":{},"41-44":{},"41-66":{},"58-5":{},"77-16":{},"128-4":{},"130-14":{},"194-4":{},"196-14":{}},"name":{},"text":{"2":{},"5":{},"7":{},"11":{},"19":{},"20":{},"21":{},"22":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"35":{},"36":{},"38":{},"39":{},"41":{},"44":{},"46":{},"55":{},"56":{},"57":{},"58":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"71":{},"72":{},"74":{},"75":{},"77":{},"80":{},"83":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"133":{},"136":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"184":{},"185":{},"186":{},"189":{},"192":{},"194":{},"196":{},"199":{},"202":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["application.conf",{"_index":3050,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["application.properti",{"_index":1154,"title":{},"name":{},"text":{"19":{},"20":{},"21":{},"55":{},"56":{},"57":{},"100":{},"101":{},"120":{},"156":{},"157":{},"183":{},"222":{},"223":{},"249":{}},"component":{}}],["application.proprti",{"_index":2819,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["application/json",{"_index":1379,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["application/x",{"_index":1351,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["application’",{"_index":1206,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["applyuserrepos.duck.j",{"_index":1866,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["approach",{"_index":1650,"title":{"240-11":{}},"name":{},"text":{"32":{},"68":{},"80":{},"94":{},"96":{},"98":{},"117":{},"127":{},"133":{},"148":{},"151":{},"154":{},"193":{},"199":{},"214":{},"217":{},"220":{}},"component":{}}],["appropri",{"_index":768,"title":{},"name":{},"text":{"8":{},"20":{},"56":{},"81":{},"98":{},"101":{},"153":{},"154":{},"155":{},"157":{},"189":{},"219":{},"220":{},"221":{},"223":{},"255":{}},"component":{}}],["approv",{"_index":2231,"title":{},"name":{},"text":{"81":{}},"component":{}}],["apsolon",{"_index":1881,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["aqua",{"_index":2304,"title":{},"name":{},"text":{"83":{},"136":{},"138":{},"151":{},"202":{},"204":{},"217":{}},"component":{}}],["aquasec_scannercli_url",{"_index":3207,"title":{},"name":{},"text":{"138":{},"204":{}},"component":{}}],["arbitrari",{"_index":3415,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["archetyp",{"_index":648,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["architectur",{"_index":1132,"title":{"19":{},"55":{},"100":{},"156":{},"222":{},"25-2":{},"26-2":{},"27-2":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-2":{},"66-2":{},"67-2":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-2":{},"115-2":{},"116-2":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"252-2":{},"254-2":{},"256-2":{},"257-2":{}},"name":{"19":{},"55":{},"100":{},"156":{},"222":{}},"text":{"21":{},"57":{},"109":{},"153":{},"170":{},"189":{},"219":{},"236":{},"255":{}},"component":{}}],["archiv",{"_index":3298,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["are.html",{"_index":3233,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["arg",{"_index":1996,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"100":{},"151":{},"155":{},"156":{},"181":{},"217":{},"221":{},"222":{},"247":{}},"component":{}}],["argument",{"_index":2415,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["arm",{"_index":3725,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["around",{"_index":2150,"title":{},"name":{},"text":{"80":{},"133":{},"153":{},"189":{},"199":{},"219":{},"255":{}},"component":{}}],["arraylist",{"_index":1314,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["artefact",{"_index":3189,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["artifact",{"_index":1091,"title":{"27-5":{},"27-7":{},"62-5":{},"62-7":{},"111-5":{},"111-7":{},"120-4":{},"172-5":{},"172-7":{},"183-4":{},"238-5":{},"238-7":{},"249-4":{}},"name":{},"text":{"14":{},"15":{},"22":{},"25":{},"27":{},"50":{},"51":{},"58":{},"62":{},"66":{},"77":{},"80":{},"96":{},"98":{},"102":{},"111":{},"113":{},"115":{},"120":{},"130":{},"133":{},"151":{},"154":{},"172":{},"175":{},"177":{},"183":{},"196":{},"199":{},"217":{},"220":{},"238":{},"241":{},"243":{},"249":{}},"component":{}}],["artifactid",{"_index":2621,"title":{},"name":{},"text":{"96":{},"151":{},"153":{},"189":{},"217":{},"219":{},"255":{}},"component":{}}],["ascii",{"_index":2343,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["asciidoc",{"_index":2266,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["asciidoctor",{"_index":2265,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["ask",{"_index":453,"title":{},"name":{},"text":{"2":{},"41":{},"158":{},"224":{}},"component":{}}],["ask_password",{"_index":1689,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["aspect",{"_index":926,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"97":{},"99":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["assembl",{"_index":990,"title":{},"name":{},"text":{"14":{},"30":{},"50":{},"64":{},"96":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["asset",{"_index":1803,"title":{},"name":{},"text":{"35":{},"36":{},"38":{},"71":{},"72":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["assign",{"_index":3370,"title":{},"name":{},"text":{"153":{},"155":{},"157":{},"158":{},"219":{},"221":{},"223":{},"224":{}},"component":{}}],["associ",{"_index":2593,"title":{},"name":{},"text":{"96":{},"151":{},"181":{},"217":{},"247":{}},"component":{}}],["assum",{"_index":180,"title":{},"name":{},"text":{"2":{},"8":{},"32":{},"41":{},"47":{},"68":{},"77":{},"81":{},"88":{},"94":{},"95":{},"98":{},"100":{},"108":{},"115":{},"117":{},"126":{},"130":{},"141":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"169":{},"177":{},"192":{},"196":{},"207":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"235":{},"243":{},"258":{}},"component":{}}],["assumpt",{"_index":2257,"title":{},"name":{},"text":{"81":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["assur",{"_index":2667,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["async",{"_index":3546,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["asynchron",{"_index":3399,"title":{},"name":{},"text":{"153":{},"174":{},"189":{},"219":{},"240":{},"255":{}},"component":{}}],["ath",{"_index":2985,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["atlassian",{"_index":11,"title":{"2-6":{},"2-12":{},"2-13":{},"2-35":{},"2-45":{},"41-6":{},"41-12":{},"41-13":{},"41-35":{},"41-45":{},"77-7":{},"130-5":{},"196-5":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"19":{},"20":{},"40":{},"41":{},"42":{},"44":{},"55":{},"56":{},"76":{},"77":{},"78":{},"83":{},"90":{},"100":{},"101":{},"129":{},"130":{},"131":{},"136":{},"144":{},"146":{},"156":{},"157":{},"195":{},"196":{},"197":{},"202":{},"210":{},"212":{},"222":{},"223":{}},"component":{}}],["atlassian1",{"_index":573,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["atlassian_publ",{"_index":472,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["atom",{"_index":1389,"title":{},"name":{},"text":{"22":{},"58":{},"93":{},"101":{},"147":{},"151":{},"157":{},"213":{},"217":{},"223":{}},"component":{}}],["attempt",{"_index":2647,"title":{},"name":{},"text":{"98":{},"126":{},"128":{},"154":{},"192":{},"194":{},"220":{},"258":{}},"component":{}}],["attlassian",{"_index":114,"title":{"2-29":{},"41-29":{}},"name":{},"text":{},"component":{}}],["attribut",{"_index":853,"title":{},"name":{},"text":{"11":{},"32":{},"68":{},"98":{},"117":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["attribute=preferred_usernam",{"_index":1245,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["audit",{"_index":3771,"title":{},"name":{},"text":{"240":{}},"component":{}}],["auditor",{"_index":3461,"title":{},"name":{},"text":{"160":{},"187":{},"188":{},"226":{},"252":{},"254":{}},"component":{}}],["august",{"_index":2276,"title":{"83-10":{},"136-10":{},"202-10":{}},"name":{},"text":{},"component":{}}],["auth",{"_index":711,"title":{"11":{},"101-13":{},"157-16":{},"223-16":{}},"name":{},"text":{"6":{},"11":{},"12":{},"13":{},"14":{},"45":{},"49":{},"50":{},"77":{},"87":{},"96":{},"98":{},"99":{},"100":{},"101":{},"109":{},"130":{},"140":{},"151":{},"154":{},"155":{},"156":{},"157":{},"170":{},"196":{},"206":{},"217":{},"220":{},"221":{},"222":{},"223":{},"236":{}},"component":{}}],["auth.enabled=tru",{"_index":2961,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["auth/z",{"_index":3005,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["authent",{"_index":356,"title":{"19-4":{},"20-1":{},"20-2":{},"20-3":{},"20-4":{},"55-4":{},"56-1":{},"56-2":{},"56-3":{},"56-4":{},"100-5":{},"101-10":{},"101-11":{},"101-12":{},"101-13":{},"101-14":{},"156-5":{},"157-13":{},"157-14":{},"157-15":{},"157-16":{},"157-17":{},"222-5":{},"223-13":{},"223-14":{},"223-15":{},"223-16":{},"223-17":{}},"name":{},"text":{"2":{},"11":{},"13":{},"19":{},"20":{},"31":{},"33":{},"41":{},"49":{},"55":{},"56":{},"78":{},"80":{},"94":{},"96":{},"100":{},"101":{},"131":{},"133":{},"146":{},"148":{},"151":{},"156":{},"157":{},"180":{},"181":{},"197":{},"199":{},"212":{},"214":{},"217":{},"222":{},"223":{},"246":{},"247":{}},"component":{}}],["authentif",{"_index":1615,"title":{},"name":{},"text":{"31":{},"32":{},"33":{},"68":{},"117":{}},"component":{}}],["author",{"_index":1040,"title":{"108":{},"169":{},"235":{},"98-24":{},"123-8":{},"154-29":{},"186-9":{},"220-29":{},"253-9":{}},"name":{"108":{},"169":{},"235":{}},"text":{"14":{},"50":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"108":{},"123":{},"128":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"169":{},"186":{},"194":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"235":{},"253":{}},"component":{}}],["authoris",{"_index":362,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["authproxi",{"_index":544,"title":{},"name":{"11":{}},"text":{"2":{},"12":{},"41":{}},"component":{}}],["auto",{"_index":404,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"96":{},"117":{},"150":{},"151":{},"216":{},"217":{}},"component":{}}],["autocloneenvironmentsfromsourcemap",{"_index":919,"title":{"14-5":{},"50-5":{}},"name":{},"text":{"14":{},"50":{},"96":{},"150":{},"216":{}},"component":{}}],["autodetect",{"_index":3381,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["autom",{"_index":466,"title":{"98-3":{},"98-7":{},"98-10":{},"98-11":{},"98-14":{},"126-3":{},"126-7":{},"126-10":{},"126-11":{},"126-12":{},"126-13":{},"154-3":{},"154-10":{},"154-13":{},"154-14":{},"154-17":{},"192-3":{},"192-7":{},"192-10":{},"192-11":{},"192-12":{},"192-13":{},"220-3":{},"220-10":{},"220-13":{},"220-14":{},"220-17":{},"258-3":{},"258-7":{},"258-10":{},"258-11":{},"258-12":{},"258-13":{}},"name":{},"text":{"2":{},"41":{},"83":{},"98":{},"126":{},"128":{},"136":{},"137":{},"154":{},"192":{},"194":{},"202":{},"203":{},"220":{},"258":{}},"component":{}}],["automat",{"_index":377,"title":{"96-12":{}},"name":{},"text":{"2":{},"6":{},"13":{},"14":{},"29":{},"34":{},"41":{},"45":{},"47":{},"49":{},"50":{},"63":{},"70":{},"77":{},"80":{},"81":{},"82":{},"83":{},"85":{},"87":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"101":{},"119":{},"126":{},"128":{},"130":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"141":{},"147":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"192":{},"194":{},"196":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"207":{},"213":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"258":{}},"component":{}}],["avail",{"_index":192,"title":{"123-2":{},"186-2":{},"253-2":{}},"name":{},"text":{"2":{},"6":{},"14":{},"19":{},"27":{},"39":{},"41":{},"45":{},"50":{},"55":{},"62":{},"75":{},"77":{},"79":{},"80":{},"87":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"123":{},"127":{},"130":{},"132":{},"133":{},"137":{},"140":{},"142":{},"146":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"160":{},"162":{},"163":{},"164":{},"165":{},"186":{},"193":{},"196":{},"198":{},"199":{},"203":{},"206":{},"208":{},"212":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"226":{},"228":{},"229":{},"230":{},"231":{},"240":{},"253":{}},"component":{}}],["avatar",{"_index":416,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["avil",{"_index":685,"title":{},"name":{},"text":{"5":{},"44":{}},"component":{}}],["avoid",{"_index":1010,"title":{},"name":{},"text":{"14":{},"41":{},"47":{},"50":{},"88":{},"95":{},"96":{},"99":{},"100":{},"141":{},"149":{},"151":{},"153":{},"155":{},"156":{},"207":{},"215":{},"217":{},"219":{},"221":{},"222":{},"240":{}},"component":{}}],["aw",{"_index":64,"title":{"187":{},"252":{}},"name":{"187":{},"252":{}},"text":{"1":{},"40":{},"76":{},"129":{},"136":{},"182":{},"186":{},"187":{},"195":{},"202":{},"248":{},"252":{},"253":{}},"component":{}}],["awar",{"_index":756,"title":{},"name":{},"text":{"7":{},"46":{},"93":{},"103":{},"104":{},"105":{},"107":{},"108":{},"147":{},"159":{},"162":{},"163":{},"164":{},"165":{},"168":{},"169":{},"213":{},"225":{},"228":{},"229":{},"230":{},"231":{},"234":{},"235":{}},"component":{}}],["away",{"_index":634,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["awesom",{"_index":3590,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["axum",{"_index":3499,"title":{"174":{},"240":{}},"name":{"174":{},"240":{}},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["azur",{"_index":2934,"title":{"188":{},"254":{}},"name":{"188":{},"254":{}},"text":{"101":{},"157":{},"186":{},"188":{},"223":{},"253":{},"254":{}},"component":{}}],["azure.activedirectory.environment=glob",{"_index":2944,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["azure.activedirectory.ten",{"_index":2950,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["azure.activedirectory.us",{"_index":2940,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["azure.properti",{"_index":2935,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["b",{"_index":1101,"title":{"98-8":{},"126-8":{},"154-11":{},"192-8":{},"220-11":{},"258-8":{}},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"81":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["b.git",{"_index":2653,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["babel.config.j",{"_index":1887,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["back",{"_index":1727,"title":{},"name":{},"text":{"32":{},"68":{},"79":{},"81":{},"82":{},"98":{},"117":{},"126":{},"127":{},"132":{},"135":{},"154":{},"161":{},"192":{},"193":{},"198":{},"201":{},"220":{},"227":{},"234":{},"258":{}},"component":{}}],["backend",{"_index":1129,"title":{"26":{},"27":{},"28":{},"29":{},"30":{},"61":{},"62":{},"63":{},"64":{},"65":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"19-3":{},"39-2":{},"55-3":{},"75-2":{},"100-4":{},"123-3":{},"156-4":{},"186-3":{},"222-4":{},"253-3":{}},"name":{},"text":{"19":{},"39":{},"55":{},"75":{},"98":{},"100":{},"101":{},"109":{},"123":{},"126":{},"153":{},"154":{},"156":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"186":{},"188":{},"189":{},"192":{},"219":{},"220":{},"222":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["background",{"_index":923,"title":{"14-18":{},"50-18":{},"97-1":{},"152-1":{},"218-1":{}},"name":{},"text":{},"component":{}}],["backup",{"_index":2080,"title":{"79-3":{},"80-4":{},"132-3":{},"133-4":{},"198-3":{},"199-4":{}},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_cd.yml",{"_index":2088,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_prov_cd.yml",{"_index":2089,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_prov_dev.yml",{"_index":2090,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_prov_test.yml",{"_index":2091,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backward",{"_index":2408,"title":{},"name":{},"text":{"95":{},"149":{},"161":{},"172":{},"215":{},"227":{},"234":{},"238":{}},"component":{}}],["bad",{"_index":627,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["bake",{"_index":1363,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["ban",{"_index":3776,"title":{},"name":{},"text":{"240":{}},"component":{}}],["bar",{"_index":398,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"47":{},"50":{},"88":{},"95":{},"96":{},"127":{},"141":{},"149":{},"151":{},"193":{},"207":{},"215":{},"217":{}},"component":{}}],["bar:latest",{"_index":2988,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["base",{"_index":214,"title":{"7":{},"12":{},"46":{},"85":{},"138":{},"204":{},"22-4":{},"58-4":{},"84-3":{},"101-3":{},"101-8":{},"157-6":{},"157-11":{},"223-6":{},"223-11":{}},"name":{"7":{},"46":{},"85":{},"138":{},"204":{}},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"11":{},"12":{},"14":{},"19":{},"21":{},"22":{},"24":{},"27":{},"30":{},"31":{},"32":{},"33":{},"34":{},"38":{},"39":{},"41":{},"44":{},"45":{},"46":{},"47":{},"50":{},"55":{},"57":{},"58":{},"60":{},"62":{},"64":{},"67":{},"68":{},"69":{},"70":{},"74":{},"75":{},"79":{},"80":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"94":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"102":{},"105":{},"108":{},"109":{},"111":{},"113":{},"116":{},"117":{},"118":{},"119":{},"126":{},"127":{},"128":{},"132":{},"133":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"162":{},"163":{},"164":{},"165":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"182":{},"184":{},"185":{},"189":{},"192":{},"193":{},"194":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"228":{},"229":{},"230":{},"231":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"248":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["base.html",{"_index":1570,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["base64",{"_index":2832,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["base64_credenti",{"_index":2842,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["base64_credentials=$(echo",{"_index":2833,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["bash",{"_index":220,"title":{},"name":{},"text":{"2":{},"24":{},"29":{},"41":{},"60":{},"63":{},"77":{},"79":{},"100":{},"112":{},"130":{},"132":{},"156":{},"173":{},"196":{},"198":{},"222":{},"227":{},"234":{},"239":{}},"component":{}}],["basic",{"_index":56,"title":{"2-41":{},"22-1":{},"32-1":{},"41-41":{},"58-1":{},"68-1":{},"101-13":{},"102-1":{},"117-1":{},"157-16":{},"223-16":{}},"name":{},"text":{"1":{},"2":{},"20":{},"22":{},"27":{},"28":{},"29":{},"30":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"56":{},"58":{},"62":{},"63":{},"64":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"95":{},"100":{},"101":{},"102":{},"109":{},"111":{},"112":{},"113":{},"114":{},"119":{},"120":{},"121":{},"122":{},"123":{},"127":{},"129":{},"136":{},"149":{},"151":{},"156":{},"157":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"181":{},"183":{},"184":{},"185":{},"186":{},"193":{},"195":{},"202":{},"215":{},"217":{},"222":{},"223":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"247":{},"249":{},"250":{},"251":{},"253":{}},"component":{}}],["basic_auth_credenti",{"_index":2822,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["basicauth",{"_index":1029,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["batch",{"_index":3155,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["baz",{"_index":1969,"title":{},"name":{},"text":{"47":{},"88":{},"95":{},"96":{},"141":{},"149":{},"207":{},"215":{}},"component":{}}],["bc",{"_index":2107,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["bc,i",{"_index":2577,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["bc.env",{"_index":550,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["bc:/spec/output/imagelabel",{"_index":2581,"title":{},"name":{},"text":{"96":{}},"component":{}}],["bc:/spec/output/to/nam",{"_index":2582,"title":{},"name":{},"text":{"96":{}},"component":{}}],["be",{"_index":867,"title":{},"name":{},"text":{"12":{},"14":{},"17":{},"18":{},"23":{},"34":{},"50":{},"53":{},"54":{},"59":{},"70":{},"94":{},"96":{},"109":{},"119":{},"148":{},"150":{},"151":{},"153":{},"170":{},"189":{},"214":{},"216":{},"217":{},"219":{},"236":{},"255":{}},"component":{}}],["bean",{"_index":1173,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["bear",{"_index":3080,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["becom",{"_index":3329,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["befor",{"_index":283,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"32":{},"41":{},"45":{},"50":{},"68":{},"77":{},"79":{},"80":{},"81":{},"95":{},"96":{},"98":{},"99":{},"100":{},"117":{},"130":{},"132":{},"133":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"172":{},"196":{},"198":{},"199":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"238":{}},"component":{}}],["beforehand",{"_index":3424,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["begin",{"_index":405,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["behav",{"_index":1646,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["behavior",{"_index":1388,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"181":{},"223":{},"247":{}},"component":{}}],["behaviour",{"_index":767,"title":{"8-3":{},"47-7":{},"88-7":{},"94-7":{},"141-7":{},"148-7":{},"207-7":{},"214-7":{}},"name":{},"text":{"79":{},"94":{},"96":{},"101":{},"132":{},"148":{},"151":{},"157":{},"198":{},"214":{},"217":{},"223":{}},"component":{}}],["behind",{"_index":1747,"title":{},"name":{},"text":{"32":{},"68":{},"82":{},"93":{},"117":{},"135":{},"147":{},"180":{},"201":{},"213":{},"246":{}},"component":{}}],["bellow",{"_index":1411,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["belong",{"_index":480,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"101":{},"154":{},"157":{},"220":{},"223":{}},"component":{}}],["below",{"_index":330,"title":{},"name":{},"text":{"2":{},"19":{},"27":{},"41":{},"55":{},"62":{},"80":{},"96":{},"100":{},"101":{},"111":{},"114":{},"133":{},"136":{},"151":{},"154":{},"156":{},"157":{},"172":{},"176":{},"199":{},"202":{},"217":{},"220":{},"222":{},"223":{},"238":{},"242":{}},"component":{}}],["beneath",{"_index":419,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["benefit",{"_index":2444,"title":{},"name":{},"text":{"95":{},"101":{},"149":{},"157":{},"215":{},"223":{}},"component":{}}],["benefiti",{"_index":2241,"title":{},"name":{},"text":{"81":{}},"component":{}}],["besid",{"_index":62,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"78":{},"129":{},"131":{},"195":{},"197":{}},"component":{}}],["best",{"_index":1852,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"98":{},"108":{},"122":{},"126":{},"127":{},"153":{},"154":{},"155":{},"169":{},"185":{},"192":{},"193":{},"219":{},"220":{},"221":{},"235":{},"251":{},"258":{}},"component":{}}],["better",{"_index":1119,"title":{},"name":{},"text":{"14":{},"34":{},"50":{},"70":{},"97":{},"119":{},"152":{},"218":{}},"component":{}}],["between",{"_index":597,"title":{"151-29":{},"217-29":{}},"name":{},"text":{"4":{},"13":{},"14":{},"19":{},"43":{},"47":{},"49":{},"50":{},"55":{},"83":{},"88":{},"91":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"126":{},"127":{},"128":{},"136":{},"141":{},"142":{},"145":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"189":{},"192":{},"193":{},"194":{},"202":{},"207":{},"208":{},"211":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"255":{},"258":{}},"component":{}}],["bewar",{"_index":3276,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["beyond",{"_index":21,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["big",{"_index":2915,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["bigger",{"_index":1070,"title":{},"name":{},"text":{"14":{},"50":{},"81":{},"96":{},"151":{},"217":{}},"component":{}}],["biggest",{"_index":2400,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["bill",{"_index":3209,"title":{},"name":{},"text":{"138":{},"204":{}},"component":{}}],["bin",{"_index":3522,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["bin/activ",{"_index":3614,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["binari",{"_index":1068,"title":{},"name":{},"text":{"14":{},"17":{},"26":{},"50":{},"53":{},"61":{},"80":{},"96":{},"110":{},"133":{},"151":{},"171":{},"173":{},"174":{},"181":{},"199":{},"217":{},"237":{},"239":{},"240":{},"247":{}},"component":{}}],["binarie(",{"_index":3795,"title":{},"name":{},"text":{"240":{}},"component":{}}],["bind",{"_index":749,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["binding:1.12",{"_index":701,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["binding:1.18",{"_index":2316,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["bit",{"_index":3159,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["bitbucket",{"_index":52,"title":{"2-29":{},"2-33":{},"2-34":{},"8-1":{},"22-2":{},"41-29":{},"41-33":{},"41-34":{},"47-6":{},"58-2":{},"77-9":{},"88-6":{},"96-10":{},"130-6":{},"141-6":{},"151-10":{},"157-3":{},"196-6":{},"207-6":{},"217-10":{},"223-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"8":{},"14":{},"19":{},"20":{},"22":{},"39":{},"40":{},"41":{},"42":{},"44":{},"45":{},"47":{},"50":{},"55":{},"56":{},"58":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"90":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"123":{},"126":{},"129":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"144":{},"146":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"186":{},"192":{},"195":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"210":{},"212":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"253":{},"258":{}},"component":{}}],["bitbucket.admin_password",{"_index":2969,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.admin_password=bitbucket_admin",{"_index":1265,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.admin_us",{"_index":2970,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.admin_user=bitbucket_admin",{"_index":1266,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.default.admin.group",{"_index":3442,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["bitbucket.default.user.group",{"_index":3441,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["bitbucket.technical.us",{"_index":3440,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["bitbucket.yml",{"_index":51,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["bitbucket_host",{"_index":1057,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["bitbucket_host=bitbucket.acme.org",{"_index":3199,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["bitbucket_project=opendevstack",{"_index":3200,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["bitbucket_url",{"_index":2488,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["bitbuckethost",{"_index":1056,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["bitbucketservic",{"_index":2531,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["bitbucketservice.postcomment(context.reponam",{"_index":2547,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["bitbucketurl",{"_index":2432,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["bix",{"_index":2984,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["bix.jpg",{"_index":1568,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["black",{"_index":3636,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["blank",{"_index":1943,"title":{},"name":{},"text":{"39":{},"47":{},"75":{},"88":{},"123":{},"141":{},"186":{},"207":{},"253":{}},"component":{}}],["bleed",{"_index":2052,"title":{},"name":{},"text":{"77":{},"80":{},"81":{},"133":{},"199":{}},"component":{}}],["blob",{"_index":132,"title":{"2-59":{},"41-59":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["block",{"_index":1127,"title":{},"name":{},"text":{"14":{},"28":{},"50":{},"65":{},"96":{},"97":{},"109":{},"114":{},"151":{},"152":{},"170":{},"176":{},"181":{},"217":{},"218":{},"236":{},"242":{},"247":{}},"component":{}}],["blown",{"_index":633,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["blueocean:1.18.0",{"_index":2319,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["blueprint",{"_index":1340,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["board",{"_index":417,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["bodi",{"_index":2850,"title":{},"name":{},"text":{"100":{},"109":{},"156":{},"170":{},"222":{},"236":{}},"component":{}}],["body_filter_by_lua_block",{"_index":3020,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["boilerpl",{"_index":678,"title":{"24":{},"32":{},"60":{},"68":{},"117":{},"95-5":{},"149-5":{},"215-5":{}},"name":{},"text":{"5":{},"8":{},"22":{},"24":{},"29":{},"32":{},"38":{},"39":{},"44":{},"58":{},"60":{},"63":{},"68":{},"74":{},"75":{},"80":{},"83":{},"95":{},"108":{},"112":{},"117":{},"123":{},"133":{},"136":{},"149":{},"158":{},"169":{},"173":{},"174":{},"186":{},"199":{},"202":{},"215":{},"224":{},"235":{},"239":{},"240":{},"253":{}},"component":{}}],["boilerplac",{"_index":1418,"title":{},"name":{},"text":{"24":{},"39":{},"60":{},"75":{}},"component":{}}],["book",{"_index":3586,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["boolean",{"_index":1047,"title":{},"name":{},"text":{"14":{},"22":{},"50":{},"58":{},"101":{},"151":{},"153":{},"157":{},"217":{},"219":{},"223":{}},"component":{}}],["booststrap",{"_index":1882,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["boot",{"_index":890,"title":{"27":{},"62":{},"111":{},"172":{},"238":{},"13-4":{},"49-4":{}},"name":{},"text":{"19":{},"20":{},"27":{},"55":{},"56":{},"62":{},"79":{},"93":{},"100":{},"101":{},"111":{},"132":{},"136":{},"147":{},"153":{},"156":{},"157":{},"172":{},"189":{},"198":{},"202":{},"213":{},"219":{},"222":{},"223":{},"238":{},"255":{}},"component":{}}],["bootrun",{"_index":1152,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["bootstrap",{"_index":3405,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["both",{"_index":993,"title":{},"name":{},"text":{"14":{},"19":{},"21":{},"32":{},"47":{},"50":{},"55":{},"57":{},"68":{},"77":{},"79":{},"80":{},"88":{},"95":{},"99":{},"100":{},"101":{},"104":{},"108":{},"117":{},"130":{},"132":{},"133":{},"141":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"187":{},"188":{},"189":{},"196":{},"198":{},"199":{},"207":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"252":{},"254":{},"255":{}},"component":{}}],["boto",{"_index":3689,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["bottom",{"_index":971,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["boundari",{"_index":1675,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["box",{"_index":221,"title":{},"name":{},"text":{"2":{},"20":{},"36":{},"37":{},"41":{},"56":{},"72":{},"73":{},"78":{},"98":{},"101":{},"122":{},"123":{},"131":{},"136":{},"154":{},"157":{},"185":{},"186":{},"197":{},"202":{},"220":{},"223":{},"251":{},"253":{}},"component":{}}],["branch",{"_index":455,"title":{"24-7":{},"60-7":{},"81-3":{},"96-4":{},"98-10":{},"126-10":{},"151-4":{},"154-13":{},"192-10":{},"217-4":{},"220-13":{},"258-10":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"21":{},"24":{},"27":{},"36":{},"39":{},"41":{},"44":{},"45":{},"47":{},"50":{},"57":{},"60":{},"62":{},"72":{},"75":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"95":{},"96":{},"98":{},"101":{},"102":{},"108":{},"111":{},"122":{},"126":{},"132":{},"133":{},"136":{},"141":{},"147":{},"149":{},"150":{},"151":{},"154":{},"157":{},"158":{},"169":{},"172":{},"181":{},"185":{},"192":{},"198":{},"199":{},"202":{},"207":{},"213":{},"215":{},"216":{},"217":{},"220":{},"223":{},"224":{},"235":{},"238":{},"247":{},"251":{},"258":{}},"component":{}}],["branch(",{"_index":2553,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["branch,tag",{"_index":2335,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["branch/branch",{"_index":3226,"title":{"150-6":{},"216-6":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["branchtoenvironmentmap",{"_index":918,"title":{"14-4":{},"50-4":{}},"name":{},"text":{"14":{},"50":{},"80":{},"95":{},"96":{},"133":{},"149":{},"150":{},"151":{},"199":{},"215":{},"216":{},"217":{}},"component":{}}],["break",{"_index":1095,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"79":{},"96":{},"132":{},"151":{},"198":{},"217":{}},"component":{}}],["bring",{"_index":2148,"title":{},"name":{},"text":{"80":{},"98":{},"133":{},"154":{},"199":{},"220":{}},"component":{}}],["broad",{"_index":3141,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["brought",{"_index":2670,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["brows",{"_index":422,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["browser",{"_index":558,"title":{},"name":{},"text":{"2":{},"19":{},"35":{},"36":{},"37":{},"41":{},"55":{},"71":{},"72":{},"73":{},"100":{},"101":{},"121":{},"122":{},"156":{},"157":{},"184":{},"185":{},"222":{},"223":{},"250":{},"251":{}},"component":{}}],["browserslist",{"_index":1788,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["bucket",{"_index":3691,"title":{},"name":{},"text":{"182":{},"187":{},"248":{},"252":{}},"component":{}}],["bug",{"_index":898,"title":{},"name":{},"text":{"13":{},"49":{},"81":{},"83":{},"93":{},"107":{},"136":{},"147":{},"168":{},"202":{},"213":{},"234":{}},"component":{}}],["bug/fix",{"_index":2226,"title":{},"name":{},"text":{"81":{}},"component":{}}],["bugfix",{"_index":3153,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["bugtrack",{"_index":1386,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["bugtrackerspac",{"_index":2865,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["build",{"_index":514,"title":{"13-3":{},"14-15":{},"47-3":{},"49-3":{},"50-15":{},"80-26":{},"82-3":{},"84-1":{},"84-2":{},"84-3":{},"84-4":{},"88-3":{},"92-1":{},"98-12":{},"133-26":{},"135-3":{},"141-3":{},"199-26":{},"201-3":{},"207-3":{},"240-10":{}},"name":{},"text":{"2":{},"4":{},"5":{},"7":{},"13":{},"14":{},"15":{},"16":{},"18":{},"19":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"46":{},"47":{},"49":{},"50":{},"51":{},"52":{},"54":{},"55":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"79":{},"80":{},"82":{},"83":{},"84":{},"88":{},"91":{},"92":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"132":{},"133":{},"135":{},"136":{},"137":{},"141":{},"142":{},"145":{},"146":{},"148":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"158":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"183":{},"184":{},"185":{},"186":{},"189":{},"192":{},"194":{},"198":{},"199":{},"201":{},"202":{},"203":{},"207":{},"208":{},"211":{},"212":{},"214":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"224":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"249":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["build.gradl",{"_index":1087,"title":{},"name":{},"text":{"14":{},"19":{},"27":{},"50":{},"55":{},"62":{},"96":{},"100":{},"111":{},"120":{},"151":{},"156":{},"172":{},"183":{},"217":{},"222":{},"238":{},"249":{}},"component":{}}],["build.openshift.io/v1",{"_index":2176,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["build.openshift.io/v1.buildconfig.html#object",{"_index":1976,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["build.properti",{"_index":1600,"title":{},"name":{},"text":{"30":{},"64":{},"113":{},"175":{},"241":{}},"component":{}}],["build.sbt",{"_index":1599,"title":{},"name":{},"text":{"30":{},"64":{},"113":{},"175":{},"241":{}},"component":{}}],["build.sh",{"_index":1444,"title":{},"name":{},"text":{"24":{},"39":{},"60":{},"75":{}},"component":{}}],["build/test",{"_index":2479,"title":{},"name":{},"text":{"96":{},"108":{},"115":{},"151":{},"169":{},"177":{},"217":{},"235":{},"243":{}},"component":{}}],["build?component=foo",{"_index":1972,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["build_numb",{"_index":997,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["build_url",{"_index":1001,"title":{"80-25":{},"133-25":{},"199-25":{}},"name":{},"text":{"14":{},"50":{},"80":{},"96":{},"99":{},"133":{},"151":{},"155":{},"199":{},"217":{},"221":{}},"component":{}}],["buildarg",{"_index":1098,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"96":{},"151":{},"217":{}},"component":{}}],["buildconfig",{"_index":741,"title":{},"name":{},"text":{"6":{},"8":{},"14":{},"18":{},"39":{},"45":{},"47":{},"50":{},"54":{},"75":{},"77":{},"80":{},"88":{},"96":{},"108":{},"128":{},"130":{},"133":{},"137":{},"141":{},"142":{},"146":{},"150":{},"151":{},"169":{},"194":{},"196":{},"199":{},"203":{},"207":{},"208":{},"212":{},"216":{},"217":{},"235":{}},"component":{}}],["buildconfig/imagestream",{"_index":2568,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["builder",{"_index":746,"title":{"25-6":{},"26-6":{},"27-12":{},"28-6":{},"29-6":{},"30-6":{},"31-6":{},"32-19":{},"33-6":{},"34-6":{},"35-6":{},"36-6":{},"37-6":{},"38-6":{},"61-6":{},"62-12":{},"63-6":{},"64-6":{},"65-6":{},"66-6":{},"67-6":{},"68-19":{},"69-6":{},"70-6":{},"71-6":{},"72-6":{},"73-6":{},"74-6":{},"109-9":{},"110-6":{},"111-12":{},"112-6":{},"113-6":{},"114-8":{},"115-6":{},"116-6":{},"117-19":{},"118-6":{},"119-6":{},"120-10":{},"121-6":{},"122-6":{},"124-6":{},"125-6":{},"170-10":{},"171-7":{},"172-13":{},"173-7":{},"174-7":{},"175-7":{},"176-9":{},"177-7":{},"178-8":{},"179-7":{},"180-7":{},"181-8":{},"182-5":{},"183-10":{},"184-7":{},"185-7":{},"187-6":{},"188-6":{},"190-6":{},"191-6":{},"236-10":{},"237-7":{},"238-13":{},"239-7":{},"240-7":{},"241-7":{},"242-9":{},"243-7":{},"244-8":{},"245-7":{},"246-7":{},"247-8":{},"248-5":{},"249-10":{},"250-7":{},"251-7":{},"252-6":{},"254-6":{},"256-6":{},"257-6":{}},"name":{},"text":{"7":{},"21":{},"26":{},"27":{},"28":{},"29":{},"34":{},"35":{},"36":{},"37":{},"38":{},"46":{},"57":{},"61":{},"62":{},"63":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"85":{},"102":{},"104":{},"110":{},"111":{},"112":{},"114":{},"119":{},"120":{},"121":{},"122":{},"138":{},"158":{},"171":{},"172":{},"173":{},"174":{},"176":{},"180":{},"181":{},"183":{},"184":{},"185":{},"204":{},"224":{},"237":{},"238":{},"239":{},"240":{},"242":{},"246":{},"247":{},"249":{},"250":{},"251":{}},"component":{}}],["buildfil",{"_index":956,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["buildnumb",{"_index":996,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["buildnumber=0",{"_index":2690,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["buildopenshiftimagestag",{"_index":3278,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["buildtim",{"_index":1003,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["buildtimeoutminut",{"_index":2473,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["buildtimeoutretri",{"_index":3306,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["buildurl",{"_index":1000,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["built",{"_index":723,"title":{"25-5":{},"26-5":{},"27-11":{},"28-5":{},"29-5":{},"30-5":{},"31-5":{},"32-18":{},"33-5":{},"34-5":{},"35-5":{},"36-5":{},"37-5":{},"38-5":{},"61-5":{},"62-11":{},"63-5":{},"64-5":{},"65-5":{},"66-5":{},"67-5":{},"68-18":{},"69-5":{},"70-5":{},"71-5":{},"72-5":{},"73-5":{},"74-5":{},"82-5":{},"109-8":{},"110-5":{},"111-11":{},"112-5":{},"113-5":{},"114-7":{},"115-5":{},"116-5":{},"117-18":{},"118-5":{},"119-5":{},"120-9":{},"121-5":{},"122-5":{},"124-5":{},"125-5":{},"135-5":{},"170-9":{},"171-6":{},"172-12":{},"173-6":{},"174-6":{},"175-6":{},"176-8":{},"177-6":{},"178-7":{},"179-6":{},"180-6":{},"181-5":{},"183-9":{},"184-6":{},"185-6":{},"187-5":{},"188-5":{},"190-5":{},"191-5":{},"201-5":{},"236-9":{},"237-6":{},"238-12":{},"239-6":{},"240-6":{},"241-6":{},"242-8":{},"243-6":{},"244-7":{},"245-6":{},"246-6":{},"247-5":{},"249-9":{},"250-6":{},"251-6":{},"252-5":{},"254-5":{},"256-5":{},"257-5":{}},"name":{},"text":{"6":{},"14":{},"17":{},"18":{},"21":{},"27":{},"32":{},"39":{},"45":{},"50":{},"53":{},"54":{},"57":{},"62":{},"68":{},"75":{},"80":{},"83":{},"85":{},"94":{},"96":{},"98":{},"99":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"111":{},"117":{},"128":{},"133":{},"136":{},"137":{},"138":{},"142":{},"146":{},"148":{},"150":{},"151":{},"154":{},"155":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"172":{},"174":{},"194":{},"199":{},"202":{},"203":{},"204":{},"208":{},"212":{},"214":{},"216":{},"217":{},"220":{},"221":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"238":{},"240":{}},"component":{}}],["bulk",{"_index":427,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["bundl",{"_index":1846,"title":{"98-20":{},"98-23":{},"154-23":{},"154-28":{},"220-23":{},"220-28":{}},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"98":{},"122":{},"154":{},"185":{},"220":{},"251":{}},"component":{}}],["busi",{"_index":3552,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["button",{"_index":392,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"132":{},"198":{}},"component":{}}],["c",{"_index":2626,"title":{"98-9":{},"126-9":{},"154-12":{},"192-9":{},"220-12":{},"258-9":{}},"name":{},"text":{"98":{},"126":{},"154":{},"181":{},"192":{},"220":{},"240":{},"247":{},"258":{}},"component":{}}],["c.git",{"_index":2656,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["ca",{"_index":725,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"204":{}},"component":{}}],["cach",{"_index":1011,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"153":{},"155":{},"181":{},"189":{},"217":{},"219":{},"221":{},"247":{},"255":{}},"component":{}}],["calcul",{"_index":2684,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"180":{},"219":{},"220":{},"246":{}},"component":{}}],["cale",{"_index":1271,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["call",{"_index":186,"title":{"22-5":{},"58-5":{},"101-7":{},"157-10":{},"223-10":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"20":{},"22":{},"27":{},"32":{},"34":{},"41":{},"44":{},"50":{},"55":{},"56":{},"58":{},"62":{},"68":{},"70":{},"76":{},"77":{},"78":{},"79":{},"83":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"117":{},"119":{},"129":{},"130":{},"131":{},"132":{},"136":{},"148":{},"151":{},"154":{},"155":{},"156":{},"157":{},"161":{},"172":{},"195":{},"196":{},"197":{},"198":{},"202":{},"214":{},"217":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"238":{}},"component":{}}],["candid",{"_index":467,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"151":{},"217":{}},"component":{}}],["can’t",{"_index":1681,"title":{},"name":{},"text":{"32":{},"68":{},"98":{},"117":{},"154":{},"220":{}},"component":{}}],["capabl",{"_index":1513,"title":{"98-15":{},"154-18":{},"220-18":{}},"name":{},"text":{"27":{},"32":{},"62":{},"68":{},"98":{},"101":{},"111":{},"117":{},"151":{},"154":{},"157":{},"172":{},"217":{},"220":{},"223":{},"238":{}},"component":{}}],["capacitor.config.xml",{"_index":3711,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["care",{"_index":69,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"15":{},"40":{},"41":{},"45":{},"50":{},"51":{},"76":{},"85":{},"129":{},"138":{},"195":{},"204":{}},"component":{}}],["care/chang",{"_index":1633,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["carefulli",{"_index":2110,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["cargo",{"_index":3500,"title":{},"name":{},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["cargo.lock",{"_index":3573,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["cargo.toml",{"_index":3574,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["case",{"_index":531,"title":{"22-6":{},"58-6":{}},"name":{},"text":{"2":{},"4":{},"14":{},"20":{},"21":{},"22":{},"25":{},"29":{},"32":{},"35":{},"36":{},"37":{},"38":{},"41":{},"43":{},"50":{},"56":{},"57":{},"58":{},"63":{},"66":{},"68":{},"71":{},"72":{},"73":{},"74":{},"81":{},"91":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"107":{},"115":{},"117":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"145":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"168":{},"172":{},"177":{},"184":{},"185":{},"186":{},"187":{},"188":{},"192":{},"193":{},"194":{},"211":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"234":{},"238":{},"240":{},"243":{},"250":{},"251":{},"252":{},"253":{},"254":{},"258":{}},"component":{}}],["cat",{"_index":2828,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["catalog",{"_index":639,"title":{},"name":{},"text":{"5":{},"44":{},"83":{}},"component":{}}],["catch",{"_index":3591,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["categori",{"_index":230,"title":{"128-1":{},"194-1":{}},"name":{},"text":{"2":{},"41":{},"128":{},"194":{}},"component":{}}],["catgeori",{"_index":3148,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["caus",{"_index":601,"title":{},"name":{},"text":{"4":{},"32":{},"43":{},"68":{},"91":{},"96":{},"114":{},"117":{},"145":{},"151":{},"176":{},"211":{},"217":{},"242":{}},"component":{}}],["caution",{"_index":979,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["cautiou",{"_index":1281,"title":{},"name":{},"text":{"21":{},"57":{},"102":{},"158":{},"224":{}},"component":{}}],["caveat",{"_index":2680,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["cd",{"_index":112,"title":{"2-26":{},"2-34":{},"8-2":{},"41-26":{},"41-34":{},"80-12":{},"80-22":{},"94-4":{},"128-3":{},"133-12":{},"133-22":{},"148-4":{},"194-3":{},"199-12":{},"199-22":{},"214-4":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"8":{},"13":{},"14":{},"19":{},"21":{},"22":{},"29":{},"36":{},"37":{},"41":{},"43":{},"44":{},"45":{},"47":{},"49":{},"50":{},"55":{},"57":{},"58":{},"63":{},"72":{},"73":{},"77":{},"79":{},"80":{},"83":{},"88":{},"91":{},"92":{},"94":{},"95":{},"96":{},"98":{},"100":{},"102":{},"108":{},"112":{},"122":{},"128":{},"130":{},"132":{},"133":{},"137":{},"141":{},"142":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"158":{},"169":{},"173":{},"178":{},"185":{},"187":{},"188":{},"194":{},"196":{},"198":{},"199":{},"203":{},"207":{},"208":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"224":{},"235":{},"239":{},"244":{},"251":{},"252":{},"254":{}},"component":{}}],["cd.$domain?trigger_secret=$secret",{"_index":2214,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd.192.168.56.101.nip.io",{"_index":372,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["cd.example.com?trigger_secret=s3cr3t",{"_index":1979,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["cd//cd",{"_index":2207,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd/airflow",{"_index":2000,"title":{},"name":{},"text":{"60":{}},"component":{}}],["cd/cd",{"_index":2158,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd/docgen:latest",{"_index":2201,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd/jenkin",{"_index":2387,"title":{},"name":{},"text":{"94":{},"95":{},"96":{},"99":{},"108":{},"148":{},"149":{},"151":{},"155":{},"169":{},"214":{},"215":{},"217":{},"221":{},"235":{}},"component":{}}],["cd3e9082",{"_index":2440,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["cd:jenkin",{"_index":2706,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["cd_user",{"_index":342,"title":{},"name":{},"text":{"2":{},"13":{},"41":{},"49":{}},"component":{}}],["cd_user_id_b64/cd_user_pwd_b64",{"_index":2064,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["cd_user_wrong_cd_us",{"_index":2880,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["cdproject",{"_index":3268,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["cduser",{"_index":2859,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["cdusercredentialsid",{"_index":2782,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["central",{"_index":743,"title":{"77-11":{},"79-1":{},"95-1":{},"128-2":{},"130-9":{},"132-1":{},"149-1":{},"194-2":{},"196-9":{},"198-1":{},"215-1":{}},"name":{},"text":{"6":{},"7":{},"8":{},"13":{},"22":{},"45":{},"46":{},"49":{},"58":{},"77":{},"79":{},"83":{},"92":{},"95":{},"99":{},"100":{},"102":{},"128":{},"130":{},"132":{},"136":{},"137":{},"142":{},"146":{},"149":{},"155":{},"156":{},"158":{},"194":{},"196":{},"198":{},"202":{},"203":{},"208":{},"212":{},"215":{},"221":{},"222":{},"224":{}},"component":{}}],["certain",{"_index":2238,"title":{},"name":{},"text":{"81":{},"98":{},"154":{},"220":{}},"component":{}}],["certif",{"_index":536,"title":{},"name":{},"text":{"2":{},"6":{},"7":{},"32":{},"41":{},"45":{},"46":{},"68":{},"85":{},"117":{},"138":{},"151":{},"204":{},"217":{}},"component":{}}],["chai",{"_index":1550,"title":{},"name":{},"text":{"28":{},"38":{},"65":{},"74":{}},"component":{}}],["challeng",{"_index":855,"title":{},"name":{},"text":{"11":{}},"component":{}}],["chanc",{"_index":2742,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["chang",{"_index":319,"title":{"4-3":{},"39-7":{},"43-3":{},"75-7":{},"79-7":{},"79-8":{},"81-1":{},"81-2":{},"91-3":{},"94-6":{},"95-3":{},"95-6":{},"95-7":{},"95-9":{},"132-7":{},"132-8":{},"145-3":{},"148-6":{},"149-3":{},"149-6":{},"149-7":{},"149-9":{},"150-8":{},"198-7":{},"198-8":{},"211-3":{},"214-6":{},"215-3":{},"215-6":{},"215-7":{},"215-9":{},"216-8":{}},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"12":{},"13":{},"14":{},"19":{},"21":{},"32":{},"34":{},"39":{},"41":{},"43":{},"45":{},"47":{},"49":{},"50":{},"55":{},"57":{},"60":{},"68":{},"70":{},"75":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"91":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"114":{},"117":{},"119":{},"120":{},"121":{},"127":{},"128":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"141":{},"142":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"169":{},"172":{},"173":{},"176":{},"180":{},"181":{},"183":{},"184":{},"193":{},"194":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"207":{},"208":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"238":{},"239":{},"242":{},"246":{},"247":{},"249":{},"250":{}},"component":{}}],["changeid",{"_index":2683,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["changeid=1234",{"_index":2689,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["changelog",{"_index":2251,"title":{},"name":{},"text":{"81":{}},"component":{}}],["changes/bugfix",{"_index":2297,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["chapter",{"_index":288,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"126":{},"154":{},"173":{},"192":{},"220":{},"239":{},"258":{}},"component":{}}],["char",{"_index":1021,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"100":{},"151":{},"156":{},"217":{},"222":{}},"component":{}}],["charact",{"_index":2249,"title":{},"name":{},"text":{"81":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["charnam",{"_index":3412,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["charset=utf",{"_index":1380,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["chart",{"_index":3135,"title":{},"name":{},"text":{"127":{},"142":{},"146":{},"151":{},"153":{},"174":{},"193":{},"208":{},"212":{},"217":{},"219":{},"240":{}},"component":{}}],["chart.nam",{"_index":3410,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["chart.vers",{"_index":3411,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["chart.yaml",{"_index":3565,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["chartdir",{"_index":3309,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["chartnam",{"_index":3384,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["check",{"_index":349,"title":{"5-8":{},"44-8":{},"80-11":{},"100-8":{},"133-11":{},"156-8":{},"199-11":{},"222-8":{}},"name":{},"text":{"2":{},"4":{},"12":{},"14":{},"26":{},"32":{},"41":{},"43":{},"50":{},"61":{},"68":{},"77":{},"79":{},"80":{},"83":{},"91":{},"94":{},"96":{},"100":{},"110":{},"113":{},"117":{},"127":{},"130":{},"132":{},"133":{},"136":{},"145":{},"148":{},"150":{},"151":{},"156":{},"171":{},"173":{},"174":{},"175":{},"180":{},"181":{},"182":{},"193":{},"196":{},"198":{},"199":{},"202":{},"211":{},"214":{},"216":{},"217":{},"222":{},"237":{},"239":{},"240":{},"241":{},"246":{},"247":{},"248":{}},"component":{}}],["check/format",{"_index":3062,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["checkbox",{"_index":326,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["checker",{"_index":721,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["checkout",{"_index":2141,"title":{},"name":{},"text":{"80":{},"81":{},"133":{},"199":{}},"component":{}}],["chef",{"_index":3721,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["cherri",{"_index":2239,"title":{},"name":{},"text":{"81":{}},"component":{}}],["chgrp",{"_index":3671,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["chmod",{"_index":2050,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"181":{},"196":{},"203":{},"208":{},"212":{},"247":{}},"component":{}}],["choic",{"_index":1283,"title":{},"name":{},"text":{"21":{},"57":{},"102":{},"158":{},"224":{}},"component":{}}],["choos",{"_index":126,"title":{"2-50":{},"41-50":{}},"name":{},"text":{"2":{},"5":{},"41":{},"44":{},"79":{},"83":{},"94":{},"95":{},"132":{},"148":{},"149":{},"158":{},"198":{},"214":{},"215":{},"224":{}},"component":{}}],["chose",{"_index":2258,"title":{"82-1":{},"135-1":{},"201-1":{}},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["chosen",{"_index":1031,"title":{},"name":{},"text":{"14":{},"22":{},"50":{},"58":{},"96":{},"97":{},"101":{},"102":{},"151":{},"152":{},"153":{},"157":{},"189":{},"217":{},"218":{},"219":{},"223":{},"255":{}},"component":{}}],["chown",{"_index":1956,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["chrome",{"_index":1889,"title":{},"name":{},"text":{"38":{},"74":{},"120":{},"183":{},"249":{}},"component":{}}],["chrono",{"_index":3783,"title":{},"name":{},"text":{"240":{}},"component":{}}],["ci",{"_index":652,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"96":{},"151":{},"174":{},"217":{},"240":{}},"component":{}}],["ci/cd",{"_index":656,"title":{"24-8":{},"60-8":{}},"name":{},"text":{"5":{},"24":{},"27":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"44":{},"60":{},"62":{},"63":{},"64":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"83":{},"111":{},"112":{},"113":{},"117":{},"119":{},"120":{},"122":{},"136":{},"172":{},"173":{},"174":{},"175":{},"180":{},"181":{},"183":{},"185":{},"187":{},"188":{},"202":{},"238":{},"239":{},"240":{},"241":{},"246":{},"247":{},"249":{},"251":{},"252":{},"254":{}},"component":{}}],["cicd",{"_index":3542,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["cidr",{"_index":358,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["cinc",{"_index":3460,"title":{},"name":{},"text":{"160":{},"187":{},"188":{},"226":{},"252":{},"254":{}},"component":{}}],["cirtic",{"_index":3740,"title":{},"name":{},"text":{"217":{}},"component":{}}],["ciskip",{"_index":1060,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["claim",{"_index":1062,"title":{},"name":{},"text":{"14":{},"20":{},"31":{},"50":{},"56":{},"67":{},"78":{},"96":{},"99":{},"101":{},"116":{},"131":{},"151":{},"155":{},"157":{},"178":{},"197":{},"217":{},"221":{},"223":{},"244":{}},"component":{}}],["class",{"_index":300,"title":{},"name":{},"text":{"2":{},"14":{},"19":{},"27":{},"32":{},"38":{},"41":{},"50":{},"55":{},"62":{},"68":{},"74":{},"94":{},"97":{},"100":{},"111":{},"117":{},"148":{},"152":{},"156":{},"172":{},"214":{},"218":{},"222":{},"238":{}},"component":{}}],["clean",{"_index":773,"title":{"127-3":{},"193-3":{}},"name":{},"text":{"8":{},"22":{},"32":{},"47":{},"58":{},"68":{},"81":{},"95":{},"96":{},"100":{},"101":{},"117":{},"127":{},"149":{},"151":{},"156":{},"157":{},"161":{},"172":{},"193":{},"215":{},"217":{},"222":{},"223":{},"227":{},"234":{},"238":{}},"component":{}}],["cleanup",{"_index":2523,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["clear",{"_index":2260,"title":{},"name":{},"text":{"82":{},"98":{},"135":{},"154":{},"201":{},"220":{}},"component":{}}],["clearer",{"_index":2404,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["cli",{"_index":726,"title":{},"name":{},"text":{"6":{},"7":{},"26":{},"27":{},"34":{},"35":{},"36":{},"38":{},"45":{},"46":{},"61":{},"62":{},"70":{},"71":{},"72":{},"74":{},"85":{},"105":{},"110":{},"111":{},"119":{},"121":{},"122":{},"127":{},"138":{},"151":{},"171":{},"174":{},"184":{},"185":{},"193":{},"204":{},"217":{},"237":{},"240":{},"250":{},"251":{}},"component":{}}],["cli.json",{"_index":1841,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["click",{"_index":157,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{},"47":{},"88":{},"141":{},"178":{},"207":{},"244":{}},"component":{}}],["client",{"_index":325,"title":{"78-6":{},"131-6":{},"197-6":{}},"name":{},"text":{"2":{},"4":{},"19":{},"20":{},"24":{},"41":{},"43":{},"55":{},"56":{},"60":{},"76":{},"78":{},"91":{},"100":{},"101":{},"109":{},"129":{},"131":{},"145":{},"156":{},"157":{},"170":{},"174":{},"195":{},"197":{},"211":{},"222":{},"223":{},"236":{},"240":{}},"component":{}}],["client.j",{"_index":1161,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["client.provid",{"_index":1254,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["clippi",{"_index":3588,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["clita",{"_index":820,"title":{},"name":{},"text":{"10":{}},"component":{}}],["clone",{"_index":267,"title":{"96-12":{},"126-13":{},"192-13":{},"258-13":{}},"name":{},"text":{"2":{},"14":{},"19":{},"27":{},"36":{},"37":{},"39":{},"41":{},"50":{},"55":{},"62":{},"72":{},"73":{},"75":{},"80":{},"81":{},"96":{},"98":{},"100":{},"108":{},"111":{},"122":{},"124":{},"125":{},"133":{},"150":{},"151":{},"154":{},"156":{},"169":{},"172":{},"185":{},"190":{},"191":{},"199":{},"216":{},"217":{},"220":{},"222":{},"235":{},"238":{},"251":{},"256":{},"257":{}},"component":{}}],["clonesourceenv",{"_index":1030,"title":{},"name":{},"text":{"14":{},"50":{},"96":{}},"component":{}}],["closur",{"_index":989,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["cloud",{"_index":3257,"title":{"181-7":{},"247-7":{}},"name":{},"text":{"150":{},"154":{},"160":{},"181":{},"216":{},"220":{},"226":{},"247":{}},"component":{}}],["cloudform",{"_index":3716,"title":{},"name":{},"text":{"187":{},"252":{}},"component":{}}],["cluster",{"_index":249,"title":{"24":{},"60":{},"77-8":{},"95-11":{},"149-11":{},"215-11":{}},"name":{"60":{}},"text":{"2":{},"6":{},"7":{},"13":{},"21":{},"24":{},"31":{},"32":{},"41":{},"45":{},"46":{},"49":{},"57":{},"60":{},"67":{},"68":{},"77":{},"80":{},"83":{},"85":{},"94":{},"95":{},"96":{},"98":{},"99":{},"101":{},"116":{},"117":{},"126":{},"127":{},"128":{},"130":{},"133":{},"136":{},"138":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"178":{},"192":{},"193":{},"194":{},"196":{},"199":{},"202":{},"204":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"244":{},"258":{}},"component":{}}],["cluster.com",{"_index":2725,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["cluster/bas",{"_index":2001,"title":{},"name":{},"text":{"60":{}},"component":{}}],["cluster=airflow",{"_index":1420,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["cne",{"_index":718,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"204":{}},"component":{}}],["code",{"_index":183,"title":{"5-8":{},"19-2":{},"19-3":{},"32-7":{},"44-8":{},"55-2":{},"55-3":{},"68-7":{},"96-9":{},"98-19":{},"100-3":{},"100-4":{},"117-7":{},"151-9":{},"154-22":{},"156-3":{},"156-4":{},"217-9":{},"220-22":{},"222-3":{},"222-4":{}},"name":{},"text":{"2":{},"6":{},"7":{},"13":{},"14":{},"15":{},"17":{},"19":{},"21":{},"24":{},"26":{},"27":{},"28":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"45":{},"46":{},"49":{},"50":{},"51":{},"53":{},"55":{},"57":{},"60":{},"61":{},"62":{},"65":{},"67":{},"68":{},"70":{},"72":{},"73":{},"75":{},"77":{},"80":{},"81":{},"82":{},"93":{},"96":{},"98":{},"100":{},"102":{},"103":{},"104":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"116":{},"117":{},"119":{},"121":{},"122":{},"123":{},"126":{},"130":{},"133":{},"135":{},"136":{},"147":{},"151":{},"153":{},"154":{},"156":{},"158":{},"159":{},"160":{},"161":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"178":{},"180":{},"181":{},"184":{},"185":{},"186":{},"189":{},"192":{},"196":{},"199":{},"201":{},"202":{},"213":{},"217":{},"219":{},"220":{},"222":{},"224":{},"225":{},"226":{},"227":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"244":{},"246":{},"247":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["code\":\"exception\",\"error",{"_index":2881,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["code\":\"unexistant_user\",\"error",{"_index":2878,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["code/analysi",{"_index":3221,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["code=\"$http_resp_cod",{"_index":2856,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["codebas",{"_index":1301,"title":{},"name":{},"text":{"21":{},"36":{},"57":{},"72":{},"101":{},"122":{},"157":{},"185":{},"223":{},"251":{}},"component":{}}],["coher",{"_index":3186,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["collect",{"_index":1004,"title":{"19-6":{},"55-6":{},"100-11":{},"156-11":{},"222-11":{}},"name":{},"text":{"14":{},"19":{},"50":{},"55":{},"82":{},"96":{},"99":{},"100":{},"135":{},"151":{},"155":{},"156":{},"174":{},"201":{},"217":{},"221":{},"222":{},"240":{}},"component":{}}],["color",{"_index":3316,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["column",{"_index":1672,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"182":{},"248":{}},"component":{}}],["com",{"_index":1602,"title":{},"name":{},"text":{"30":{},"64":{},"109":{},"170":{},"236":{}},"component":{}}],["combin",{"_index":2103,"title":{},"name":{},"text":{"79":{},"126":{},"132":{},"187":{},"188":{},"192":{},"198":{},"252":{},"254":{},"258":{}},"component":{}}],["come",{"_index":1287,"title":{},"name":{},"text":{"21":{},"22":{},"36":{},"37":{},"57":{},"58":{},"72":{},"73":{},"98":{},"102":{},"109":{},"122":{},"150":{},"154":{},"158":{},"170":{},"173":{},"174":{},"185":{},"187":{},"188":{},"216":{},"220":{},"224":{},"236":{},"239":{},"240":{},"251":{},"252":{},"254":{}},"component":{}}],["comma",{"_index":771,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"93":{},"96":{},"141":{},"147":{},"151":{},"207":{},"213":{},"217":{}},"component":{}}],["command",{"_index":1150,"title":{},"name":{},"text":{"19":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"55":{},"62":{},"63":{},"64":{},"65":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"80":{},"93":{},"94":{},"100":{},"111":{},"112":{},"113":{},"114":{},"117":{},"119":{},"120":{},"121":{},"122":{},"133":{},"137":{},"147":{},"148":{},"151":{},"156":{},"161":{},"172":{},"175":{},"176":{},"183":{},"184":{},"185":{},"199":{},"203":{},"213":{},"214":{},"217":{},"222":{},"227":{},"234":{},"238":{},"241":{},"242":{},"249":{},"250":{},"251":{}},"component":{}}],["command=\"${1",{"_index":2831,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["commands.j",{"_index":1761,"title":{},"name":{},"text":{"34":{},"38":{},"70":{},"74":{},"119":{}},"component":{}}],["commands.t",{"_index":1767,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"181":{},"247":{}},"component":{}}],["comment",{"_index":1519,"title":{},"name":{},"text":{"27":{},"62":{},"96":{},"109":{},"111":{},"151":{},"170":{},"172":{},"217":{},"236":{},"238":{},"240":{}},"component":{}}],["commerci",{"_index":2551,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["commit",{"_index":239,"title":{"5-3":{},"44-3":{},"83-6":{},"136-5":{},"202-5":{}},"name":{},"text":{"2":{},"14":{},"21":{},"24":{},"28":{},"32":{},"38":{},"39":{},"41":{},"47":{},"50":{},"57":{},"60":{},"65":{},"68":{},"74":{},"75":{},"77":{},"79":{},"80":{},"81":{},"88":{},"95":{},"96":{},"98":{},"100":{},"102":{},"114":{},"117":{},"130":{},"132":{},"133":{},"137":{},"141":{},"142":{},"146":{},"149":{},"151":{},"154":{},"156":{},"158":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"196":{},"198":{},"199":{},"203":{},"207":{},"208":{},"212":{},"215":{},"217":{},"220":{},"222":{},"224":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["commitgitworkingtre",{"_index":3267,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["common",{"_index":672,"title":{"94-14":{},"148-14":{},"214-14":{}},"name":{},"text":{"5":{},"32":{},"37":{},"44":{},"68":{},"73":{},"83":{},"94":{},"117":{},"148":{},"151":{},"153":{},"158":{},"174":{},"187":{},"188":{},"214":{},"217":{},"219":{},"224":{},"240":{},"252":{},"254":{}},"component":{}}],["common.r",{"_index":3570,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["common/foobar",{"_index":2789,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["common/prepar",{"_index":1959,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["commonj",{"_index":3084,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["commun",{"_index":403,"title":{},"name":{},"text":{"2":{},"20":{},"41":{},"56":{},"96":{},"101":{},"127":{},"151":{},"153":{},"157":{},"174":{},"189":{},"193":{},"217":{},"219":{},"223":{},"240":{},"255":{}},"component":{}}],["compar",{"_index":906,"title":{},"name":{},"text":{"13":{},"49":{},"123":{},"186":{},"253":{}},"component":{}}],["compat",{"_index":2301,"title":{},"name":{},"text":{"83":{},"95":{},"114":{},"136":{},"149":{},"161":{},"172":{},"176":{},"202":{},"215":{},"227":{},"234":{},"238":{},"242":{}},"component":{}}],["compil",{"_index":1514,"title":{},"name":{},"text":{"27":{},"38":{},"62":{},"74":{},"111":{},"113":{},"114":{},"172":{},"174":{},"175":{},"176":{},"238":{},"240":{},"241":{},"242":{}},"component":{}}],["compile:clean",{"_index":3752,"title":{},"name":{},"text":{"234":{}},"component":{}}],["compileropt",{"_index":3081,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["complet",{"_index":282,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"15":{},"32":{},"41":{},"44":{},"50":{},"51":{},"68":{},"77":{},"80":{},"83":{},"95":{},"96":{},"98":{},"99":{},"100":{},"117":{},"123":{},"127":{},"128":{},"130":{},"133":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"186":{},"193":{},"194":{},"196":{},"199":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"253":{}},"component":{}}],["complex",{"_index":1292,"title":{},"name":{},"text":{"21":{},"57":{}},"component":{}}],["complianc",{"_index":2630,"title":{"98-14":{},"126-12":{},"154-17":{},"192-12":{},"220-17":{},"258-12":{}},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["compliant",{"_index":3737,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["complic",{"_index":1673,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["compon",{"_index":26,"title":{"96":{},"151":{},"189":{},"217":{},"255":{},"80-23":{},"83-4":{},"94-5":{},"94-7":{},"98-12":{},"133-23":{},"148-5":{},"148-7":{},"154-15":{},"158-2":{},"199-23":{},"214-5":{},"214-7":{},"220-15":{},"224-2":{}},"name":{"96":{},"151":{},"217":{}},"text":{"1":{},"3":{},"12":{},"14":{},"15":{},"21":{},"22":{},"24":{},"37":{},"38":{},"39":{},"40":{},"42":{},"47":{},"50":{},"51":{},"57":{},"58":{},"60":{},"73":{},"74":{},"75":{},"76":{},"78":{},"80":{},"82":{},"83":{},"87":{},"88":{},"90":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"102":{},"108":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"131":{},"133":{},"135":{},"136":{},"140":{},"141":{},"144":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"186":{},"189":{},"192":{},"193":{},"194":{},"195":{},"197":{},"199":{},"201":{},"202":{},"206":{},"207":{},"210":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["component'",{"_index":3764,"title":{},"name":{},"text":{"240":{}},"component":{}}],["component106",{"_index":2888,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["component_id",{"_index":1964,"title":{},"name":{},"text":{"39":{},"75":{},"99":{},"100":{},"155":{},"156":{},"221":{},"222":{}},"component":{}}],["component_id\":\"b",{"_index":2869,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["component_suffix",{"_index":2517,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["component_suffix=${componentsuffix",{"_index":2516,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["component_typ",{"_index":2797,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["component_type\":\"dock",{"_index":2868,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["componentid",{"_index":936,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"99":{},"149":{},"150":{},"151":{},"155":{},"215":{},"216":{},"217":{},"221":{}},"component":{}}],["componentid=exampl",{"_index":3313,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["componentsuffix",{"_index":2508,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["component’",{"_index":2635,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["compris",{"_index":3187,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["compulsori",{"_index":3403,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["comput",{"_index":174,"title":{},"name":{},"text":{"2":{},"31":{},"32":{},"41":{},"67":{},"68":{},"116":{},"117":{},"174":{},"178":{},"240":{},"244":{}},"component":{}}],["computer.jnlpmac",{"_index":1997,"title":{},"name":{},"text":{"50":{},"96":{},"151":{},"217":{}},"component":{}}],["computer.nam",{"_index":1998,"title":{},"name":{},"text":{"50":{},"96":{},"151":{},"217":{}},"component":{}}],["concept",{"_index":235,"title":{},"name":{},"text":{"2":{},"41":{},"83":{},"136":{},"202":{}},"component":{}}],["conceptu",{"_index":2693,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["concret",{"_index":716,"title":{},"name":{},"text":{"6":{},"30":{},"45":{},"64":{},"85":{},"98":{},"138":{},"154":{},"204":{},"220":{}},"component":{}}],["concurr",{"_index":887,"title":{},"name":{},"text":{"12":{}},"component":{}}],["conda",{"_index":1725,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["condit",{"_index":2874,"title":{},"name":{},"text":{"100":{},"151":{},"156":{},"217":{},"222":{}},"component":{}}],["conditionalonproperti",{"_index":1176,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["conditionalonproperty(nam",{"_index":1183,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["conf",{"_index":3049,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["confidenti",{"_index":1653,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["confidentiality/data",{"_index":1683,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["config",{"_index":549,"title":{},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"19":{},"21":{},"22":{},"24":{},"31":{},"32":{},"36":{},"41":{},"43":{},"45":{},"49":{},"50":{},"55":{},"57":{},"58":{},"60":{},"68":{},"72":{},"77":{},"79":{},"80":{},"83":{},"91":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"107":{},"108":{},"117":{},"122":{},"130":{},"132":{},"133":{},"145":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"168":{},"169":{},"174":{},"181":{},"185":{},"196":{},"198":{},"199":{},"211":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"234":{},"235":{},"240":{},"247":{},"251":{}},"component":{}}],["config.application.url",{"_index":3114,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["config.pi",{"_index":3630,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["config.txt",{"_index":2826,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["config.xml",{"_index":1842,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["config.yaml",{"_index":3506,"title":{},"name":{},"text":{"170":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"236":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["config/application.properti",{"_index":1156,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["config/imag",{"_index":2386,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["config/nextest.toml",{"_index":3593,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["configmap",{"_index":1155,"title":{},"name":{},"text":{"19":{},"55":{},"60":{},"80":{},"98":{},"100":{},"101":{},"133":{},"151":{},"154":{},"156":{},"157":{},"199":{},"217":{},"220":{},"222":{},"223":{}},"component":{}}],["configur",{"_index":88,"title":{"20":{},"56":{},"101":{},"157":{},"223":{},"2-12":{},"2-14":{},"2-17":{},"2-23":{},"2-24":{},"2-30":{},"2-31":{},"2-36":{},"2-41":{},"2-42":{},"2-46":{},"2-50":{},"2-51":{},"2-53":{},"2-54":{},"2-55":{},"2-64":{},"2-65":{},"6-2":{},"20-1":{},"20-2":{},"20-3":{},"24-10":{},"27-6":{},"41-12":{},"41-14":{},"41-17":{},"41-23":{},"41-24":{},"41-30":{},"41-31":{},"41-36":{},"41-41":{},"41-42":{},"41-46":{},"41-50":{},"41-51":{},"41-53":{},"41-54":{},"41-55":{},"41-64":{},"41-65":{},"45-2":{},"56-1":{},"56-2":{},"56-3":{},"60-10":{},"62-6":{},"77-4":{},"79-5":{},"80-6":{},"80-17":{},"87-1":{},"98-2":{},"98-24":{},"101-5":{},"101-10":{},"101-11":{},"101-12":{},"111-6":{},"120-5":{},"120-8":{},"126-2":{},"130-4":{},"132-5":{},"133-6":{},"133-17":{},"140-1":{},"146-1":{},"154-2":{},"154-25":{},"154-29":{},"157-8":{},"157-13":{},"157-14":{},"157-15":{},"157-18":{},"172-6":{},"183-5":{},"183-8":{},"192-2":{},"196-4":{},"198-5":{},"199-6":{},"199-17":{},"206-1":{},"212-1":{},"220-2":{},"220-25":{},"220-29":{},"223-8":{},"223-13":{},"223-14":{},"223-15":{},"223-18":{},"238-6":{},"249-5":{},"249-8":{},"258-2":{}},"name":{"20":{},"56":{},"101":{},"157":{},"223":{}},"text":{"2":{},"6":{},"11":{},"12":{},"13":{},"14":{},"16":{},"17":{},"19":{},"20":{},"21":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"45":{},"49":{},"50":{},"52":{},"53":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{},"62":{},"63":{},"65":{},"66":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"85":{},"87":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"192":{},"194":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"258":{}},"component":{}}],["configuraiton",{"_index":1507,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["configuration/od",{"_index":2072,"title":{},"name":{},"text":{"77":{},"100":{},"130":{},"137":{},"142":{},"146":{},"156":{},"196":{},"203":{},"208":{},"212":{},"222":{}},"component":{}}],["confirm",{"_index":281,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["conflict",{"_index":1970,"title":{},"name":{},"text":{"47":{},"81":{},"88":{},"141":{},"151":{},"207":{},"217":{}},"component":{}}],["confluenc",{"_index":60,"title":{"2-45":{},"2-47":{},"41-45":{},"41-47":{}},"name":{},"text":{"1":{},"2":{},"3":{},"19":{},"20":{},"22":{},"40":{},"41":{},"42":{},"55":{},"56":{},"58":{},"76":{},"83":{},"90":{},"100":{},"101":{},"102":{},"129":{},"130":{},"136":{},"144":{},"156":{},"157":{},"158":{},"195":{},"196":{},"202":{},"210":{},"222":{},"223":{},"224":{}},"component":{}}],["confluence.admin_password",{"_index":1262,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.admin_password=confluence_admin",{"_index":1267,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.admin_us",{"_index":1261,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.admin_user=confluence_admin",{"_index":1268,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.blueprint.key.=com.atlassian.confluence.plugins.conflu",{"_index":1344,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.blueprint.key=com.atlassian.confluence.plugins.conflu",{"_index":1338,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.yml",{"_index":59,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["confluence_enable_sso.yml",{"_index":61,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["congratul",{"_index":2074,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["connect",{"_index":164,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"2":{},"4":{},"11":{},"19":{},"24":{},"32":{},"41":{},"43":{},"47":{},"55":{},"60":{},"68":{},"78":{},"88":{},"91":{},"93":{},"100":{},"101":{},"117":{},"131":{},"141":{},"145":{},"147":{},"156":{},"157":{},"174":{},"197":{},"207":{},"211":{},"213":{},"222":{},"223":{},"240":{}},"component":{}}],["connect/auth",{"_index":1236,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connect/cert",{"_index":1244,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connect/token",{"_index":1239,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connect/userinfo",{"_index":1242,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connection.yaml",{"_index":3559,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["connector",{"_index":868,"title":{},"name":{},"text":{"12":{},"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["consequ",{"_index":2230,"title":{},"name":{},"text":{"81":{},"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["consetetur",{"_index":796,"title":{},"name":{},"text":{"10":{}},"component":{}}],["consid",{"_index":1620,"title":{},"name":{},"text":{"31":{},"32":{},"67":{},"68":{},"98":{},"116":{},"117":{},"154":{},"162":{},"163":{},"164":{},"165":{},"178":{},"181":{},"184":{},"220":{},"228":{},"229":{},"230":{},"231":{},"244":{},"247":{},"250":{},"258":{}},"component":{}}],["consider",{"_index":1685,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["consist",{"_index":324,"title":{},"name":{},"text":{"2":{},"39":{},"41":{},"75":{},"80":{},"95":{},"100":{},"113":{},"133":{},"149":{},"156":{},"158":{},"175":{},"199":{},"215":{},"222":{},"224":{},"241":{}},"component":{}}],["consol",{"_index":108,"title":{"2-22":{},"41-22":{}},"name":{},"text":{"2":{},"28":{},"29":{},"41":{},"47":{},"60":{},"63":{},"65":{},"88":{},"96":{},"108":{},"114":{},"141":{},"151":{},"169":{},"176":{},"207":{},"217":{},"235":{},"242":{}},"component":{}}],["constrain",{"_index":2796,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["constraint",{"_index":2372,"title":{"94-5":{},"148-5":{},"214-5":{}},"name":{},"text":{"94":{},"95":{},"96":{},"99":{},"148":{},"149":{},"151":{},"155":{},"214":{},"215":{},"217":{},"221":{}},"component":{}}],["consum",{"_index":1130,"title":{"19-5":{},"55-5":{},"100-6":{},"100-7":{},"156-6":{},"156-7":{},"222-6":{},"222-7":{}},"name":{},"text":{"19":{},"23":{},"28":{},"32":{},"55":{},"59":{},"65":{},"68":{},"83":{},"98":{},"100":{},"101":{},"114":{},"117":{},"128":{},"130":{},"136":{},"154":{},"156":{},"157":{},"176":{},"194":{},"196":{},"202":{},"220":{},"222":{},"223":{},"242":{}},"component":{}}],["contact",{"_index":1828,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["contaienr",{"_index":3140,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["contain",{"_index":5,"title":{"32-2":{},"68-2":{},"93-4":{},"117-2":{},"147-4":{},"213-4":{}},"name":{},"text":{"1":{},"5":{},"6":{},"8":{},"13":{},"14":{},"19":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"32":{},"33":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"44":{},"45":{},"49":{},"50":{},"55":{},"60":{},"61":{},"62":{},"63":{},"65":{},"66":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"79":{},"80":{},"81":{},"82":{},"84":{},"85":{},"86":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"117":{},"118":{},"121":{},"122":{},"123":{},"128":{},"129":{},"132":{},"133":{},"135":{},"136":{},"138":{},"139":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"179":{},"180":{},"182":{},"184":{},"185":{},"186":{},"187":{},"188":{},"194":{},"195":{},"198":{},"199":{},"201":{},"202":{},"204":{},"205":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"245":{},"246":{},"248":{},"250":{},"251":{},"252":{},"253":{},"254":{}},"component":{}}],["container(",{"_index":2489,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["containertempl",{"_index":1981,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["container’",{"_index":2994,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["content",{"_index":128,"title":{"2-52":{},"24-2":{},"41-52":{},"60-2":{}},"name":{},"text":{"2":{},"19":{},"20":{},"22":{},"39":{},"41":{},"55":{},"56":{},"58":{},"75":{},"78":{},"80":{},"82":{},"94":{},"95":{},"96":{},"100":{},"101":{},"102":{},"109":{},"123":{},"131":{},"133":{},"135":{},"148":{},"149":{},"150":{},"151":{},"156":{},"157":{},"170":{},"182":{},"186":{},"197":{},"199":{},"201":{},"214":{},"215":{},"216":{},"217":{},"222":{},"223":{},"236":{},"248":{},"253":{}},"component":{}}],["content_by_lua_block",{"_index":3010,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["context",{"_index":949,"title":{"95-7":{},"96-3":{},"99-3":{},"149-7":{},"151-3":{},"155-3":{},"215-7":{},"217-3":{},"221-3":{}},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"87":{},"95":{},"96":{},"99":{},"101":{},"108":{},"115":{},"140":{},"149":{},"151":{},"155":{},"157":{},"169":{},"174":{},"177":{},"206":{},"215":{},"217":{},"221":{},"223":{},"235":{},"240":{},"243":{}},"component":{}}],["context.agentimagetag",{"_index":3435,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["context.bitbuckethost",{"_index":2435,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.bitbuckethostwithoutschem",{"_index":2437,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.cdproject",{"_index":3334,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["context.componentid",{"_index":2511,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["context.environ",{"_index":2522,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.gitbranch",{"_index":3680,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["context.gitbranch.startswith('releas",{"_index":3681,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["context.gitcommitrawmessag",{"_index":2527,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.giturlhttp",{"_index":2800,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.issueid",{"_index":2509,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.nexuspassword",{"_index":2451,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.nexusurl",{"_index":2449,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.nexususernam",{"_index":2450,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.odsgitref",{"_index":2802,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.odsimagetag",{"_index":2801,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.projectid",{"_index":1088,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["context.reponam",{"_index":2526,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.selector",{"_index":3342,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["context.sharedlibraryref",{"_index":3436,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["context.shortgitcommit",{"_index":2565,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.sourcedir",{"_index":2798,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.sourcedir}/fil",{"_index":2790,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.sourcedir}/ocp.env",{"_index":2795,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.sourcedir}/openshift",{"_index":2793,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.tagvers",{"_index":2439,"title":{},"name":{},"text":{"95":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["context.tagversion}.tar.gz",{"_index":3344,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["context.targetdir",{"_index":2791,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.targetproject",{"_index":2530,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.testresult",{"_index":3089,"title":{},"name":{},"text":{"115":{},"177":{},"243":{}},"component":{}}],["contin",{"_index":645,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"113":{},"136":{},"175":{},"202":{},"241":{}},"component":{}}],["continu",{"_index":152,"title":{},"name":{},"text":{"2":{},"4":{},"13":{},"39":{},"41":{},"43":{},"49":{},"75":{},"81":{},"91":{},"93":{},"127":{},"137":{},"145":{},"147":{},"157":{},"193":{},"203":{},"211":{},"213":{},"223":{}},"component":{}}],["contrast",{"_index":1280,"title":{},"name":{},"text":{"21":{},"57":{},"102":{},"151":{},"153":{},"158":{},"217":{},"219":{},"224":{}},"component":{}}],["contrib",{"_index":2136,"title":{},"name":{},"text":{"79":{},"80":{},"108":{},"132":{},"133":{},"169":{},"198":{},"199":{},"235":{}},"component":{}}],["contrib/tree/master/quickstart",{"_index":2814,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["contribut",{"_index":1936,"title":{"124":{},"125":{},"190":{},"191":{},"256":{},"257":{},"39-8":{},"75-8":{},"81-2":{},"81-3":{},"82-4":{},"123-7":{},"135-4":{},"186-8":{},"201-4":{},"253-8":{}},"name":{},"text":{"39":{},"75":{},"81":{},"108":{},"123":{},"124":{},"125":{},"134":{},"169":{},"186":{},"190":{},"191":{},"200":{},"235":{},"253":{},"256":{},"257":{}},"component":{}}],["control",{"_index":19,"title":{},"name":{},"text":{"1":{},"2":{},"14":{},"19":{},"34":{},"40":{},"41":{},"50":{},"55":{},"70":{},"76":{},"82":{},"96":{},"98":{},"99":{},"100":{},"101":{},"113":{},"119":{},"128":{},"129":{},"135":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"175":{},"194":{},"195":{},"201":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"241":{}},"component":{}}],["conveni",{"_index":1946,"title":{},"name":{},"text":{"39":{},"75":{},"96":{},"123":{},"128":{},"151":{},"186":{},"194":{},"217":{},"253":{}},"component":{}}],["convent",{"_index":2716,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["convert",{"_index":1204,"title":{},"name":{},"text":{"19":{},"55":{},"82":{},"100":{},"135":{},"156":{},"201":{},"222":{}},"component":{}}],["cooki",{"_index":1364,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["cookies=${jsession_id}${crowd_cooki",{"_index":1371,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["copi",{"_index":408,"title":{},"name":{},"text":{"2":{},"22":{},"25":{},"27":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"58":{},"62":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"79":{},"80":{},"99":{},"101":{},"108":{},"111":{},"112":{},"113":{},"114":{},"115":{},"121":{},"122":{},"129":{},"132":{},"133":{},"151":{},"155":{},"157":{},"169":{},"172":{},"173":{},"175":{},"176":{},"177":{},"180":{},"184":{},"185":{},"195":{},"198":{},"199":{},"217":{},"221":{},"223":{},"235":{},"238":{},"239":{},"241":{},"242":{},"243":{},"246":{},"250":{},"251":{}},"component":{}}],["copydockerfil",{"_index":3753,"title":{},"name":{},"text":{"234":{}},"component":{}}],["core",{"_index":234,"title":{},"name":{},"text":{"2":{},"5":{},"20":{},"27":{},"36":{},"37":{},"41":{},"44":{},"56":{},"62":{},"72":{},"73":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"84":{},"92":{},"101":{},"111":{},"122":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"146":{},"157":{},"172":{},"173":{},"180":{},"185":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"212":{},"223":{},"238":{},"239":{},"246":{},"251":{}},"component":{}}],["core#253",{"_index":2396,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["core#290",{"_index":2390,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["core#293",{"_index":2381,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["core,od",{"_index":3203,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["core.env",{"_index":2055,"title":{},"name":{},"text":{"77":{},"100":{},"130":{},"137":{},"142":{},"146":{},"156":{},"196":{},"203":{},"208":{},"212":{},"222":{}},"component":{}}],["core.git",{"_index":269,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["core/$git_ref/scripts/repos.sh",{"_index":3171,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovi",{"_index":2215,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/blob/master/ocp",{"_index":2697,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["core/blob/master/scripts/tailor2helm.sh",{"_index":3137,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["core/check",{"_index":2153,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/configur",{"_index":2147,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/infrastructur",{"_index":448,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["core/issues/229",{"_index":2163,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/issues/293",{"_index":2162,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/jenkin",{"_index":693,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["core/jenkins/ocp",{"_index":2204,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/master/od",{"_index":2048,"title":{},"name":{},"text":{"77":{}},"component":{}}],["core/pull/280",{"_index":2156,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/shar",{"_index":831,"title":{},"name":{},"text":{"11":{}},"component":{}}],["core/tree/master/infrastructur",{"_index":3173,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["core/tree/master/scripts/migr",{"_index":3216,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["core/tree/master/shar",{"_index":1414,"title":{},"name":{},"text":{"24":{}},"component":{}}],["core\\shar",{"_index":554,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["correct",{"_index":1643,"title":{},"name":{},"text":{"32":{},"68":{},"98":{},"117":{},"126":{},"154":{},"174":{},"181":{},"192":{},"220":{},"240":{},"247":{},"258":{}},"component":{}}],["correctli",{"_index":2133,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["correspond",{"_index":732,"title":{},"name":{},"text":{"6":{},"8":{},"14":{},"20":{},"45":{},"47":{},"50":{},"56":{},"77":{},"80":{},"88":{},"96":{},"98":{},"101":{},"115":{},"130":{},"133":{},"141":{},"151":{},"154":{},"157":{},"177":{},"196":{},"199":{},"207":{},"217":{},"220":{},"223":{},"243":{}},"component":{}}],["correspondingli",{"_index":1333,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["corrupt",{"_index":1384,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["cours",{"_index":2069,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["cov",{"_index":3040,"title":{},"name":{},"text":{"112":{},"173":{},"174":{},"239":{},"240":{}},"component":{}}],["cov=src",{"_index":3533,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["cover",{"_index":3190,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["coverag",{"_index":1555,"title":{},"name":{},"text":{"28":{},"65":{},"108":{},"112":{},"114":{},"121":{},"122":{},"123":{},"167":{},"169":{},"173":{},"174":{},"176":{},"180":{},"184":{},"185":{},"186":{},"233":{},"234":{},"235":{},"239":{},"240":{},"242":{},"246":{},"250":{},"251":{},"253":{}},"component":{}}],["coverage_output",{"_index":3086,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["coverageoff",{"_index":3751,"title":{},"name":{},"text":{"234":{}},"component":{}}],["coveragerc",{"_index":3028,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["coveragereport",{"_index":3750,"title":{},"name":{},"text":{"234":{}},"component":{}}],["cp",{"_index":1467,"title":{},"name":{},"text":{"25":{},"66":{},"79":{},"87":{},"115":{},"132":{},"140":{},"177":{},"198":{},"206":{},"243":{}},"component":{}}],["cpu",{"_index":1533,"title":{},"name":{},"text":{"28":{},"65":{},"83":{},"94":{},"96":{},"99":{},"114":{},"136":{},"148":{},"151":{},"155":{},"176":{},"202":{},"214":{},"217":{},"221":{},"242":{}},"component":{}}],["cr",{"_index":837,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["crate",{"_index":3550,"title":{"240-10":{},"240-12":{},"240-13":{},"240-14":{},"240-15":{}},"name":{},"text":{"174":{},"240":{}},"component":{}}],["crates.io",{"_index":3775,"title":{},"name":{},"text":{"240":{}},"component":{}}],["crate’",{"_index":3780,"title":{},"name":{},"text":{"240":{}},"component":{}}],["crazy_python.pi",{"_index":1437,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["creat",{"_index":117,"title":{"2-33":{},"5-5":{},"41-33":{},"44-5":{},"83-3":{},"83-4":{},"108-1":{},"108-2":{},"158-1":{},"158-2":{},"169-1":{},"169-2":{},"224-1":{},"224-2":{},"235-1":{},"235-2":{}},"name":{},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"13":{},"14":{},"15":{},"19":{},"21":{},"22":{},"24":{},"27":{},"29":{},"31":{},"32":{},"36":{},"39":{},"41":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"51":{},"55":{},"57":{},"58":{},"60":{},"62":{},"63":{},"67":{},"68":{},"72":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"111":{},"112":{},"113":{},"116":{},"117":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"173":{},"175":{},"178":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"189":{},"190":{},"191":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"239":{},"241":{},"244":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["create.txt",{"_index":1372,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["created/trigg",{"_index":1971,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["createpermissionset",{"_index":1323,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["createpullrequest(str",{"_index":3270,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["creation",{"_index":338,"title":{"98-23":{},"154-28":{},"220-28":{}},"name":{},"text":{"2":{},"5":{},"41":{},"44":{},"83":{},"98":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["creationtimestamp",{"_index":2190,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["creator",{"_index":389,"title":{},"name":{},"text":{"2":{},"41":{},"101":{},"157":{},"223":{}},"component":{}}],["credenti",{"_index":166,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"20":{},"24":{},"31":{},"34":{},"41":{},"45":{},"50":{},"56":{},"60":{},"70":{},"87":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"119":{},"126":{},"140":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"188":{},"192":{},"206":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"254":{},"258":{}},"component":{}}],["credential.sync.jenkins.openshift.io=tru",{"_index":2507,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["credentialsid",{"_index":938,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"95":{},"96":{},"98":{},"148":{},"149":{},"151":{},"154":{},"214":{},"215":{},"217":{},"220":{}},"component":{}}],["crlf",{"_index":2059,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["cron",{"_index":2155,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cronjob",{"_index":2270,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["cross",{"_index":1820,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["crowd",{"_index":48,"title":{"11":{},"2-13":{},"2-16":{},"2-22":{},"2-23":{},"2-28":{},"2-31":{},"20-2":{},"41-13":{},"41-16":{},"41-22":{},"41-23":{},"41-28":{},"41-31":{},"56-2":{},"101-11":{},"157-14":{},"223-14":{}},"name":{"11":{}},"text":{"1":{},"2":{},"3":{},"11":{},"12":{},"19":{},"20":{},"22":{},"31":{},"33":{},"40":{},"41":{},"42":{},"55":{},"56":{},"58":{},"76":{},"77":{},"78":{},"83":{},"90":{},"100":{},"101":{},"129":{},"130":{},"131":{},"144":{},"146":{},"156":{},"157":{},"195":{},"196":{},"197":{},"210":{},"212":{},"222":{},"223":{}},"component":{}}],["crowd.application.nam",{"_index":2965,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.application.password",{"_index":2966,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.cookie.domain",{"_index":2968,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.local.directory=~/dev/temp",{"_index":2964,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.properti",{"_index":1218,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["crowd.server.url",{"_index":2967,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.yml",{"_index":47,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["crowd_cookie=$(cat",{"_index":1370,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["crowd_password",{"_index":858,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowd_post_setup.yml",{"_index":67,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["crowd_realm_nam",{"_index":852,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowd_servic",{"_index":857,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowd_url",{"_index":856,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowdsecurityconfigur",{"_index":1186,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["crowd’",{"_index":329,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["crucial",{"_index":2500,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["cryptograph",{"_index":3779,"title":{},"name":{},"text":{"240":{}},"component":{}}],["csr",{"_index":866,"title":{},"name":{},"text":{"12":{}},"component":{}}],["css",{"_index":1565,"title":{},"name":{},"text":{"29":{},"35":{},"36":{},"63":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["csv",{"_index":1649,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["cumbersom",{"_index":3152,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["curl",{"_index":227,"title":{"100-7":{},"156-7":{},"222-7":{}},"name":{},"text":{"2":{},"22":{},"32":{},"41":{},"58":{},"68":{},"77":{},"100":{},"101":{},"117":{},"130":{},"137":{},"142":{},"146":{},"156":{},"157":{},"174":{},"196":{},"203":{},"208":{},"212":{},"222":{},"223":{},"240":{}},"component":{}}],["current",{"_index":31,"title":{},"name":{},"text":{"1":{},"12":{},"13":{},"14":{},"20":{},"32":{},"40":{},"49":{},"50":{},"56":{},"68":{},"76":{},"83":{},"93":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"117":{},"126":{},"128":{},"129":{},"136":{},"137":{},"142":{},"146":{},"147":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"160":{},"167":{},"192":{},"194":{},"195":{},"202":{},"203":{},"208":{},"212":{},"213":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"226":{},"233":{},"258":{}},"component":{}}],["custom",{"_index":36,"title":{"8-3":{},"14-8":{},"47-7":{},"50-8":{},"88-7":{},"96-7":{},"98-23":{},"99-5":{},"101-4":{},"101-5":{},"101-7":{},"120-8":{},"141-7":{},"151-7":{},"154-25":{},"154-28":{},"155-5":{},"157-7":{},"157-8":{},"157-10":{},"183-8":{},"207-7":{},"217-7":{},"220-25":{},"220-28":{},"221-5":{},"223-7":{},"223-8":{},"223-10":{},"249-8":{}},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"12":{},"14":{},"27":{},"32":{},"36":{},"37":{},"40":{},"41":{},"45":{},"47":{},"50":{},"62":{},"68":{},"72":{},"73":{},"76":{},"77":{},"79":{},"80":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"109":{},"111":{},"114":{},"117":{},"122":{},"126":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"149":{},"151":{},"154":{},"155":{},"157":{},"169":{},"170":{},"172":{},"176":{},"181":{},"185":{},"192":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"215":{},"217":{},"220":{},"221":{},"223":{},"235":{},"236":{},"238":{},"242":{},"247":{},"251":{},"258":{}},"component":{}}],["customis",{"_index":1099,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"128":{},"137":{},"142":{},"153":{},"155":{},"194":{},"203":{},"208":{},"219":{},"221":{}},"component":{}}],["cut",{"_index":1367,"title":{},"name":{},"text":{"22":{},"58":{},"83":{},"136":{},"202":{}},"component":{}}],["cyclonedx",{"_index":3290,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["cygwin",{"_index":83,"title":{"2-7":{},"4-1":{},"41-7":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"77":{},"91":{},"130":{},"145":{},"196":{},"211":{}},"component":{}}],["cypress",{"_index":1758,"title":{"34":{},"70":{},"119":{},"181":{},"247":{},"181-6":{},"181-7":{},"247-6":{},"247-7":{}},"name":{"34":{},"70":{},"119":{},"181":{},"247":{}},"text":{"34":{},"39":{},"70":{},"75":{},"105":{},"119":{},"123":{},"162":{},"163":{},"164":{},"165":{},"181":{},"186":{},"228":{},"229":{},"230":{},"231":{},"247":{},"253":{}},"component":{}}],["cypress#advanc",{"_index":3657,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress.config.t",{"_index":3816,"title":{},"name":{},"text":{"247":{}},"component":{}}],["cypress.env.json.templ",{"_index":3647,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress.json",{"_index":1763,"title":{},"name":{},"text":{"34":{},"38":{},"70":{},"74":{},"119":{},"181":{}},"component":{}}],["cypress@vers",{"_index":3661,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress_cache_folder=/home/jenkins/.cache/cypress",{"_index":3664,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress_install_binary=0",{"_index":3663,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress_record_key",{"_index":3678,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypresshash",{"_index":3660,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypressversion=13.13.1",{"_index":3818,"title":{},"name":{},"text":{"247":{}},"component":{}}],["cypressversion=13.6.0",{"_index":3659,"title":{},"name":{},"text":{"181":{}},"component":{}}],["d",{"_index":1348,"title":{},"name":{},"text":{"22":{},"58":{},"93":{},"98":{},"147":{},"154":{},"181":{},"213":{},"220":{},"247":{}},"component":{}}],["daemon",{"_index":3469,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["dag",{"_index":1401,"title":{"24-9":{},"60-9":{}},"name":{},"text":{"24":{},"60":{}},"component":{}}],["dag_dep",{"_index":1433,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["dag_deps_packag",{"_index":1435,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["daili",{"_index":2269,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["dash",{"_index":2890,"title":{},"name":{},"text":{"100":{},"153":{},"156":{},"189":{},"219":{},"222":{},"255":{}},"component":{}}],["dashboard",{"_index":3624,"title":{},"name":{},"text":{"180":{},"181":{},"246":{},"247":{}},"component":{}}],["data",{"_index":311,"title":{"31":{},"32":{},"33":{},"67":{},"68":{},"69":{},"116":{},"117":{},"118":{},"178":{},"179":{},"180":{},"244":{},"245":{},"246":{},"32-9":{},"39-4":{},"68-9":{},"75-4":{},"117-9":{},"123-5":{},"186-5":{},"253-5":{}},"name":{},"text":{"2":{},"31":{},"32":{},"39":{},"41":{},"67":{},"68":{},"75":{},"79":{},"98":{},"100":{},"116":{},"117":{},"121":{},"122":{},"123":{},"126":{},"132":{},"151":{},"153":{},"154":{},"156":{},"178":{},"182":{},"184":{},"185":{},"186":{},"189":{},"192":{},"198":{},"217":{},"219":{},"220":{},"222":{},"244":{},"248":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["data/blobs/atlassian_publ",{"_index":473,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["data/blobs/candid",{"_index":469,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["data/blobs/releas",{"_index":471,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["databas",{"_index":76,"title":{"2-17":{},"2-50":{},"2-51":{},"41-17":{},"41-50":{},"41-51":{}},"name":{},"text":{"1":{},"2":{},"14":{},"16":{},"24":{},"40":{},"41":{},"50":{},"52":{},"60":{},"76":{},"79":{},"93":{},"96":{},"99":{},"129":{},"132":{},"147":{},"151":{},"153":{},"155":{},"182":{},"189":{},"195":{},"198":{},"213":{},"217":{},"219":{},"221":{},"248":{},"255":{}},"component":{}}],["database/postgr",{"_index":3543,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["database](https://github.com/rustsec/rustsec",{"_index":3774,"title":{},"name":{},"text":{"240":{}},"component":{}}],["datafram",{"_index":1666,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dataset",{"_index":1626,"title":{"32-10":{},"68-10":{},"117-10":{}},"name":{},"text":{},"component":{}}],["datasync",{"_index":1696,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["datasync(dvc_data_repo",{"_index":1698,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["datatbas",{"_index":276,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["date",{"_index":209,"title":{"83-9":{},"136-8":{},"202-8":{}},"name":{},"text":{"2":{},"41":{},"96":{},"137":{},"142":{},"146":{},"151":{},"162":{},"163":{},"164":{},"165":{},"203":{},"208":{},"212":{},"217":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["day",{"_index":208,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"127":{},"133":{},"193":{},"199":{}},"component":{}}],["db",{"_index":3377,"title":{},"name":{},"text":{"153":{},"219":{},"240":{}},"component":{}}],["dc",{"_index":2106,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["deactiv",{"_index":381,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{}},"component":{}}],["deal",{"_index":1980,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["debug",{"_index":1108,"title":{},"name":{},"text":{"14":{},"17":{},"29":{},"32":{},"50":{},"53":{},"63":{},"68":{},"80":{},"96":{},"98":{},"117":{},"133":{},"151":{},"154":{},"174":{},"199":{},"217":{},"220":{},"240":{}},"component":{}}],["debug=tru",{"_index":1577,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["decemb",{"_index":2274,"title":{"83-9":{},"83-11":{},"136-11":{},"202-11":{}},"name":{},"text":{},"component":{}}],["decid",{"_index":28,"title":{},"name":{},"text":{"1":{},"2":{},"40":{},"41":{},"76":{},"129":{},"195":{}},"component":{}}],["decis",{"_index":3367,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["declar",{"_index":1120,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["declin",{"_index":738,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["declined/merg",{"_index":737,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["decor",{"_index":2308,"title":{},"name":{},"text":{"83":{},"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["decreas",{"_index":2662,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"219":{},"220":{}},"component":{}}],["decrypt",{"_index":2502,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["dedic",{"_index":2082,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["deem",{"_index":2669,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["def",{"_index":932,"title":{},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"95":{},"96":{},"98":{},"99":{},"115":{},"149":{},"151":{},"154":{},"155":{},"161":{},"172":{},"177":{},"181":{},"215":{},"217":{},"220":{},"221":{},"227":{},"234":{},"238":{},"243":{},"247":{}},"component":{}}],["default",{"_index":101,"title":{"2-20":{},"41-20":{}},"name":{},"text":{"2":{},"4":{},"8":{},"11":{},"12":{},"14":{},"20":{},"22":{},"27":{},"32":{},"38":{},"41":{},"43":{},"47":{},"50":{},"56":{},"58":{},"62":{},"68":{},"74":{},"83":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"109":{},"111":{},"115":{},"117":{},"120":{},"121":{},"122":{},"126":{},"141":{},"145":{},"147":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"169":{},"170":{},"172":{},"173":{},"174":{},"177":{},"183":{},"184":{},"185":{},"192":{},"207":{},"211":{},"213":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"232":{},"234":{},"235":{},"236":{},"238":{},"239":{},"240":{},"243":{},"249":{},"250":{},"251":{},"258":{}},"component":{}}],["default/main.yml",{"_index":39,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["defin",{"_index":316,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"16":{},"20":{},"21":{},"22":{},"24":{},"27":{},"28":{},"31":{},"32":{},"33":{},"34":{},"39":{},"41":{},"44":{},"50":{},"52":{},"56":{},"57":{},"58":{},"60":{},"62":{},"65":{},"67":{},"68":{},"69":{},"70":{},"75":{},"79":{},"87":{},"94":{},"96":{},"98":{},"100":{},"101":{},"109":{},"111":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"126":{},"127":{},"128":{},"132":{},"140":{},"148":{},"150":{},"151":{},"154":{},"156":{},"157":{},"170":{},"172":{},"174":{},"176":{},"177":{},"178":{},"179":{},"183":{},"184":{},"192":{},"193":{},"194":{},"198":{},"206":{},"214":{},"216":{},"217":{},"220":{},"222":{},"223":{},"236":{},"238":{},"240":{},"242":{},"243":{},"244":{},"245":{},"249":{},"250":{},"258":{}},"component":{}}],["defind",{"_index":1215,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["definin",{"_index":2327,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["definit",{"_index":1492,"title":{},"name":{},"text":{"27":{},"62":{},"76":{},"81":{},"109":{},"111":{},"120":{},"127":{},"129":{},"170":{},"172":{},"183":{},"193":{},"195":{},"236":{},"238":{},"249":{}},"component":{}}],["defint",{"_index":1885,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["deleg",{"_index":1306,"title":{},"name":{},"text":{"22":{},"39":{},"58":{},"75":{},"102":{},"123":{},"158":{},"186":{},"224":{},"253":{}},"component":{}}],["delet",{"_index":735,"title":{},"name":{},"text":{"6":{},"8":{},"24":{},"45":{},"47":{},"60":{},"79":{},"80":{},"88":{},"96":{},"100":{},"108":{},"132":{},"133":{},"141":{},"150":{},"151":{},"153":{},"156":{},"169":{},"198":{},"199":{},"207":{},"216":{},"217":{},"219":{},"222":{},"235":{}},"component":{}}],["deliv",{"_index":2634,"title":{},"name":{},"text":{"98":{},"115":{},"126":{},"137":{},"154":{},"177":{},"192":{},"203":{},"220":{},"243":{},"258":{}},"component":{}}],["deliveri",{"_index":153,"title":{},"name":{},"text":{"2":{},"5":{},"41":{},"44":{},"83":{},"98":{},"126":{},"136":{},"154":{},"157":{},"192":{},"202":{},"220":{},"223":{},"258":{}},"component":{}}],["demand",{"_index":1408,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["demo",{"_index":3105,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demo*spec.groovi",{"_index":3113,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demo*test.java",{"_index":3112,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptance.xml",{"_index":3106,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptancespec.groovi",{"_index":3095,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptancetest.java",{"_index":3096,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptancetest.xml",{"_index":3107,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallation.xml",{"_index":3108,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallationspec.groovi",{"_index":3097,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallationtest.java",{"_index":3098,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallationtest.xml",{"_index":3109,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegration.xml",{"_index":3110,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegrationspec.groovi",{"_index":3099,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegrationtest.java",{"_index":3100,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegrationtest.xml",{"_index":3111,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demonstr",{"_index":1648,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["deni",{"_index":578,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"240":{}},"component":{}}],["deny.toml",{"_index":3767,"title":{},"name":{},"text":{"240":{}},"component":{}}],["deny](https://github.com/embarkstudios/cargo",{"_index":3777,"title":{},"name":{},"text":{"240":{}},"component":{}}],["depend",{"_index":30,"title":{"27-8":{},"62-8":{},"98-3":{},"111-8":{},"126-3":{},"154-3":{},"172-8":{},"192-3":{},"220-3":{},"238-8":{},"240-12":{},"240-13":{},"258-3":{}},"name":{},"text":{"1":{},"6":{},"7":{},"14":{},"16":{},"19":{},"21":{},"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"35":{},"36":{},"37":{},"38":{},"40":{},"45":{},"46":{},"50":{},"52":{},"55":{},"57":{},"60":{},"62":{},"63":{},"64":{},"65":{},"68":{},"71":{},"72":{},"73":{},"74":{},"76":{},"79":{},"80":{},"81":{},"85":{},"95":{},"96":{},"98":{},"100":{},"102":{},"105":{},"108":{},"109":{},"111":{},"114":{},"117":{},"121":{},"122":{},"126":{},"128":{},"129":{},"132":{},"133":{},"137":{},"138":{},"142":{},"146":{},"149":{},"151":{},"154":{},"156":{},"157":{},"158":{},"162":{},"163":{},"164":{},"165":{},"169":{},"170":{},"172":{},"174":{},"176":{},"181":{},"184":{},"185":{},"192":{},"194":{},"195":{},"198":{},"199":{},"203":{},"204":{},"208":{},"212":{},"215":{},"217":{},"220":{},"222":{},"223":{},"224":{},"228":{},"229":{},"230":{},"231":{},"235":{},"236":{},"238":{},"240":{},"242":{},"247":{},"250":{},"251":{},"258":{}},"component":{}}],["dependeci",{"_index":1432,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["dependencies=\"web,data",{"_index":3518,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["dependencies=\"web,jersey,data",{"_index":1510,"title":{},"name":{},"text":{"27":{},"62":{},"111":{}},"component":{}}],["dependencycheckbranch",{"_index":1050,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["deploy",{"_index":308,"title":{"5-3":{},"44-3":{},"83-6":{},"94-2":{},"94-7":{},"95-2":{},"96-9":{},"98-12":{},"100-2":{},"136-5":{},"148-2":{},"148-7":{},"149-2":{},"150-1":{},"150-4":{},"151-9":{},"151-29":{},"156-2":{},"202-5":{},"214-2":{},"214-7":{},"215-2":{},"216-1":{},"216-4":{},"217-9":{},"217-29":{},"222-2":{}},"name":{},"text":{"2":{},"5":{},"6":{},"14":{},"15":{},"16":{},"19":{},"21":{},"24":{},"26":{},"27":{},"31":{},"32":{},"33":{},"41":{},"44":{},"45":{},"50":{},"51":{},"52":{},"55":{},"57":{},"60":{},"61":{},"62":{},"67":{},"68":{},"69":{},"77":{},"79":{},"83":{},"87":{},"93":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"109":{},"110":{},"111":{},"112":{},"114":{},"116":{},"117":{},"118":{},"123":{},"126":{},"127":{},"128":{},"130":{},"132":{},"136":{},"137":{},"140":{},"142":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"158":{},"160":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"178":{},"179":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"196":{},"198":{},"202":{},"203":{},"206":{},"208":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"224":{},"226":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"244":{},"245":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["deployment.yaml",{"_index":3561,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["deployment.yml",{"_index":3557,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["deployment/foo",{"_index":3251,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["deploymentconfig",{"_index":744,"title":{},"name":{},"text":{"6":{},"8":{},"39":{},"45":{},"75":{},"88":{},"94":{},"95":{},"96":{},"128":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"194":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{}},"component":{}}],["deploymentconfig/bar",{"_index":3252,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["deploytimeoutminut",{"_index":2475,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["deploytimeoutretri",{"_index":2609,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["deprec",{"_index":2137,"title":{"80-13":{},"94-10":{},"133-13":{},"148-10":{},"199-13":{},"214-10":{}},"name":{},"text":{"94":{},"95":{},"96":{},"148":{},"149":{},"150":{},"151":{},"160":{},"181":{},"214":{},"215":{},"216":{},"217":{},"226":{},"247":{}},"component":{}}],["deps.jar",{"_index":2246,"title":{},"name":{},"text":{"81":{}},"component":{}}],["deriv",{"_index":1674,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["describ",{"_index":903,"title":{},"name":{},"text":{"13":{},"23":{},"27":{},"35":{},"36":{},"39":{},"49":{},"59":{},"62":{},"71":{},"72":{},"75":{},"79":{},"80":{},"81":{},"92":{},"98":{},"108":{},"111":{},"121":{},"122":{},"127":{},"130":{},"132":{},"133":{},"137":{},"142":{},"146":{},"154":{},"169":{},"172":{},"182":{},"184":{},"185":{},"187":{},"188":{},"193":{},"196":{},"198":{},"199":{},"203":{},"208":{},"212":{},"220":{},"235":{},"238":{},"248":{},"250":{},"251":{},"252":{},"254":{}},"component":{}}],["descript",{"_index":331,"title":{"153-3":{},"189-2":{},"189-4":{},"219-3":{},"255-2":{},"255-4":{}},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"32":{},"41":{},"45":{},"47":{},"50":{},"68":{},"80":{},"87":{},"88":{},"96":{},"99":{},"100":{},"115":{},"117":{},"133":{},"140":{},"141":{},"151":{},"153":{},"155":{},"156":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"189":{},"199":{},"206":{},"207":{},"217":{},"219":{},"221":{},"222":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"255":{}},"component":{}}],["design",{"_index":1282,"title":{},"name":{},"text":{"21":{},"22":{},"57":{},"58":{},"98":{},"102":{},"126":{},"154":{},"158":{},"192":{},"220":{},"224":{},"258":{}},"component":{}}],["desir",{"_index":909,"title":{},"name":{},"text":{"13":{},"49":{},"79":{},"81":{},"95":{},"96":{},"102":{},"128":{},"132":{},"137":{},"142":{},"146":{},"149":{},"151":{},"194":{},"198":{},"203":{},"208":{},"212":{},"215":{},"217":{}},"component":{}}],["despit",{"_index":3419,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["destin",{"_index":1774,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["destroy",{"_index":1406,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["detail",{"_index":341,"title":{"153-3":{},"189-2":{},"219-3":{},"255-2":{}},"name":{},"text":{"2":{},"14":{},"20":{},"27":{},"41":{},"50":{},"56":{},"62":{},"79":{},"93":{},"95":{},"96":{},"99":{},"101":{},"111":{},"128":{},"132":{},"136":{},"147":{},"149":{},"151":{},"153":{},"155":{},"157":{},"158":{},"161":{},"172":{},"181":{},"189":{},"194":{},"198":{},"202":{},"213":{},"215":{},"217":{},"219":{},"221":{},"223":{},"224":{},"238":{},"247":{},"255":{}},"component":{}}],["detect",{"_index":897,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"151":{},"213":{},"217":{}},"component":{}}],["determin",{"_index":733,"title":{},"name":{},"text":{"6":{},"8":{},"14":{},"45":{},"47":{},"50":{},"88":{},"96":{},"99":{},"108":{},"137":{},"141":{},"142":{},"151":{},"153":{},"155":{},"169":{},"203":{},"207":{},"208":{},"217":{},"219":{},"221":{},"235":{}},"component":{}}],["dev",{"_index":670,"title":{"128-4":{},"194-4":{}},"name":{},"text":{"5":{},"14":{},"21":{},"22":{},"35":{},"36":{},"37":{},"44":{},"50":{},"57":{},"58":{},"71":{},"72":{},"73":{},"79":{},"80":{},"83":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"121":{},"122":{},"126":{},"128":{},"132":{},"133":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"184":{},"185":{},"188":{},"192":{},"194":{},"198":{},"199":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"250":{},"251":{},"254":{},"258":{}},"component":{}}],["dev.dev",{"_index":2724,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["dev.env",{"_index":2729,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["dev.json",{"_index":3692,"title":{},"name":{},"text":{"182":{},"187":{},"188":{},"248":{},"252":{},"254":{}},"component":{}}],["dev.tfbackend.config",{"_index":3726,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["dev.yml",{"_index":3729,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["dev/docgen:latest",{"_index":2200,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["dev/test",{"_index":1302,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["devel",{"_index":3474,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["develop",{"_index":502,"title":{"81":{},"100":{},"134":{},"156":{},"200":{},"222":{},"8-4":{},"14-17":{},"19-1":{},"32-8":{},"47-8":{},"50-17":{},"55-1":{},"68-8":{},"88-8":{},"100-1":{},"117-8":{},"141-8":{},"156-1":{},"207-8":{},"222-1":{}},"name":{"81":{},"134":{},"200":{}},"text":{"2":{},"13":{},"14":{},"16":{},"19":{},"21":{},"24":{},"27":{},"32":{},"34":{},"36":{},"37":{},"38":{},"41":{},"49":{},"50":{},"52":{},"55":{},"57":{},"60":{},"62":{},"68":{},"70":{},"72":{},"73":{},"74":{},"81":{},"93":{},"96":{},"98":{},"100":{},"101":{},"109":{},"111":{},"112":{},"113":{},"114":{},"117":{},"119":{},"120":{},"122":{},"126":{},"127":{},"136":{},"147":{},"150":{},"151":{},"154":{},"156":{},"157":{},"170":{},"172":{},"173":{},"175":{},"176":{},"178":{},"180":{},"181":{},"182":{},"183":{},"185":{},"187":{},"188":{},"189":{},"192":{},"193":{},"202":{},"213":{},"216":{},"217":{},"220":{},"222":{},"223":{},"236":{},"238":{},"239":{},"241":{},"242":{},"244":{},"246":{},"247":{},"248":{},"249":{},"251":{},"252":{},"254":{},"255":{},"258":{}},"component":{}}],["dev→test",{"_index":2470,"title":{},"name":{},"text":{"96":{}},"component":{}}],["diagram",{"_index":2253,"title":{},"name":{},"text":{"81":{},"136":{},"202":{}},"component":{}}],["dialect",{"_index":306,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["dialogu",{"_index":410,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["diam",{"_index":800,"title":{},"name":{},"text":{"10":{}},"component":{}}],["dictionari",{"_index":1668,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["diff",{"_index":2108,"title":{},"name":{},"text":{"79":{},"80":{},"96":{},"132":{},"133":{},"150":{},"151":{},"198":{},"199":{},"216":{},"217":{}},"component":{}}],["differ",{"_index":0,"title":{"1-1":{},"40-1":{},"76-1":{},"95-8":{},"129-1":{},"149-8":{},"151-29":{},"195-1":{},"215-8":{},"217-29":{}},"name":{},"text":{"1":{},"6":{},"11":{},"12":{},"19":{},"29":{},"32":{},"40":{},"45":{},"55":{},"63":{},"68":{},"76":{},"85":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"108":{},"109":{},"112":{},"114":{},"117":{},"126":{},"127":{},"128":{},"129":{},"136":{},"138":{},"148":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"170":{},"173":{},"174":{},"176":{},"192":{},"193":{},"194":{},"195":{},"202":{},"204":{},"214":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"236":{},"239":{},"240":{},"242":{},"258":{}},"component":{}}],["differenti",{"_index":1977,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["difficult",{"_index":2441,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["digit",{"_index":1304,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["digital/od",{"_index":2135,"title":{},"name":{},"text":{"79":{},"80":{},"100":{},"108":{},"132":{},"133":{},"156":{},"169":{},"198":{},"199":{},"222":{},"235":{}},"component":{}}],["dir",{"_index":2829,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["dir(context.targetdir",{"_index":2774,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["direct",{"_index":457,"title":{"22-5":{},"58-5":{}},"name":{},"text":{"2":{},"19":{},"22":{},"32":{},"38":{},"41":{},"55":{},"58":{},"68":{},"74":{},"100":{},"109":{},"117":{},"156":{},"170":{},"222":{},"236":{}},"component":{}}],["directli",{"_index":1948,"title":{},"name":{},"text":{"39":{},"75":{},"79":{},"132":{},"151":{},"153":{},"198":{},"217":{},"219":{}},"component":{}}],["directori",{"_index":99,"title":{"2-19":{},"2-42":{},"2-55":{},"41-19":{},"41-42":{},"41-55":{}},"name":{},"text":{"2":{},"4":{},"6":{},"19":{},"26":{},"28":{},"30":{},"31":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"45":{},"55":{},"61":{},"64":{},"65":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"91":{},"93":{},"96":{},"99":{},"100":{},"109":{},"110":{},"113":{},"116":{},"117":{},"119":{},"120":{},"121":{},"122":{},"130":{},"132":{},"137":{},"142":{},"145":{},"146":{},"147":{},"151":{},"155":{},"156":{},"170":{},"171":{},"175":{},"178":{},"183":{},"184":{},"185":{},"196":{},"198":{},"203":{},"208":{},"211":{},"212":{},"213":{},"217":{},"221":{},"222":{},"236":{},"237":{},"241":{},"244":{},"249":{},"250":{},"251":{}},"component":{}}],["disabl",{"_index":482,"title":{},"name":{},"text":{"2":{},"11":{},"12":{},"14":{},"16":{},"19":{},"27":{},"29":{},"32":{},"41":{},"50":{},"52":{},"55":{},"62":{},"63":{},"68":{},"98":{},"100":{},"107":{},"111":{},"117":{},"126":{},"151":{},"154":{},"156":{},"157":{},"168":{},"172":{},"181":{},"192":{},"217":{},"220":{},"222":{},"223":{},"234":{},"238":{},"240":{},"247":{},"258":{}},"component":{}}],["disasbl",{"_index":1739,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["disclaim",{"_index":2971,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["discontinu",{"_index":2388,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["discuss",{"_index":1634,"title":{},"name":{},"text":{"32":{},"38":{},"68":{},"74":{},"81":{},"117":{}},"component":{}}],["disk",{"_index":2033,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["display",{"_index":1083,"title":{},"name":{},"text":{"14":{},"27":{},"50":{},"62":{},"96":{},"100":{},"101":{},"111":{},"151":{},"156":{},"157":{},"172":{},"217":{},"222":{},"223":{},"238":{}},"component":{}}],["dist",{"_index":1590,"title":{},"name":{},"text":{"29":{},"35":{},"38":{},"63":{},"71":{},"74":{},"114":{},"121":{},"176":{},"184":{},"242":{},"250":{}},"component":{}}],["distinguish",{"_index":2405,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["distribut",{"_index":1402,"title":{"24-9":{},"60-9":{}},"name":{},"text":{"27":{},"62":{},"82":{},"111":{},"120":{},"135":{},"172":{},"183":{},"189":{},"201":{},"238":{},"249":{},"255":{}},"component":{}}],["distributionfil",{"_index":2617,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["do",{"_index":1529,"title":{},"name":{},"text":{"28":{},"32":{},"65":{},"68":{},"96":{},"114":{},"117":{},"151":{},"176":{},"217":{},"240":{},"242":{}},"component":{}}],["doc",{"_index":1211,"title":{},"name":{},"text":{"19":{},"55":{},"77":{},"79":{},"80":{},"82":{},"93":{},"98":{},"100":{},"126":{},"130":{},"132":{},"133":{},"135":{},"151":{},"154":{},"156":{},"174":{},"192":{},"196":{},"198":{},"199":{},"201":{},"217":{},"220":{},"222":{},"240":{},"258":{}},"component":{}}],["docgen",{"_index":2170,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["docgen:latest",{"_index":2195,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["docker",{"_index":138,"title":{"25":{},"66":{},"115":{},"177":{},"243":{},"2-63":{},"41-63":{},"93-4":{},"147-4":{},"213-4":{}},"name":{"25":{},"66":{},"115":{},"177":{},"243":{}},"text":{"5":{},"6":{},"11":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"44":{},"45":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"80":{},"83":{},"93":{},"96":{},"98":{},"100":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"133":{},"147":{},"151":{},"153":{},"154":{},"156":{},"158":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"184":{},"185":{},"189":{},"199":{},"213":{},"217":{},"219":{},"220":{},"222":{},"224":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"250":{},"251":{},"255":{}},"component":{}}],["docker/dist",{"_index":1469,"title":{},"name":{},"text":{"25":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"112":{},"114":{},"115":{},"121":{},"122":{},"173":{},"176":{},"177":{},"184":{},"185":{},"239":{},"242":{},"243":{},"250":{},"251":{}},"component":{}}],["docker/dockerfil",{"_index":2213,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["docker/plain",{"_index":1937,"title":{},"name":{},"text":{"39":{},"75":{},"123":{},"186":{},"253":{}},"component":{}}],["docker_oauth",{"_index":3626,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["docker_registri",{"_index":2428,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["docker_streamlit",{"_index":3625,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["docker_streamlit/dist",{"_index":3637,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["dockerdir",{"_index":2463,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["dockerfil",{"_index":695,"title":{},"name":{},"text":{"6":{},"12":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"31":{},"32":{},"33":{},"35":{},"36":{},"37":{},"38":{},"45":{},"60":{},"61":{},"62":{},"63":{},"65":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"79":{},"80":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"121":{},"122":{},"128":{},"132":{},"133":{},"146":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"194":{},"198":{},"199":{},"212":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{}},"component":{}}],["dockerfile.centos7",{"_index":2101,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["dockerfile.rhel7",{"_index":2102,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["dockerfile.ubi8",{"_index":3472,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["dockerhub",{"_index":3143,"title":{},"name":{},"text":{"128":{},"142":{},"194":{},"208":{}},"component":{}}],["dockerimagerepositori",{"_index":2197,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["dockerregistri",{"_index":940,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"215":{}},"component":{}}],["dockerregistry}/cd/jenkin",{"_index":948,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["dockerregistry}/foo",{"_index":2490,"title":{},"name":{},"text":{"96":{}},"component":{}}],["dockerregistry}/hugo/jenkin",{"_index":1985,"title":{},"name":{},"text":{"50":{}},"component":{}}],["dockerstrategi",{"_index":2196,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["document",{"_index":23,"title":{"82":{},"124":{},"135":{},"190":{},"201":{},"256":{},"77-15":{},"82-2":{},"82-4":{},"82-5":{},"98-14":{},"126-12":{},"130-13":{},"135-2":{},"135-4":{},"135-5":{},"154-17":{},"192-12":{},"196-13":{},"201-2":{},"201-4":{},"201-5":{},"220-17":{},"258-12":{}},"name":{"82":{},"124":{},"135":{},"190":{},"201":{},"256":{}},"text":{"1":{},"12":{},"14":{},"20":{},"24":{},"40":{},"50":{},"56":{},"60":{},"76":{},"77":{},"78":{},"80":{},"82":{},"83":{},"92":{},"93":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"133":{},"135":{},"136":{},"142":{},"146":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"169":{},"174":{},"181":{},"186":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"199":{},"201":{},"202":{},"208":{},"212":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"235":{},"240":{},"247":{},"253":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["documentation/od",{"_index":2354,"title":{},"name":{},"text":{"93":{}},"component":{}}],["documentation/opendevstack/5.x/administration/helm",{"_index":3211,"title":{},"name":{},"text":{"142":{},"146":{},"208":{},"212":{}},"component":{}}],["documentation/opendevstack/latest/jenkin",{"_index":3222,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["documet",{"_index":2263,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["doesn’t",{"_index":598,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"151":{},"211":{},"217":{}},"component":{}}],["dolor",{"_index":793,"title":{},"name":{},"text":{"10":{}},"component":{}}],["domain",{"_index":612,"title":{},"name":{},"text":{"4":{},"6":{},"43":{},"45":{},"85":{},"91":{},"138":{},"145":{},"204":{},"211":{}},"component":{}}],["don't",{"_index":3627,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["done",{"_index":443,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"13":{},"20":{},"21":{},"22":{},"27":{},"41":{},"45":{},"49":{},"56":{},"57":{},"58":{},"62":{},"77":{},"78":{},"79":{},"80":{},"92":{},"95":{},"96":{},"98":{},"101":{},"102":{},"108":{},"111":{},"130":{},"131":{},"132":{},"133":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"153":{},"154":{},"157":{},"158":{},"161":{},"169":{},"172":{},"196":{},"197":{},"198":{},"199":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"219":{},"220":{},"223":{},"224":{},"227":{},"234":{},"235":{},"238":{}},"component":{}}],["don´t",{"_index":1081,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["don’t",{"_index":203,"title":{},"name":{},"text":{"2":{},"4":{},"32":{},"41":{},"43":{},"68":{},"77":{},"79":{},"80":{},"82":{},"91":{},"100":{},"108":{},"117":{},"121":{},"122":{},"130":{},"132":{},"133":{},"135":{},"137":{},"142":{},"145":{},"146":{},"151":{},"156":{},"169":{},"184":{},"185":{},"196":{},"198":{},"199":{},"201":{},"203":{},"208":{},"211":{},"212":{},"217":{},"222":{},"235":{},"250":{},"251":{}},"component":{}}],["dot",{"_index":3391,"title":{},"name":{},"text":{"153":{},"178":{},"189":{},"219":{},"244":{},"255":{}},"component":{}}],["down",{"_index":2118,"title":{},"name":{},"text":{"79":{},"95":{},"98":{},"132":{},"149":{},"154":{},"198":{},"215":{},"220":{}},"component":{}}],["download",{"_index":751,"title":{},"name":{},"text":{"7":{},"32":{},"46":{},"68":{},"76":{},"117":{},"129":{},"130":{},"181":{},"195":{},"196":{},"247":{}},"component":{}}],["downsid",{"_index":2592,"title":{},"name":{},"text":{"96":{},"128":{},"151":{},"194":{},"217":{}},"component":{}}],["dramat",{"_index":1290,"title":{},"name":{},"text":{"21":{},"57":{},"95":{},"149":{},"215":{}},"component":{}}],["drift",{"_index":908,"title":{},"name":{},"text":{"13":{},"49":{},"96":{},"151":{},"217":{}},"component":{}}],["driver",{"_index":299,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["drop",{"_index":2126,"title":{},"name":{},"text":{"79":{},"132":{},"136":{},"198":{},"202":{}},"component":{}}],["ds",{"_index":1612,"title":{"150-10":{},"150-11":{},"216-10":{},"216-11":{}},"name":{"31":{},"32":{},"33":{},"67":{},"68":{},"69":{},"116":{},"117":{},"118":{},"178":{},"179":{},"180":{},"244":{},"245":{},"246":{}},"text":{"67":{},"69":{},"94":{},"95":{},"98":{},"116":{},"118":{},"126":{},"148":{},"149":{},"150":{},"153":{},"154":{},"178":{},"179":{},"180":{},"192":{},"214":{},"215":{},"216":{},"219":{},"220":{},"244":{},"245":{},"246":{},"258":{}},"component":{}}],["dsi_debug_mod",{"_index":1737,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_dvc_remot",{"_index":1702,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_execute_on",{"_index":1718,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_execute_on=ssh",{"_index":1740,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_prediction_service_password",{"_index":1724,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_prediction_service_usernam",{"_index":1723,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_host",{"_index":1728,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_http_proxi",{"_index":1742,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_https_proxi",{"_index":1743,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_password",{"_index":1704,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_port",{"_index":1729,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_usernam",{"_index":1703,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_training_base_url",{"_index":1721,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_training_service_password",{"_index":1720,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_training_service_usernam",{"_index":1719,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsl",{"_index":1598,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["due",{"_index":1682,"title":{},"name":{},"text":{"32":{},"68":{},"96":{},"100":{},"117":{},"150":{},"151":{},"154":{},"156":{},"216":{},"217":{},"220":{},"222":{}},"component":{}}],["dummi",{"_index":1536,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["dump",{"_index":2843,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["duo",{"_index":816,"title":{},"name":{},"text":{"10":{}},"component":{}}],["duplic",{"_index":928,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"97":{},"99":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["durabl",{"_index":2320,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["dure",{"_index":278,"title":{"4-4":{},"43-4":{},"91-4":{},"145-4":{},"211-4":{}},"name":{},"text":{"2":{},"7":{},"14":{},"27":{},"32":{},"41":{},"46":{},"50":{},"62":{},"68":{},"80":{},"95":{},"96":{},"98":{},"102":{},"111":{},"117":{},"121":{},"128":{},"133":{},"136":{},"149":{},"151":{},"153":{},"154":{},"172":{},"184":{},"194":{},"199":{},"202":{},"215":{},"217":{},"219":{},"220":{},"238":{},"250":{}},"component":{}}],["dvc",{"_index":1686,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dvc_ssh_password",{"_index":1700,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dvc_ssh_user",{"_index":1699,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dynam",{"_index":844,"title":{},"name":{},"text":{"11":{},"12":{},"96":{},"109":{},"151":{},"170":{},"217":{},"236":{}},"component":{}}],["e",{"_index":2325,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["e.g",{"_index":263,"title":{},"name":{},"text":{"2":{},"8":{},"13":{},"14":{},"21":{},"22":{},"26":{},"32":{},"34":{},"39":{},"41":{},"47":{},"49":{},"50":{},"57":{},"58":{},"61":{},"68":{},"70":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"103":{},"108":{},"110":{},"117":{},"119":{},"128":{},"129":{},"130":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"159":{},"160":{},"161":{},"169":{},"171":{},"181":{},"182":{},"194":{},"195":{},"196":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"225":{},"226":{},"227":{},"234":{},"235":{},"237":{},"247":{},"248":{}},"component":{}}],["e.g.0.1.1",{"_index":1067,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["e2",{"_index":1759,"title":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{},"123-6":{},"186-6":{},"253-6":{}},"name":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{}},"text":{"34":{},"35":{},"36":{},"38":{},"39":{},"70":{},"71":{},"72":{},"74":{},"75":{},"98":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"154":{},"181":{},"183":{},"185":{},"186":{},"192":{},"220":{},"247":{},"249":{},"251":{},"253":{},"258":{}},"component":{}}],["e2e.t",{"_index":3808,"title":{},"name":{},"text":{"247":{}},"component":{}}],["e2e:jenkins:record",{"_index":3682,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["ea",{"_index":817,"title":{},"name":{},"text":{"10":{}},"component":{}}],["each",{"_index":24,"title":{"128-3":{},"194-3":{}},"name":{},"text":{"1":{},"5":{},"14":{},"24":{},"32":{},"39":{},"40":{},"44":{},"50":{},"60":{},"68":{},"75":{},"76":{},"77":{},"80":{},"82":{},"83":{},"93":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"117":{},"128":{},"129":{},"130":{},"133":{},"135":{},"136":{},"137":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"174":{},"194":{},"195":{},"196":{},"199":{},"201":{},"202":{},"203":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"240":{},"258":{}},"component":{}}],["earlier",{"_index":542,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"154":{},"220":{}},"component":{}}],["eas",{"_index":1195,"title":{},"name":{},"text":{"19":{},"29":{},"30":{},"34":{},"35":{},"38":{},"55":{},"63":{},"64":{},"70":{},"71":{},"74":{},"100":{},"112":{},"113":{},"119":{},"120":{},"151":{},"153":{},"155":{},"156":{},"173":{},"174":{},"175":{},"180":{},"181":{},"183":{},"187":{},"188":{},"217":{},"219":{},"221":{},"222":{},"239":{},"240":{},"241":{},"246":{},"247":{},"249":{},"252":{},"254":{}},"component":{}}],["easi",{"_index":930,"title":{},"name":{},"text":{"14":{},"50":{},"80":{},"96":{},"97":{},"98":{},"128":{},"133":{},"151":{},"152":{},"154":{},"179":{},"194":{},"199":{},"217":{},"218":{},"220":{},"245":{}},"component":{}}],["easier",{"_index":2409,"title":{},"name":{},"text":{"95":{},"128":{},"149":{},"194":{},"215":{}},"component":{}}],["easiest",{"_index":2503,"title":{},"name":{},"text":{"96":{},"98":{},"108":{},"151":{},"154":{},"169":{},"217":{},"220":{},"235":{}},"component":{}}],["easili",{"_index":1490,"title":{},"name":{},"text":{"27":{},"29":{},"32":{},"62":{},"63":{},"68":{},"79":{},"80":{},"111":{},"112":{},"117":{},"120":{},"124":{},"125":{},"130":{},"132":{},"133":{},"172":{},"173":{},"174":{},"183":{},"190":{},"191":{},"196":{},"198":{},"199":{},"238":{},"239":{},"240":{},"249":{},"256":{},"257":{}},"component":{}}],["echo",{"_index":1361,"title":{},"name":{},"text":{"22":{},"58":{},"96":{},"100":{},"151":{},"156":{},"181":{},"217":{},"222":{},"247":{}},"component":{}}],["eclips",{"_index":2358,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["edg",{"_index":2053,"title":{},"name":{},"text":{"77":{},"80":{},"81":{},"83":{},"133":{},"136":{},"199":{},"202":{}},"component":{}}],["edit",{"_index":440,"title":{},"name":{},"text":{"2":{},"14":{},"22":{},"32":{},"41":{},"50":{},"58":{},"68":{},"80":{},"94":{},"95":{},"96":{},"98":{},"101":{},"117":{},"133":{},"148":{},"149":{},"150":{},"151":{},"154":{},"157":{},"167":{},"199":{},"214":{},"215":{},"216":{},"217":{},"220":{},"223":{},"233":{}},"component":{}}],["edit/admin",{"_index":2751,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["editor",{"_index":3184,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["editorconfig",{"_index":3766,"title":{},"name":{},"text":{"240":{}},"component":{}}],["effect",{"_index":2448,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"101":{},"128":{},"149":{},"151":{},"154":{},"157":{},"194":{},"215":{},"217":{},"220":{},"223":{}},"component":{}}],["effort",{"_index":3132,"title":{},"name":{},"text":{"127":{},"153":{},"155":{},"193":{},"219":{},"221":{}},"component":{}}],["eigher",{"_index":1171,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["eighter",{"_index":1216,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["eigther",{"_index":2075,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["eirmod",{"_index":802,"title":{},"name":{},"text":{"10":{}},"component":{}}],["elabor",{"_index":3717,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["elasticsearch",{"_index":1409,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["elif",{"_index":2846,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["elitr",{"_index":798,"title":{},"name":{},"text":{"10":{}},"component":{}}],["email",{"_index":123,"title":{"2-40":{},"41-40":{},"87-3":{},"140-3":{},"206-3":{}},"name":{},"text":{"6":{},"14":{},"16":{},"22":{},"45":{},"50":{},"52":{},"58":{},"87":{},"96":{},"101":{},"140":{},"151":{},"157":{},"206":{},"217":{},"223":{}},"component":{}}],["email1@foo.bar",{"_index":2330,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["email2@foo.bar",{"_index":2331,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["emailextrecipi",{"_index":2328,"title":{},"name":{},"text":{"87":{},"96":{},"140":{},"151":{},"206":{},"217":{}},"component":{}}],["embed",{"_index":2369,"title":{},"name":{},"text":{"93":{},"147":{},"170":{},"181":{},"213":{},"236":{},"247":{}},"component":{}}],["empow",{"_index":650,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["empti",{"_index":348,"title":{"4-1":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"2":{},"41":{},"77":{},"79":{},"96":{},"98":{},"126":{},"130":{},"132":{},"151":{},"153":{},"154":{},"157":{},"189":{},"192":{},"196":{},"198":{},"217":{},"219":{},"220":{},"223":{},"255":{},"258":{}},"component":{}}],["en",{"_index":1923,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["enabl",{"_index":57,"title":{},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"11":{},"12":{},"14":{},"24":{},"27":{},"32":{},"40":{},"41":{},"44":{},"45":{},"50":{},"60":{},"62":{},"68":{},"76":{},"83":{},"87":{},"94":{},"96":{},"98":{},"100":{},"101":{},"109":{},"111":{},"117":{},"129":{},"136":{},"140":{},"148":{},"151":{},"154":{},"156":{},"157":{},"170":{},"172":{},"181":{},"195":{},"202":{},"206":{},"214":{},"217":{},"220":{},"222":{},"223":{},"236":{},"238":{},"240":{},"247":{}},"component":{}}],["enable/dis",{"_index":3444,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["enablecach",{"_index":1181,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["enableencryptableproperti",{"_index":1182,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["enableoauth2cli",{"_index":1192,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["enablewebsecur",{"_index":1180,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["encod",{"_index":2342,"title":{},"name":{},"text":{"93":{},"100":{},"113":{},"147":{},"156":{},"175":{},"213":{},"222":{},"241":{}},"component":{}}],["encount",{"_index":1748,"title":{},"name":{},"text":{"32":{},"68":{},"81":{},"117":{}},"component":{}}],["encrypt",{"_index":246,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["end",{"_index":968,"title":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{},"136-8":{},"202-8":{}},"name":{},"text":{"14":{},"18":{},"34":{},"38":{},"50":{},"54":{},"70":{},"74":{},"77":{},"81":{},"96":{},"97":{},"98":{},"101":{},"108":{},"119":{},"120":{},"127":{},"130":{},"151":{},"152":{},"153":{},"154":{},"157":{},"162":{},"163":{},"164":{},"165":{},"169":{},"181":{},"182":{},"183":{},"184":{},"189":{},"193":{},"196":{},"217":{},"218":{},"219":{},"220":{},"223":{},"228":{},"229":{},"230":{},"231":{},"235":{},"247":{},"248":{},"249":{},"250":{},"255":{}},"component":{}}],["endoint",{"_index":1628,"title":{"32-13":{},"68-13":{},"117-13":{}},"name":{},"text":{},"component":{}}],["endpoint",{"_index":729,"title":{"32-14":{},"32-15":{},"47-1":{},"68-14":{},"68-15":{},"88-1":{},"117-14":{},"117-15":{},"141-1":{},"207-1":{}},"name":{},"text":{"6":{},"8":{},"19":{},"32":{},"45":{},"47":{},"55":{},"68":{},"88":{},"100":{},"101":{},"117":{},"123":{},"141":{},"156":{},"157":{},"174":{},"186":{},"207":{},"222":{},"223":{},"240":{},"253":{}},"component":{}}],["endpoint\":\"add_project\",\"stage\":\"check_preconditions\",\"status\":\"failed\",\"errors\":[{\"error",{"_index":2877,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["enforc",{"_index":2595,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["engin",{"_index":659,"title":{},"name":{},"text":{"5":{},"21":{},"32":{},"44":{},"57":{},"68":{},"82":{},"83":{},"117":{},"127":{},"135":{},"170":{},"193":{},"201":{},"236":{}},"component":{}}],["enhanc",{"_index":664,"title":{},"name":{},"text":{"5":{},"21":{},"44":{},"57":{},"83":{},"101":{},"157":{},"170":{},"174":{},"223":{},"236":{}},"component":{}}],["enjoy",{"_index":3545,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["ensur",{"_index":431,"title":{},"name":{},"text":{"2":{},"32":{},"36":{},"37":{},"39":{},"41":{},"68":{},"72":{},"73":{},"75":{},"77":{},"80":{},"81":{},"95":{},"96":{},"98":{},"117":{},"122":{},"128":{},"130":{},"133":{},"137":{},"142":{},"146":{},"149":{},"151":{},"154":{},"173":{},"180":{},"181":{},"185":{},"194":{},"196":{},"199":{},"203":{},"208":{},"212":{},"215":{},"217":{},"220":{},"239":{},"246":{},"247":{},"251":{}},"component":{}}],["enter",{"_index":294,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{}},"component":{}}],["enterpris",{"_index":722,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"204":{}},"component":{}}],["entir",{"_index":2225,"title":{},"name":{},"text":{"81":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["entri",{"_index":322,"title":{},"name":{},"text":{"2":{},"12":{},"29":{},"41":{},"63":{},"81":{},"101":{},"112":{},"136":{},"151":{},"153":{},"157":{},"173":{},"189":{},"202":{},"217":{},"219":{},"223":{},"239":{},"255":{}},"component":{}}],["entrypoint",{"_index":1305,"title":{},"name":{},"text":{"22":{},"28":{},"38":{},"58":{},"65":{},"74":{},"102":{},"114":{},"158":{},"176":{},"224":{},"242":{}},"component":{}}],["entrypoint.sh",{"_index":2992,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["env",{"_index":973,"title":{},"name":{},"text":{"14":{},"47":{},"50":{},"80":{},"88":{},"96":{},"109":{},"133":{},"141":{},"151":{},"170":{},"199":{},"207":{},"217":{},"236":{}},"component":{}}],["env.docker_registri",{"_index":942,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"215":{}},"component":{}}],["env.docker_registry}/foo",{"_index":2788,"title":{},"name":{},"text":{"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["env.enc",{"_index":2748,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["env.ods_git_ref",{"_index":2765,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["env.ods_image_tag",{"_index":2766,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["env.ods_namespac",{"_index":2763,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["env.shared_library_repositori",{"_index":941,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["env.snyk_authentication_cod",{"_index":1085,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["env.yml",{"_index":3324,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["envfil",{"_index":2794,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["environ",{"_index":32,"title":{"3":{},"42":{},"90":{},"144":{},"210":{},"2-9":{},"2-57":{},"11-1":{},"32-16":{},"32-17":{},"41-9":{},"41-57":{},"68-16":{},"68-17":{},"77-10":{},"96-4":{},"96-12":{},"98-17":{},"98-18":{},"98-21":{},"117-16":{},"117-17":{},"126-13":{},"130-7":{},"151-4":{},"154-20":{},"154-21":{},"154-24":{},"192-13":{},"196-7":{},"217-4":{},"220-20":{},"220-21":{},"220-24":{},"258-13":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"6":{},"8":{},"11":{},"12":{},"14":{},"16":{},"19":{},"20":{},"21":{},"24":{},"27":{},"29":{},"32":{},"35":{},"36":{},"37":{},"40":{},"41":{},"43":{},"44":{},"45":{},"47":{},"50":{},"52":{},"55":{},"56":{},"57":{},"60":{},"62":{},"63":{},"68":{},"71":{},"72":{},"73":{},"76":{},"80":{},"83":{},"87":{},"88":{},"91":{},"95":{},"96":{},"98":{},"100":{},"101":{},"107":{},"109":{},"111":{},"112":{},"117":{},"121":{},"122":{},"126":{},"129":{},"130":{},"133":{},"136":{},"140":{},"141":{},"145":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"161":{},"168":{},"170":{},"172":{},"173":{},"174":{},"178":{},"180":{},"181":{},"182":{},"184":{},"185":{},"187":{},"188":{},"192":{},"195":{},"196":{},"199":{},"202":{},"206":{},"207":{},"211":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"227":{},"234":{},"236":{},"238":{},"239":{},"240":{},"244":{},"246":{},"247":{},"248":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["environemnt",{"_index":1424,"title":{},"name":{},"text":{"24":{},"60":{},"136":{},"202":{}},"component":{}}],["environment.dev.t",{"_index":1835,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["environment.e2e.t",{"_index":1837,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["environment.prod.t",{"_index":1804,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["environment.sh",{"_index":274,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["environment.t",{"_index":1805,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["environment=dev",{"_index":2691,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["environment=prod",{"_index":2720,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["environment=qa",{"_index":2719,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["environmentcr",{"_index":1058,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["environmentlimit",{"_index":1051,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["environments/kernel",{"_index":3610,"title":{"178-5":{},"244-5":{}},"name":{},"text":{},"component":{}}],["eo",{"_index":813,"title":{},"name":{},"text":{"10":{}},"component":{}}],["eol",{"_index":3491,"title":{},"name":{},"text":{"166":{},"232":{}},"component":{}}],["epic",{"_index":1864,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["equal",{"_index":353,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"128":{},"151":{},"194":{},"217":{}},"component":{}}],["erat",{"_index":810,"title":{},"name":{},"text":{"10":{}},"component":{}}],["ergonom",{"_index":3596,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["errimgpul",{"_index":584,"title":{"4-6":{},"43-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{},"component":{}}],["error",{"_index":528,"title":{"4-2":{},"4-6":{},"22-6":{},"43-2":{},"43-6":{},"58-6":{},"80-26":{},"91-2":{},"91-6":{},"101-9":{},"133-26":{},"145-2":{},"145-6":{},"157-12":{},"199-26":{},"211-2":{},"211-6":{},"223-12":{}},"name":{},"text":{"2":{},"4":{},"22":{},"41":{},"43":{},"58":{},"80":{},"91":{},"100":{},"101":{},"109":{},"114":{},"133":{},"145":{},"151":{},"153":{},"154":{},"156":{},"157":{},"170":{},"172":{},"176":{},"199":{},"211":{},"217":{},"219":{},"220":{},"222":{},"223":{},"236":{},"238":{},"242":{}},"component":{}}],["error\").make_error",{"_index":3013,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["error.lua",{"_index":2991,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["es2018",{"_index":3083,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["eslint",{"_index":3650,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["eslint/schemat",{"_index":3699,"title":{},"name":{},"text":{"184":{},"250":{}},"component":{}}],["especi",{"_index":2149,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["essenti",{"_index":2721,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["est",{"_index":826,"title":{},"name":{},"text":{"10":{}},"component":{}}],["establish",{"_index":3428,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["et",{"_index":807,"title":{},"name":{},"text":{"10":{}},"component":{}}],["etc",{"_index":910,"title":{"146-1":{},"212-1":{}},"name":{},"text":{"13":{},"20":{},"22":{},"49":{},"56":{},"58":{},"81":{},"83":{},"92":{},"95":{},"98":{},"100":{},"101":{},"115":{},"136":{},"146":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"177":{},"182":{},"189":{},"202":{},"212":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"243":{},"248":{},"255":{}},"component":{}}],["etc/ans",{"_index":605,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["etl",{"_index":3685,"title":{"182":{},"248":{}},"name":{"182":{},"248":{}},"text":{"182":{},"186":{},"248":{},"253":{}},"component":{}}],["eu",{"_index":2821,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["evalu",{"_index":197,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["evalut",{"_index":198,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["even",{"_index":238,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"83":{},"96":{},"98":{},"101":{},"128":{},"132":{},"151":{},"154":{},"157":{},"194":{},"198":{},"217":{},"220":{},"223":{}},"component":{}}],["event",{"_index":622,"title":{},"name":{},"text":{"4":{},"6":{},"8":{},"22":{},"43":{},"45":{},"47":{},"58":{},"80":{},"88":{},"91":{},"133":{},"141":{},"145":{},"199":{},"207":{},"211":{}},"component":{}}],["events.add(\"pr:declin",{"_index":1317,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["events.add(\"pr:merg",{"_index":1316,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["events.add(\"repo:refs_chang",{"_index":1315,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["everyt",{"_index":2284,"title":{},"name":{},"text":{"83":{}},"component":{}}],["everyth",{"_index":641,"title":{},"name":{},"text":{"5":{},"14":{},"44":{},"50":{},"83":{},"98":{},"154":{},"220":{}},"component":{}}],["everywher",{"_index":2519,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["evidence.t",{"_index":3640,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["exact",{"_index":774,"title":{},"name":{},"text":{"8":{},"35":{},"47":{},"71":{},"83":{},"88":{},"96":{},"98":{},"121":{},"130":{},"136":{},"137":{},"141":{},"150":{},"151":{},"154":{},"184":{},"196":{},"202":{},"203":{},"207":{},"216":{},"217":{},"220":{},"250":{}},"component":{}}],["exactli",{"_index":1082,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"108":{},"151":{},"154":{},"169":{},"217":{},"220":{},"235":{}},"component":{}}],["exampl",{"_index":351,"title":{"14-6":{},"24-5":{},"32-10":{},"50-6":{},"60-5":{},"68-10":{},"96-5":{},"96-13":{},"98-8":{},"98-9":{},"100-9":{},"117-10":{},"126-8":{},"126-9":{},"151-5":{},"154-11":{},"154-12":{},"156-9":{},"192-8":{},"192-9":{},"217-5":{},"220-11":{},"220-12":{},"222-9":{},"258-8":{},"258-9":{}},"name":{},"text":{"2":{},"12":{},"13":{},"14":{},"18":{},"19":{},"20":{},"24":{},"26":{},"30":{},"32":{},"41":{},"47":{},"49":{},"50":{},"54":{},"55":{},"56":{},"60":{},"61":{},"64":{},"68":{},"76":{},"81":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"109":{},"110":{},"113":{},"115":{},"117":{},"126":{},"128":{},"129":{},"130":{},"136":{},"141":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"170":{},"171":{},"173":{},"174":{},"175":{},"177":{},"180":{},"189":{},"192":{},"194":{},"195":{},"196":{},"202":{},"207":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"236":{},"237":{},"239":{},"240":{},"241":{},"243":{},"246":{},"255":{},"258":{}},"component":{}}],["example.com/foo/bar",{"_index":2775,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["example.com/project/compon",{"_index":1480,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["example.json",{"_index":1765,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"181":{},"247":{}},"component":{}}],["example.spec.t",{"_index":1926,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["except",{"_index":459,"title":{"4-6":{},"43-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{"2":{},"25":{},"26":{},"32":{},"41":{},"61":{},"66":{},"68":{},"95":{},"100":{},"110":{},"115":{},"117":{},"121":{},"124":{},"125":{},"149":{},"156":{},"171":{},"177":{},"184":{},"190":{},"191":{},"215":{},"222":{},"237":{},"243":{},"250":{},"256":{},"257":{}},"component":{}}],["exclud",{"_index":2736,"title":{},"name":{},"text":{"98":{},"121":{},"122":{},"154":{},"184":{},"185":{},"220":{},"250":{},"251":{}},"component":{}}],["exclus",{"_index":2613,"title":{},"name":{},"text":{"96":{},"121":{},"122":{},"151":{},"184":{},"185":{},"217":{},"250":{},"251":{}},"component":{}}],["execut",{"_index":279,"title":{"4-4":{},"43-4":{},"91-4":{},"145-4":{},"211-4":{}},"name":{},"text":{"2":{},"4":{},"8":{},"19":{},"22":{},"24":{},"25":{},"27":{},"28":{},"29":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"47":{},"55":{},"58":{},"60":{},"62":{},"63":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"79":{},"80":{},"88":{},"91":{},"96":{},"98":{},"100":{},"106":{},"109":{},"111":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"126":{},"132":{},"133":{},"137":{},"141":{},"142":{},"145":{},"146":{},"150":{},"151":{},"154":{},"156":{},"166":{},"167":{},"170":{},"172":{},"173":{},"176":{},"177":{},"180":{},"181":{},"183":{},"184":{},"185":{},"192":{},"198":{},"199":{},"203":{},"207":{},"208":{},"211":{},"212":{},"216":{},"217":{},"220":{},"222":{},"232":{},"233":{},"236":{},"238":{},"239":{},"242":{},"243":{},"246":{},"247":{},"249":{},"250":{},"251":{},"258":{}},"component":{}}],["execute/reproduc",{"_index":1745,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["executor",{"_index":1404,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["exeuct",{"_index":3679,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["exist",{"_index":163,"title":{"39-7":{},"39-9":{},"75-7":{},"75-9":{}},"name":{},"text":{"2":{},"5":{},"14":{},"22":{},"39":{},"41":{},"44":{},"47":{},"50":{},"58":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"115":{},"123":{},"126":{},"127":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"169":{},"177":{},"186":{},"189":{},"192":{},"193":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"235":{},"240":{},"243":{},"253":{},"255":{},"258":{}},"component":{}}],["existing/multipl",{"_index":3792,"title":{},"name":{},"text":{"240":{}},"component":{}}],["exit",{"_index":1356,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"154":{},"156":{},"220":{},"222":{}},"component":{}}],["expand",{"_index":3328,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["expec",{"_index":3696,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["expect",{"_index":1647,"title":{"182":{},"248":{}},"name":{},"text":{"32":{},"68":{},"93":{},"98":{},"100":{},"117":{},"126":{},"130":{},"147":{},"151":{},"154":{},"156":{},"172":{},"182":{},"192":{},"196":{},"213":{},"217":{},"220":{},"222":{},"238":{},"248":{},"258":{}},"component":{}}],["experi",{"_index":3789,"title":{},"name":{},"text":{"240":{}},"component":{}}],["experiment",{"_index":2817,"title":{"154-9":{},"220-9":{}},"name":{},"text":{"100":{},"128":{},"156":{},"194":{},"222":{}},"component":{}}],["explain",{"_index":285,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"81":{},"96":{},"100":{},"101":{},"151":{},"156":{},"157":{},"217":{},"222":{},"223":{}},"component":{}}],["explicit",{"_index":2294,"title":{},"name":{},"text":{"83":{},"98":{},"136":{},"154":{},"202":{},"220":{}},"component":{}}],["explicitli",{"_index":2299,"title":{},"name":{},"text":{"83":{},"95":{},"136":{},"149":{},"202":{},"215":{}},"component":{}}],["exploit",{"_index":3739,"title":{},"name":{},"text":{"217":{}},"component":{}}],["explor",{"_index":1429,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["export",{"_index":141,"title":{"2-65":{},"41-65":{}},"name":{},"text":{"2":{},"41":{},"76":{},"79":{},"80":{},"96":{},"98":{},"129":{},"132":{},"133":{},"151":{},"154":{},"195":{},"198":{},"199":{},"217":{},"220":{}},"component":{}}],["export/import",{"_index":2973,"title":{},"name":{},"text":{"102":{}},"component":{}}],["expos",{"_index":1138,"title":{},"name":{},"text":{"19":{},"24":{},"32":{},"55":{},"60":{},"68":{},"80":{},"87":{},"95":{},"100":{},"117":{},"133":{},"140":{},"149":{},"156":{},"174":{},"199":{},"206":{},"215":{},"222":{},"240":{}},"component":{}}],["express",{"_index":937,"title":{"28":{},"65":{},"114":{},"176":{},"242":{}},"name":{"28":{},"65":{},"114":{},"176":{},"242":{}},"text":{"14":{},"20":{},"28":{},"39":{},"50":{},"56":{},"65":{},"75":{},"98":{},"101":{},"114":{},"154":{},"157":{},"176":{},"220":{},"223":{},"242":{}},"component":{}}],["ext",{"_index":1105,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"96":{},"151":{},"217":{}},"component":{}}],["ext:2.63",{"_index":702,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["extend",{"_index":1187,"title":{},"name":{},"text":{"19":{},"26":{},"55":{},"61":{},"83":{},"87":{},"100":{},"110":{},"136":{},"140":{},"156":{},"171":{},"174":{},"202":{},"206":{},"222":{},"237":{},"240":{}},"component":{}}],["extens",{"_index":922,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"174":{},"178":{},"240":{},"244":{}},"component":{}}],["extensionimagelabel",{"_index":2570,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["extent",{"_index":3181,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["extern",{"_index":430,"title":{"32-4":{},"68-4":{},"117-4":{}},"name":{},"text":{"2":{},"24":{},"32":{},"41":{},"47":{},"60":{},"68":{},"80":{},"88":{},"98":{},"117":{},"133":{},"141":{},"151":{},"154":{},"199":{},"207":{},"217":{},"220":{}},"component":{}}],["extra",{"_index":2457,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["extract",{"_index":1249,"title":{},"name":{},"text":{"20":{},"56":{},"76":{},"96":{},"101":{},"129":{},"151":{},"157":{},"195":{},"217":{},"223":{}},"component":{}}],["ey",{"_index":3214,"title":{},"name":{},"text":{"142":{},"208":{}},"component":{}}],["f",{"_index":2173,"title":{},"name":{},"text":{"80":{},"100":{},"133":{},"151":{},"156":{},"199":{},"217":{},"222":{}},"component":{}}],["f1",{"_index":1368,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["f2",{"_index":1369,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["fact",{"_index":3240,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["fail",{"_index":577,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"4":{},"14":{},"16":{},"22":{},"36":{},"37":{},"43":{},"50":{},"52":{},"58":{},"72":{},"73":{},"91":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"122":{},"145":{},"148":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"185":{},"211":{},"214":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"251":{}},"component":{}}],["failedbuildshistorylimit",{"_index":2192,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["failonsnykscanvulner",{"_index":1046,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"96":{},"151":{},"217":{}},"component":{}}],["failonvulner",{"_index":2472,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["failur",{"_index":1049,"title":{},"name":{},"text":{"14":{},"22":{},"50":{},"58":{},"96":{},"101":{},"151":{},"157":{},"217":{},"223":{}},"component":{}}],["failurethreshold",{"_index":2607,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["fall",{"_index":2665,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["fals",{"_index":575,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"22":{},"28":{},"29":{},"58":{},"63":{},"65":{},"80":{},"96":{},"101":{},"133":{},"151":{},"157":{},"199":{},"217":{},"223":{},"240":{}},"component":{}}],["familiar",{"_index":184,"title":{},"name":{},"text":{"2":{},"27":{},"41":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["faq",{"_index":1276,"title":{"21":{},"57":{},"101-15":{},"102-2":{},"157-19":{},"158-3":{},"223-19":{},"224-3":{}},"name":{"21":{},"57":{}},"text":{"101":{},"102":{},"157":{},"223":{}},"component":{}}],["far",{"_index":447,"title":{},"name":{},"text":{"2":{},"41":{},"150":{},"216":{}},"component":{}}],["fashion",{"_index":3156,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["fast",{"_index":2596,"title":{},"name":{},"text":{"96":{},"151":{},"174":{},"217":{},"240":{}},"component":{}}],["fastest",{"_index":2745,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["fatal",{"_index":572,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["favicon",{"_index":1900,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["favicon.ico",{"_index":1806,"title":{},"name":{},"text":{"35":{},"37":{},"38":{},"71":{},"73":{},"74":{},"121":{},"184":{},"250":{}},"component":{}}],["favicon.png",{"_index":3052,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["favor",{"_index":3649,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["favorit",{"_index":529,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["fe",{"_index":1786,"title":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"name":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"text":{"94":{},"95":{},"98":{},"126":{},"148":{},"149":{},"150":{},"153":{},"154":{},"192":{},"214":{},"215":{},"216":{},"219":{},"220":{},"258":{}},"component":{}}],["featur",{"_index":745,"title":{"7-2":{},"24-6":{},"46-2":{},"60-6":{},"94-11":{},"98-18":{},"103-2":{},"104-2":{},"105-2":{},"106-2":{},"107-2":{},"148-11":{},"154-9":{},"154-21":{},"159-2":{},"160-2":{},"161-2":{},"162-2":{},"163-2":{},"164-2":{},"165-2":{},"166-2":{},"167-2":{},"168-2":{},"214-11":{},"220-9":{},"220-21":{},"225-2":{},"226-2":{},"227-2":{},"228-2":{},"229-2":{},"230-2":{},"231-2":{},"232-2":{},"233-2":{},"234-2":{}},"name":{},"text":{"8":{},"14":{},"16":{},"25":{},"32":{},"47":{},"50":{},"52":{},"66":{},"68":{},"80":{},"81":{},"83":{},"88":{},"94":{},"96":{},"98":{},"100":{},"108":{},"115":{},"117":{},"127":{},"133":{},"136":{},"141":{},"148":{},"150":{},"151":{},"154":{},"156":{},"169":{},"174":{},"177":{},"193":{},"199":{},"202":{},"207":{},"214":{},"216":{},"217":{},"220":{},"222":{},"235":{},"240":{},"243":{}},"component":{}}],["feature/foo",{"_index":974,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["feature/foobar",{"_index":3236,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["feb",{"_index":3178,"title":{"136-8":{},"202-8":{}},"name":{},"text":{},"component":{}}],["fed",{"_index":2792,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["feedback",{"_index":2552,"title":{},"name":{},"text":{"96":{},"98":{},"126":{},"151":{},"154":{},"192":{},"217":{},"220":{},"258":{}},"component":{}}],["feel",{"_index":3090,"title":{},"name":{},"text":{"115":{},"177":{},"243":{}},"component":{}}],["fernet",{"_index":1423,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["fernetkey",{"_index":1422,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["fetch",{"_index":724,"title":{},"name":{},"text":{"6":{},"45":{},"80":{},"81":{},"85":{},"133":{},"138":{},"199":{},"204":{}},"component":{}}],["fetchuserrepos.j",{"_index":1865,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["few",{"_index":1196,"title":{},"name":{},"text":{"19":{},"55":{},"96":{},"100":{},"128":{},"151":{},"156":{},"194":{},"217":{},"222":{}},"component":{}}],["ff",{"_index":2591,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["fi",{"_index":1362,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["field",{"_index":347,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"88":{},"96":{},"98":{},"141":{},"151":{},"154":{},"207":{},"217":{},"220":{}},"component":{}}],["file",{"_index":406,"title":{"14-10":{},"24-4":{},"25-2":{},"26-2":{},"27-2":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"32-4":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"50-10":{},"60-4":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-2":{},"66-2":{},"67-2":{},"68-4":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"93-1":{},"96-8":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-2":{},"115-2":{},"116-2":{},"117-4":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"126-1":{},"147-1":{},"151-8":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"192-1":{},"213-1":{},"217-8":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"252-2":{},"254-2":{},"256-2":{},"257-2":{},"258-1":{}},"name":{},"text":{"2":{},"4":{},"11":{},"12":{},"14":{},"17":{},"20":{},"22":{},"24":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"50":{},"53":{},"56":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"79":{},"81":{},"82":{},"91":{},"93":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"129":{},"130":{},"132":{},"135":{},"136":{},"145":{},"147":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"189":{},"195":{},"196":{},"198":{},"201":{},"202":{},"211":{},"213":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"254":{},"255":{}},"component":{}}],["file=ssh",{"_index":2505,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["filenam",{"_index":2803,"title":{},"name":{},"text":{"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["files/metadata.yml",{"_index":3505,"title":{},"name":{},"text":{"169":{},"235":{}},"component":{}}],["files/releas",{"_index":3088,"title":{},"name":{},"text":{"115":{},"177":{},"243":{}},"component":{}}],["filesystem",{"_index":1166,"title":{},"name":{},"text":{"19":{},"39":{},"55":{},"75":{},"100":{},"138":{},"151":{},"156":{},"204":{},"217":{},"222":{}},"component":{}}],["fill",{"_index":418,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"77":{},"88":{},"108":{},"130":{},"141":{},"169":{},"196":{},"207":{},"235":{}},"component":{}}],["filter",{"_index":425,"title":{},"name":{},"text":{"2":{},"41":{},"109":{},"170":{},"236":{}},"component":{}}],["filtering/rewrit",{"_index":3017,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["final",{"_index":933,"title":{},"name":{},"text":{"14":{},"36":{},"37":{},"50":{},"60":{},"72":{},"73":{},"95":{},"96":{},"122":{},"128":{},"130":{},"137":{},"142":{},"146":{},"149":{},"151":{},"174":{},"185":{},"194":{},"196":{},"203":{},"208":{},"212":{},"215":{},"217":{},"240":{},"251":{}},"component":{}}],["find",{"_index":272,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"17":{},"21":{},"27":{},"41":{},"45":{},"50":{},"53":{},"57":{},"62":{},"76":{},"77":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"120":{},"129":{},"130":{},"149":{},"151":{},"153":{},"154":{},"157":{},"169":{},"172":{},"173":{},"174":{},"180":{},"181":{},"182":{},"183":{},"187":{},"188":{},"195":{},"196":{},"215":{},"217":{},"219":{},"220":{},"223":{},"235":{},"238":{},"239":{},"240":{},"246":{},"247":{},"248":{},"249":{},"252":{},"254":{}},"component":{}}],["findpullrequest(str",{"_index":2535,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["fingerprint",{"_index":3335,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["finish",{"_index":413,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"98":{},"117":{},"154":{},"220":{}},"component":{}}],["first",{"_index":262,"title":{"240-11":{}},"name":{},"text":{"2":{},"14":{},"18":{},"24":{},"28":{},"29":{},"38":{},"41":{},"50":{},"54":{},"60":{},"63":{},"65":{},"74":{},"77":{},"80":{},"81":{},"96":{},"98":{},"100":{},"101":{},"114":{},"128":{},"130":{},"133":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"176":{},"189":{},"194":{},"196":{},"199":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"240":{},"242":{},"255":{}},"component":{}}],["fit",{"_index":676,"title":{},"name":{},"text":{"5":{},"14":{},"28":{},"39":{},"44":{},"50":{},"65":{},"75":{},"80":{},"83":{},"96":{},"97":{},"109":{},"114":{},"133":{},"151":{},"152":{},"158":{},"170":{},"176":{},"199":{},"217":{},"218":{},"224":{},"236":{},"242":{}},"component":{}}],["fix",{"_index":603,"title":{"80-25":{},"80-26":{},"133-25":{},"133-26":{},"199-25":{},"199-26":{}},"name":{},"text":{"4":{},"14":{},"43":{},"50":{},"79":{},"80":{},"81":{},"83":{},"91":{},"95":{},"96":{},"98":{},"128":{},"132":{},"133":{},"136":{},"145":{},"149":{},"151":{},"154":{},"172":{},"181":{},"194":{},"198":{},"199":{},"202":{},"211":{},"215":{},"217":{},"220":{},"238":{},"247":{}},"component":{}}],["fixtur",{"_index":1764,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"181":{},"247":{}},"component":{}}],["fixtures/default",{"_index":3719,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["flag",{"_index":1048,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"81":{},"96":{},"100":{},"151":{},"156":{},"217":{},"222":{},"240":{}},"component":{}}],["flags.t",{"_index":3710,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["flake8",{"_index":3032,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["flask",{"_index":1559,"title":{"29":{},"63":{},"112":{},"173":{},"239":{}},"name":{"29":{},"63":{},"112":{},"173":{},"239":{}},"text":{"29":{},"32":{},"63":{},"68":{},"95":{},"112":{},"117":{},"136":{},"149":{},"173":{},"202":{},"215":{},"239":{}},"component":{}}],["fli",{"_index":734,"title":{"96-12":{}},"name":{},"text":{"6":{},"8":{},"14":{},"45":{},"47":{},"50":{},"80":{},"88":{},"96":{},"98":{},"126":{},"133":{},"141":{},"154":{},"192":{},"199":{},"207":{},"220":{},"258":{}},"component":{}}],["flight",{"_index":2806,"title":{"100-8":{},"156-8":{},"222-8":{}},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["flow",{"_index":962,"title":{"81-3":{}},"name":{},"text":{"14":{},"50":{},"80":{},"96":{},"133":{},"136":{},"151":{},"199":{},"202":{},"217":{}},"component":{}}],["flower",{"_index":1711,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["fmt",{"_index":3587,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["focus",{"_index":3595,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["folder",{"_index":271,"title":{},"name":{},"text":{"2":{},"4":{},"12":{},"14":{},"24":{},"25":{},"27":{},"28":{},"29":{},"32":{},"33":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"50":{},"60":{},"62":{},"63":{},"65":{},"66":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"80":{},"82":{},"91":{},"98":{},"100":{},"101":{},"108":{},"111":{},"112":{},"114":{},"115":{},"117":{},"118":{},"120":{},"121":{},"122":{},"126":{},"133":{},"135":{},"145":{},"154":{},"156":{},"157":{},"161":{},"169":{},"172":{},"173":{},"174":{},"176":{},"177":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"199":{},"201":{},"211":{},"220":{},"222":{},"223":{},"227":{},"234":{},"235":{},"238":{},"239":{},"240":{},"242":{},"243":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["folk",{"_index":2264,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["follow",{"_index":172,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"19":{},"24":{},"27":{},"32":{},"34":{},"36":{},"37":{},"38":{},"39":{},"41":{},"45":{},"47":{},"50":{},"55":{},"60":{},"62":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"87":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"117":{},"119":{},"120":{},"122":{},"126":{},"127":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"141":{},"142":{},"146":{},"148":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"183":{},"184":{},"185":{},"189":{},"192":{},"193":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"207":{},"208":{},"212":{},"214":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"249":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["follw",{"_index":1886,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["foo",{"_index":1033,"title":{},"name":{},"text":{"14":{},"47":{},"50":{},"88":{},"95":{},"96":{},"98":{},"99":{},"108":{},"141":{},"149":{},"151":{},"154":{},"155":{},"169":{},"207":{},"215":{},"217":{},"220":{},"221":{},"235":{}},"component":{}}],["foo_bar",{"_index":1968,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["foobar",{"_index":986,"title":{},"name":{},"text":{"14":{},"50":{},"96":{}},"component":{}}],["forc",{"_index":913,"title":{},"name":{},"text":{"13":{},"41":{},"49":{},"93":{},"98":{},"147":{},"151":{},"154":{},"213":{},"217":{},"220":{}},"component":{}}],["forcerebuild",{"_index":2661,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["forcibl",{"_index":3374,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["forget",{"_index":3293,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["fork",{"_index":2234,"title":{},"name":{},"text":{"81":{},"99":{},"123":{},"124":{},"125":{},"155":{},"186":{},"190":{},"191":{},"221":{},"253":{},"256":{},"257":{}},"component":{}}],["form",{"_index":378,"title":{},"name":{},"text":{"2":{},"22":{},"28":{},"41":{},"47":{},"58":{},"65":{},"80":{},"88":{},"98":{},"114":{},"126":{},"133":{},"141":{},"154":{},"176":{},"192":{},"199":{},"207":{},"220":{},"242":{},"258":{}},"component":{}}],["format",{"_index":474,"title":{},"name":{},"text":{"2":{},"34":{},"41":{},"70":{},"81":{},"100":{},"108":{},"113":{},"115":{},"119":{},"151":{},"156":{},"169":{},"174":{},"175":{},"177":{},"217":{},"222":{},"235":{},"240":{},"241":{},"243":{}},"component":{}}],["formatt",{"_index":3652,"title":{},"name":{},"text":{"181":{},"184":{},"240":{},"247":{},"250":{}},"component":{}}],["forward",{"_index":731,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"88":{},"96":{},"141":{},"150":{},"151":{},"207":{},"216":{},"217":{}},"component":{}}],["found",{"_index":570,"title":{"4-2":{},"43-2":{},"91-2":{},"145-2":{},"211-2":{}},"name":{},"text":{"14":{},"16":{},"19":{},"20":{},"21":{},"24":{},"25":{},"50":{},"52":{},"55":{},"56":{},"57":{},"60":{},"66":{},"87":{},"93":{},"96":{},"99":{},"100":{},"101":{},"102":{},"115":{},"140":{},"151":{},"155":{},"156":{},"157":{},"158":{},"161":{},"177":{},"206":{},"217":{},"221":{},"222":{},"223":{},"224":{},"243":{}},"component":{}}],["four",{"_index":2682,"title":{},"name":{},"text":{"98":{},"154":{},"181":{},"220":{},"247":{}},"component":{}}],["framework",{"_index":150,"title":{"25-3":{},"26-3":{},"27-8":{},"28-3":{},"29-3":{},"30-3":{},"31-3":{},"32-20":{},"33-3":{},"34-3":{},"35-3":{},"36-3":{},"37-3":{},"38-3":{},"61-3":{},"62-8":{},"63-3":{},"64-3":{},"65-3":{},"66-3":{},"67-3":{},"68-20":{},"69-3":{},"70-3":{},"71-3":{},"72-3":{},"73-3":{},"74-3":{},"109-3":{},"110-3":{},"111-8":{},"112-3":{},"113-3":{},"114-3":{},"115-3":{},"116-3":{},"117-20":{},"118-3":{},"119-3":{},"120-6":{},"121-3":{},"122-3":{},"124-3":{},"125-3":{},"170-3":{},"171-3":{},"172-8":{},"173-3":{},"174-3":{},"175-3":{},"176-3":{},"177-3":{},"178-3":{},"179-3":{},"180-3":{},"181-3":{},"182-3":{},"183-6":{},"184-3":{},"185-3":{},"187-3":{},"188-3":{},"190-3":{},"191-3":{},"236-3":{},"237-3":{},"238-8":{},"239-3":{},"240-3":{},"241-3":{},"242-3":{},"243-3":{},"244-3":{},"245-3":{},"246-3":{},"247-3":{},"248-3":{},"249-6":{},"250-3":{},"251-3":{},"252-3":{},"254-3":{},"256-3":{},"257-3":{}},"name":{},"text":{"2":{},"5":{},"25":{},"29":{},"32":{},"36":{},"41":{},"44":{},"63":{},"66":{},"68":{},"72":{},"83":{},"108":{},"112":{},"113":{},"114":{},"115":{},"117":{},"122":{},"123":{},"136":{},"153":{},"158":{},"160":{},"169":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"185":{},"186":{},"189":{},"202":{},"219":{},"224":{},"226":{},"235":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"251":{},"253":{},"255":{}},"component":{}}],["free",{"_index":205,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"115":{},"128":{},"154":{},"177":{},"185":{},"194":{},"220":{},"243":{},"251":{}},"component":{}}],["freedom",{"_index":671,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"158":{},"224":{}},"component":{}}],["fromref",{"_index":3271,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["front",{"_index":1770,"title":{},"name":{},"text":{"34":{},"70":{},"101":{},"119":{},"157":{},"184":{},"223":{},"250":{}},"component":{}}],["frontend",{"_index":1128,"title":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{},"19-2":{},"39-3":{},"55-2":{},"75-3":{},"100-3":{},"123-4":{},"156-3":{},"186-4":{},"222-3":{},"253-4":{}},"name":{},"text":{"19":{},"35":{},"39":{},"55":{},"71":{},"75":{},"98":{},"100":{},"121":{},"123":{},"126":{},"153":{},"154":{},"156":{},"184":{},"185":{},"186":{},"189":{},"192":{},"219":{},"220":{},"222":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["frontend.spa.en",{"_index":2818,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["full",{"_index":181,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"41":{},"44":{},"50":{},"79":{},"83":{},"121":{},"132":{},"158":{},"174":{},"184":{},"198":{},"224":{},"240":{},"250":{}},"component":{}}],["function",{"_index":58,"title":{},"name":{},"text":{"1":{},"2":{},"11":{},"12":{},"22":{},"32":{},"40":{},"41":{},"58":{},"68":{},"76":{},"80":{},"81":{},"82":{},"101":{},"114":{},"115":{},"117":{},"129":{},"133":{},"135":{},"136":{},"157":{},"174":{},"176":{},"177":{},"181":{},"195":{},"199":{},"201":{},"202":{},"223":{},"240":{},"242":{},"243":{},"247":{}},"component":{}}],["further",{"_index":451,"title":{},"name":{},"text":{"2":{},"11":{},"12":{},"13":{},"14":{},"21":{},"26":{},"27":{},"32":{},"41":{},"47":{},"49":{},"50":{},"57":{},"61":{},"62":{},"68":{},"77":{},"78":{},"79":{},"80":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"102":{},"110":{},"111":{},"117":{},"120":{},"127":{},"128":{},"130":{},"131":{},"132":{},"133":{},"141":{},"147":{},"149":{},"151":{},"154":{},"155":{},"158":{},"166":{},"167":{},"171":{},"172":{},"173":{},"181":{},"182":{},"183":{},"193":{},"194":{},"196":{},"197":{},"198":{},"199":{},"207":{},"213":{},"215":{},"217":{},"220":{},"221":{},"224":{},"232":{},"233":{},"237":{},"238":{},"239":{},"240":{},"247":{},"248":{},"249":{}},"component":{}}],["furthermor",{"_index":2910,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["futur",{"_index":513,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"126":{},"150":{},"154":{},"192":{},"216":{},"220":{},"258":{}},"component":{}}],["g",{"_index":1847,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["g=u",{"_index":3672,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["galaxi",{"_index":2012,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["gate",{"_index":2375,"title":{"94-12":{},"148-12":{},"214-12":{}},"name":{},"text":{"94":{},"96":{},"148":{},"151":{},"214":{},"217":{}},"component":{}}],["gateway",{"_index":862,"title":{"109":{},"170":{},"236":{}},"name":{"109":{},"170":{},"236":{}},"text":{"12":{},"109":{},"126":{},"153":{},"170":{},"189":{},"192":{},"219":{},"236":{},"255":{},"258":{}},"component":{}}],["gateway/nginx",{"_index":3122,"title":{},"name":{},"text":{"123":{},"186":{},"253":{}},"component":{}}],["gather",{"_index":2559,"title":{},"name":{},"text":{"96":{},"151":{},"181":{},"217":{},"247":{}},"component":{}}],["gb",{"_index":176,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["geb",{"_index":3093,"title":{"120":{},"183":{},"249":{}},"name":{"120":{},"183":{},"249":{}},"text":{"120":{},"123":{},"183":{},"186":{},"249":{},"253":{}},"component":{}}],["gebconfig.groovi",{"_index":3101,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["geerlingguy",{"_index":2025,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["geerlingguy.dock",{"_index":2022,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["geerlingguy.git",{"_index":2011,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["geerlingguy.nginx",{"_index":2020,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["gen",{"_index":2073,"title":{"124":{},"190":{},"256":{}},"name":{"124":{},"190":{},"256":{}},"text":{"77":{},"79":{},"130":{},"132":{},"196":{},"198":{}},"component":{}}],["gener",{"_index":40,"title":{"124":{},"190":{},"256":{},"25-2":{},"26-2":{},"27-2":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-2":{},"66-2":{},"67-2":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"77-15":{},"80-3":{},"95-10":{},"98-14":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-2":{},"115-2":{},"116-2":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"126-12":{},"130-13":{},"133-3":{},"149-10":{},"154-17":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"192-12":{},"196-13":{},"199-3":{},"215-10":{},"220-17":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"252-2":{},"254-2":{},"256-2":{},"257-2":{},"258-12":{}},"name":{},"text":{"1":{},"2":{},"6":{},"13":{},"14":{},"18":{},"19":{},"22":{},"25":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"45":{},"49":{},"50":{},"54":{},"55":{},"58":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"80":{},"81":{},"82":{},"83":{},"87":{},"93":{},"95":{},"96":{},"98":{},"100":{},"101":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"133":{},"135":{},"136":{},"138":{},"140":{},"147":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"167":{},"169":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"194":{},"195":{},"196":{},"199":{},"201":{},"202":{},"204":{},"206":{},"213":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"233":{},"235":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["genrat",{"_index":1932,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["genreat",{"_index":1931,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["gerardcl",{"_index":1637,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["get",{"_index":147,"title":{"2":{},"41":{}},"name":{},"text":{"4":{},"19":{},"32":{},"43":{},"55":{},"68":{},"81":{},"91":{},"98":{},"100":{},"117":{},"128":{},"137":{},"142":{},"145":{},"146":{},"154":{},"156":{},"157":{},"181":{},"194":{},"203":{},"208":{},"211":{},"212":{},"220":{},"222":{},"223":{},"247":{}},"component":{}}],["getdefaultreviewerconditions(str",{"_index":3274,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["getdefaultreviewers(str",{"_index":3273,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["getmodel",{"_index":1732,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["getpullrequests(str",{"_index":2532,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["getusernam",{"_index":1272,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["getuserpassword",{"_index":1273,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["git",{"_index":79,"title":{"2-3":{},"14-10":{},"39-9":{},"41-3":{},"50-10":{},"75-9":{},"94-3":{},"96-4":{},"96-8":{},"98-7":{},"98-8":{},"98-9":{},"126-7":{},"126-8":{},"126-9":{},"148-3":{},"151-4":{},"151-8":{},"154-10":{},"154-11":{},"154-12":{},"192-7":{},"192-8":{},"192-9":{},"214-3":{},"217-4":{},"217-8":{},"220-10":{},"220-11":{},"220-12":{},"258-7":{},"258-8":{},"258-9":{}},"name":{},"text":{"2":{},"13":{},"14":{},"17":{},"19":{},"27":{},"31":{},"32":{},"36":{},"37":{},"39":{},"41":{},"49":{},"50":{},"53":{},"55":{},"62":{},"67":{},"68":{},"72":{},"73":{},"75":{},"76":{},"77":{},"80":{},"81":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"111":{},"116":{},"117":{},"122":{},"126":{},"129":{},"130":{},"133":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"172":{},"174":{},"178":{},"180":{},"185":{},"192":{},"195":{},"196":{},"199":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"238":{},"240":{},"244":{},"246":{},"251":{},"258":{}},"component":{}}],["git/archive/2.1.0.tar.gz",{"_index":2027,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["git_ref",{"_index":3172,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["git_ref=mast",{"_index":3169,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["git_ref=v3.0.0",{"_index":3201,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["git_url_http",{"_index":2799,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["git_url_http/ssh",{"_index":1966,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["gitbranch",{"_index":1037,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommit",{"_index":1038,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommitauthor",{"_index":1039,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommitmessag",{"_index":1041,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommitrawmessag",{"_index":2486,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["gitcommittim",{"_index":1042,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["github",{"_index":521,"title":{"82-5":{},"135-5":{},"201-5":{}},"name":{},"text":{"2":{},"14":{},"19":{},"25":{},"41":{},"50":{},"55":{},"66":{},"81":{},"83":{},"96":{},"99":{},"100":{},"115":{},"136":{},"151":{},"155":{},"156":{},"177":{},"202":{},"217":{},"221":{},"222":{},"243":{}},"component":{}}],["github.com/acm",{"_index":2235,"title":{},"name":{},"text":{"81":{}},"component":{}}],["github.com/opendevstack",{"_index":2084,"title":{},"name":{},"text":{"79":{},"80":{},"81":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["github/opendevstack/od",{"_index":3127,"title":{},"name":{},"text":{"124":{},"125":{},"190":{},"191":{},"256":{},"257":{}},"component":{}}],["gitignor",{"_index":1691,"title":{},"name":{},"text":{"32":{},"34":{},"38":{},"68":{},"70":{},"74":{},"117":{},"119":{},"180":{},"240":{},"246":{}},"component":{}}],["gitleak",{"_index":3556,"title":{},"name":{},"text":{"174":{}},"component":{}}],["gitleaks.adoc",{"_index":3512,"title":{},"name":{},"text":{"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["gitmodul",{"_index":3227,"title":{"150-7":{},"216-7":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["gitscmsourc",{"_index":946,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"148":{},"214":{}},"component":{}}],["giturl",{"_index":1036,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["giturlhttp",{"_index":2787,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["give",{"_index":661,"title":{},"name":{},"text":{"5":{},"21":{},"39":{},"44":{},"57":{},"75":{},"83":{},"102":{},"158":{},"224":{}},"component":{}}],["given",{"_index":1219,"title":{},"name":{},"text":{"20":{},"32":{},"47":{},"56":{},"68":{},"88":{},"96":{},"98":{},"100":{},"101":{},"117":{},"141":{},"151":{},"153":{},"154":{},"156":{},"157":{},"189":{},"207":{},"217":{},"219":{},"220":{},"222":{},"223":{},"255":{}},"component":{}}],["global",{"_index":388,"title":{},"name":{},"text":{"2":{},"14":{},"36":{},"41":{},"50":{},"72":{},"80":{},"87":{},"103":{},"104":{},"105":{},"106":{},"107":{},"122":{},"133":{},"140":{},"157":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"185":{},"199":{},"206":{},"223":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"251":{}},"component":{}}],["global.keyuser.role.nam",{"_index":3439,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["global.scss",{"_index":3708,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["go",{"_index":178,"title":{"26":{},"61":{},"103":{},"110":{},"159":{},"171":{},"225":{},"237":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"12":{},"13":{},"14":{},"22":{},"26":{},"32":{},"39":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"58":{},"61":{},"68":{},"75":{},"77":{},"80":{},"81":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"103":{},"108":{},"110":{},"117":{},"123":{},"130":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"154":{},"155":{},"159":{},"169":{},"171":{},"186":{},"196":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"220":{},"221":{},"225":{},"235":{},"237":{},"253":{}},"component":{}}],["go.mod",{"_index":2773,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["goal",{"_index":927,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"96":{},"97":{},"99":{},"117":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["gofmt’d",{"_index":1482,"title":{},"name":{},"text":{"26":{},"61":{},"81":{},"110":{},"171":{},"237":{}},"component":{}}],["golang",{"_index":1473,"title":{"26":{},"61":{},"110":{},"171":{},"237":{}},"name":{"26":{},"61":{},"103":{},"110":{},"159":{},"171":{},"225":{},"237":{}},"text":{"26":{},"39":{},"61":{},"75":{},"95":{},"103":{},"110":{},"149":{},"159":{},"171":{},"215":{},"225":{},"237":{}},"component":{}}],["golang:${odsimagetag",{"_index":2770,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["golang:2.x",{"_index":2420,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["golang:3.x",{"_index":2423,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"150":{},"151":{},"155":{},"215":{},"216":{},"217":{},"221":{}},"component":{}}],["golang:4.x",{"_index":3239,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["golang:latest",{"_index":2974,"title":{},"name":{},"text":{"103":{},"159":{},"225":{}},"component":{}}],["golangci",{"_index":2976,"title":{},"name":{},"text":{"103":{},"159":{},"225":{}},"component":{}}],["good",{"_index":1458,"title":{},"name":{},"text":{"25":{},"32":{},"66":{},"68":{},"115":{},"117":{},"177":{},"243":{}},"component":{}}],["googl",{"_index":2244,"title":{},"name":{},"text":{"81":{},"120":{},"183":{},"249":{}},"component":{}}],["govern",{"_index":651,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["gpg",{"_index":2747,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["grab",{"_index":1355,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["gradl",{"_index":1145,"title":{"104":{},"27-4":{},"27-5":{},"27-7":{},"62-4":{},"62-5":{},"62-7":{},"111-4":{},"111-5":{},"111-7":{},"120-3":{},"120-4":{},"172-4":{},"172-5":{},"172-7":{},"183-3":{},"183-4":{},"238-4":{},"238-5":{},"238-7":{},"249-3":{},"249-4":{}},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"100":{},"104":{},"111":{},"120":{},"153":{},"156":{},"161":{},"172":{},"183":{},"189":{},"219":{},"222":{},"227":{},"238":{},"249":{},"255":{}},"component":{}}],["gradle.properti",{"_index":532,"title":{"27-6":{},"62-6":{},"111-6":{},"120-5":{},"172-6":{},"183-5":{},"238-6":{},"249-5":{}},"name":{},"text":{"2":{},"19":{},"27":{},"41":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["gradle/wrapper/gradl",{"_index":1494,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["gradle/wrapper/gradle.properti",{"_index":1496,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["gradlew",{"_index":1151,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"93":{},"100":{},"111":{},"120":{},"147":{},"156":{},"161":{},"172":{},"183":{},"213":{},"222":{},"227":{},"238":{},"249":{}},"component":{}}],["gradlew.bat",{"_index":1493,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["grant",{"_index":429,"title":{"94-4":{},"148-4":{},"214-4":{}},"name":{},"text":{"2":{},"4":{},"20":{},"41":{},"43":{},"56":{},"80":{},"91":{},"94":{},"98":{},"101":{},"133":{},"145":{},"148":{},"154":{},"157":{},"199":{},"211":{},"214":{},"220":{},"223":{}},"component":{}}],["graph",{"_index":2945,"title":{},"name":{},"text":{"101":{},"157":{},"223":{},"240":{}},"component":{}}],["graphic",{"_index":2254,"title":{},"name":{},"text":{"81":{}},"component":{}}],["great",{"_index":3234,"title":{"182":{},"248":{}},"name":{},"text":{"150":{},"174":{},"182":{},"216":{},"240":{},"248":{}},"component":{}}],["greenballs:1.15",{"_index":700,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["greeter",{"_index":1542,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["greeter.t",{"_index":1539,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["grep",{"_index":1358,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["groovi",{"_index":688,"title":{"6-3":{},"45-3":{}},"name":{},"text":{"14":{},"50":{},"81":{},"97":{},"120":{},"152":{},"183":{},"218":{},"249":{}},"component":{}}],["group",{"_index":111,"title":{"2-25":{},"2-27":{},"41-25":{},"41-27":{},"78-4":{},"101-4":{},"101-6":{},"101-7":{},"131-4":{},"157-7":{},"157-9":{},"157-10":{},"197-4":{},"223-7":{},"223-9":{},"223-10":{}},"name":{},"text":{"2":{},"4":{},"14":{},"22":{},"41":{},"43":{},"50":{},"58":{},"78":{},"80":{},"91":{},"94":{},"96":{},"98":{},"99":{},"101":{},"126":{},"131":{},"133":{},"145":{},"148":{},"151":{},"153":{},"154":{},"155":{},"157":{},"188":{},"189":{},"192":{},"197":{},"199":{},"211":{},"214":{},"217":{},"219":{},"220":{},"221":{},"223":{},"254":{},"255":{},"258":{}},"component":{}}],["group.allow",{"_index":2941,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["group.key=@odata.typ",{"_index":2946,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["group.object",{"_index":2948,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["group.value=#microsoft.graph.group",{"_index":2947,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["groupid",{"_index":1034,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["groups=admingroup",{"_index":2913,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["groups=opendevstack",{"_index":2942,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["grow",{"_index":3131,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["guarante",{"_index":2232,"title":{},"name":{},"text":{"81":{}},"component":{}}],["guard",{"_index":456,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["gubergren",{"_index":822,"title":{},"name":{},"text":{"10":{}},"component":{}}],["guess",{"_index":3308,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["gui",{"_index":667,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"158":{},"224":{}},"component":{}}],["guid",{"_index":158,"title":{"20":{},"56":{},"80":{},"81":{},"94":{},"95":{},"101":{},"133":{},"134":{},"148":{},"149":{},"150":{},"157":{},"199":{},"200":{},"214":{},"215":{},"216":{},"223":{}},"name":{},"text":{"2":{},"24":{},"36":{},"41":{},"60":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"98":{},"108":{},"122":{},"123":{},"129":{},"130":{},"131":{},"134":{},"135":{},"136":{},"137":{},"142":{},"146":{},"150":{},"154":{},"167":{},"169":{},"185":{},"186":{},"195":{},"196":{},"197":{},"200":{},"201":{},"202":{},"203":{},"208":{},"212":{},"216":{},"220":{},"233":{},"235":{},"251":{},"253":{}},"component":{}}],["guidanc",{"_index":3521,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["guidelin",{"_index":3735,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["gunicorn",{"_index":3031,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["gxp",{"_index":3191,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["h",{"_index":885,"title":{},"name":{},"text":{"12":{},"22":{},"58":{}},"component":{}}],["half",{"_index":2287,"title":{},"name":{},"text":{"83":{}},"component":{}}],["hand",{"_index":1784,"title":{},"name":{},"text":{"34":{},"70":{},"98":{},"119":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["handl",{"_index":245,"title":{"101-9":{},"157-12":{},"223-12":{}},"name":{},"text":{"2":{},"41":{},"77":{},"88":{},"99":{},"101":{},"109":{},"130":{},"141":{},"151":{},"155":{},"157":{},"170":{},"196":{},"207":{},"217":{},"221":{},"223":{},"236":{}},"component":{}}],["happen",{"_index":596,"title":{"22-6":{},"58-6":{}},"name":{},"text":{"4":{},"14":{},"17":{},"19":{},"22":{},"43":{},"50":{},"53":{},"55":{},"58":{},"83":{},"88":{},"91":{},"96":{},"98":{},"100":{},"141":{},"145":{},"151":{},"153":{},"154":{},"156":{},"174":{},"207":{},"211":{},"217":{},"219":{},"220":{},"222":{},"240":{}},"component":{}}],["hard",{"_index":1782,"title":{},"name":{},"text":{"34":{},"70":{},"80":{},"119":{},"133":{},"199":{}},"component":{}}],["hardcod",{"_index":2728,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["harder",{"_index":3160,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["harmon",{"_index":655,"title":{},"name":{},"text":{"5":{},"44":{},"83":{}},"component":{}}],["hash",{"_index":3394,"title":{},"name":{},"text":{"153":{},"174":{},"219":{},"240":{}},"component":{}}],["hashicorp",{"_index":193,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["have",{"_index":1077,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"96":{},"128":{},"148":{},"151":{},"154":{},"194":{},"214":{},"217":{},"220":{}},"component":{}}],["have’v",{"_index":2963,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["havingvalu",{"_index":1185,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["header",{"_index":846,"title":{},"name":{},"text":{"11":{},"100":{},"156":{},"222":{}},"component":{}}],["headers\").run_filt",{"_index":3019,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["headers.txt",{"_index":1349,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["health",{"_index":2305,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["heart",{"_index":1624,"title":{"32-5":{},"68-5":{},"117-5":{}},"name":{},"text":{},"component":{}}],["heavi",{"_index":1531,"title":{},"name":{},"text":{"28":{},"65":{},"95":{},"114":{},"149":{},"176":{},"215":{},"242":{}},"component":{}}],["held",{"_index":3730,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["hello",{"_index":2545,"title":{},"name":{},"text":{"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["hello_dag.pi",{"_index":1438,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["hello_kubernetes_operator.pi",{"_index":1439,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["hello_python_dag.pi",{"_index":1440,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["helloworld.vu",{"_index":1913,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["helm",{"_index":3129,"title":{"127":{},"193":{},"150-5":{},"151-26":{},"151-29":{},"216-5":{},"217-26":{},"217-29":{}},"name":{"127":{},"193":{}},"text":{"127":{},"136":{},"138":{},"142":{},"146":{},"150":{},"151":{},"153":{},"174":{},"189":{},"193":{},"202":{},"204":{},"208":{},"212":{},"216":{},"217":{},"219":{},"240":{},"255":{}},"component":{}}],["helm.sh/chart",{"_index":3362,"title":{"153-12":{},"219-12":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["helm_diff_ignore_unknown_flags=tru",{"_index":3310,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmadditionalflag",{"_index":3319,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmdefaultflag",{"_index":3321,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmdiff",{"_index":3322,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmenvbasedvaluesfil",{"_index":3323,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmignor",{"_index":3763,"title":{},"name":{},"text":{"240":{}},"component":{}}],["helmprivatekeycredentialsid",{"_index":3333,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmreleasenam",{"_index":3337,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmvalu",{"_index":3339,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmvaluefil",{"_index":3325,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmvaluesfil",{"_index":3341,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["help",{"_index":151,"title":{},"name":{},"text":{"2":{},"4":{},"19":{},"38":{},"39":{},"41":{},"43":{},"55":{},"74":{},"75":{},"91":{},"100":{},"108":{},"123":{},"145":{},"156":{},"157":{},"169":{},"186":{},"211":{},"222":{},"223":{},"235":{},"253":{}},"component":{}}],["helper",{"_index":1693,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"174":{},"240":{}},"component":{}}],["henc",{"_index":3790,"title":{},"name":{},"text":{"240":{}},"component":{}}],["here",{"_index":199,"title":{},"name":{},"text":{"2":{},"20":{},"22":{},"25":{},"36":{},"38":{},"41":{},"56":{},"58":{},"66":{},"72":{},"74":{},"98":{},"101":{},"114":{},"115":{},"122":{},"126":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"174":{},"176":{},"177":{},"185":{},"189":{},"192":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"240":{},"242":{},"243":{},"251":{},"255":{},"258":{}},"component":{}}],["here’",{"_index":2365,"title":{},"name":{},"text":{"93":{},"95":{},"147":{},"149":{},"213":{},"215":{}},"component":{}}],["hibern",{"_index":305,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["high",{"_index":1750,"title":{"136-3":{},"202-3":{}},"name":{},"text":{"32":{},"68":{},"96":{},"117":{},"128":{},"151":{},"174":{},"185":{},"194":{},"217":{},"240":{},"251":{}},"component":{}}],["higher",{"_index":2562,"title":{},"name":{},"text":{"96":{},"151":{},"153":{},"157":{},"167":{},"189":{},"217":{},"219":{},"223":{},"233":{},"255":{}},"component":{}}],["highli",{"_index":1516,"title":{},"name":{},"text":{"27":{},"62":{},"80":{},"108":{},"111":{},"133":{},"169":{},"172":{},"199":{},"235":{},"238":{}},"component":{}}],["highlight",{"_index":3418,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["histogram.pi",{"_index":3631,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["histor",{"_index":2371,"title":{},"name":{},"text":{"93":{},"98":{},"147":{},"154":{},"213":{},"220":{}},"component":{}}],["histori",{"_index":2112,"title":{},"name":{},"text":{"79":{},"96":{},"132":{},"151":{},"198":{},"217":{}},"component":{}}],["history.j",{"_index":1861,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["hit",{"_index":393,"title":{},"name":{},"text":{"2":{},"41":{},"154":{},"220":{}},"component":{}}],["hoc",{"_index":3247,"title":{},"name":{},"text":{"150":{},"153":{},"216":{},"219":{}},"component":{}}],["hold",{"_index":2067,"title":{},"name":{},"text":{"77":{},"130":{},"153":{},"181":{},"196":{},"219":{},"247":{}},"component":{}}],["home",{"_index":1827,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"120":{},"122":{},"161":{},"181":{},"183":{},"185":{},"227":{},"234":{},"247":{},"249":{},"251":{}},"component":{}}],["home.module.t",{"_index":3702,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.html",{"_index":3703,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.scss",{"_index":3704,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.spec.t",{"_index":3705,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.t",{"_index":3706,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.vu",{"_index":1922,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["home/jenkins/.cache/cypress/${cypressvers",{"_index":3669,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/jenkins/.cache/cypress/${cypressversion}/cypress/cypress",{"_index":3674,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/jenkins/.cache/cypress/version/cypress",{"_index":3662,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/jenkins/cypress/cypress",{"_index":3666,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/us",{"_index":3467,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["homecontroller.scala",{"_index":3046,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["homecontrollerspec.scala",{"_index":3055,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["hook",{"_index":1486,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"180":{},"246":{}},"component":{}}],["host",{"_index":20,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"1":{},"2":{},"8":{},"12":{},"14":{},"21":{},"24":{},"32":{},"40":{},"41":{},"47":{},"50":{},"57":{},"60":{},"68":{},"76":{},"77":{},"79":{},"88":{},"93":{},"95":{},"96":{},"102":{},"109":{},"117":{},"123":{},"129":{},"132":{},"141":{},"147":{},"149":{},"151":{},"158":{},"170":{},"172":{},"186":{},"195":{},"198":{},"207":{},"213":{},"215":{},"217":{},"224":{},"236":{},"238":{},"253":{}},"component":{}}],["hot",{"_index":1929,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["hotfix",{"_index":965,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["howto",{"_index":1072,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["html",{"_index":1168,"title":{},"name":{},"text":{"19":{},"36":{},"55":{},"72":{},"82":{},"100":{},"122":{},"135":{},"151":{},"156":{},"185":{},"201":{},"217":{},"222":{},"251":{}},"component":{}}],["http",{"_index":827,"title":{"11":{},"30":{},"64":{}},"name":{},"text":{"11":{},"12":{},"19":{},"20":{},"30":{},"32":{},"55":{},"56":{},"64":{},"68":{},"96":{},"99":{},"100":{},"101":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"117":{},"151":{},"154":{},"155":{},"156":{},"157":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"174":{},"217":{},"220":{},"221":{},"222":{},"223":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"240":{}},"component":{}}],["http/tcp/udp",{"_index":2990,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["http://192.168.56.1:8088",{"_index":369,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:4440",{"_index":368,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:7990",{"_index":367,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8080",{"_index":364,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8090",{"_index":366,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8095/crowd",{"_index":310,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8095/crowd/consol",{"_index":290,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://buildserver/jenkins/job/myjobname/123",{"_index":1002,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["http://dl.bintray.com/sbt/sbt",{"_index":494,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://localhost:8080",{"_index":541,"title":{},"name":{},"text":{"2":{},"19":{},"37":{},"41":{},"55":{},"73":{},"100":{},"113":{},"156":{},"175":{},"222":{},"241":{}},"component":{}}],["http://localhost:8100",{"_index":1848,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["http://localhost:9000",{"_index":2368,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["http://nexu",{"_index":462,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http_code",{"_index":2845,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["http_proxi",{"_index":757,"title":{},"name":{},"text":{"7":{},"46":{},"85":{},"138":{},"204":{}},"component":{}}],["http_resp_cod",{"_index":2853,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["http_resp_code=$(curl",{"_index":2840,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["http_resp_code=${http_resp_cod",{"_index":2852,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["https://$bitbucket_host/scm/$bitbucket_project",{"_index":3205,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["https://api.example.com",{"_index":2701,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["https://cd_user@bitbucket.domain.com/scm",{"_index":2188,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["https://centos.pkgs.org",{"_index":3476,"title":{},"name":{},"text":{"161":{}},"component":{}}],["https://cloud.cypress.io",{"_index":3677,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://dl.bintray.com/typesafe/ivi",{"_index":499,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://docs.cypress.io/guides/cloud/introduct",{"_index":3684,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://docs.cypress.io/guides/get",{"_index":3655,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://docs.openshift.com/contain",{"_index":1974,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"150":{},"207":{},"216":{}},"component":{}}],["https://docs.sonarqube.org/display/plug/java+plugin+and+bytecod",{"_index":2350,"title":{},"name":{},"text":{"93":{}},"component":{}}],["https://docs.sonarqube.org/display/sonar/analysis+paramet",{"_index":2349,"title":{},"name":{},"text":{"93":{}},"component":{}}],["https://docs.sonarsource.com/sonarqube/9.9/analyz",{"_index":3220,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["https://domain.com",{"_index":1785,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["https://download.cypress.io/desktop/${cypressversion}?platform=linux&arch=x64",{"_index":3665,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://en",{"_index":1716,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["https://example.com",{"_index":3513,"title":{},"name":{},"text":{"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"184":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"250":{}},"component":{}}],["https://github.com/acme/.git",{"_index":2236,"title":{},"name":{},"text":{"81":{}},"component":{}}],["https://github.com/bix",{"_index":2134,"title":{},"name":{},"text":{"79":{},"80":{},"100":{},"132":{},"133":{},"156":{},"198":{},"199":{},"222":{}},"component":{}}],["https://github.com/geerlingguy/ans",{"_index":2026,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["https://github.com/hashicorp/vagrant/issues/9143#issuecom",{"_index":594,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["https://github.com/jenkinsci/kubernet",{"_index":1983,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["https://github.com/mi",{"_index":2638,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["https://github.com/opendevstack/.git",{"_index":2140,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["https://github.com/opendevstack/od",{"_index":268,"title":{},"name":{},"text":{"2":{},"19":{},"24":{},"41":{},"55":{},"80":{},"94":{},"98":{},"100":{},"108":{},"124":{},"125":{},"127":{},"130":{},"133":{},"146":{},"148":{},"150":{},"154":{},"156":{},"169":{},"190":{},"191":{},"193":{},"196":{},"199":{},"212":{},"214":{},"216":{},"220":{},"222":{},"235":{},"256":{},"257":{}},"component":{}}],["https://github.com/opendevstack/tailor#templ",{"_index":2746,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["https://github.com/opendevstack/tailor/wiki/migr",{"_index":3138,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["https://github.com/watchexec/cargo",{"_index":3589,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["https://help.sonatype.com/repomanager3/rest",{"_index":2614,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["https://hub.docker.com/_/sonarqub",{"_index":3215,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["https://ionicframework.com",{"_index":3715,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["https://jcenter.bintray.com",{"_index":491,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://jenkins.io/doc/book/pipeline/syntax/#script",{"_index":1124,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["https://jupyter.org",{"_index":3617,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["https://maven.atlassian.com/content/repositories/atlassian",{"_index":489,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://openresty.org",{"_index":3510,"title":{},"name":{},"text":{"170":{},"236":{}},"component":{}}],["https://prettier.io/docs/en/install.html",{"_index":3654,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["https://prov",{"_index":526,"title":{},"name":{},"text":{"2":{},"5":{},"21":{},"41":{},"44":{},"57":{},"83":{},"101":{},"157":{},"223":{}},"component":{}}],["https://pypi.org",{"_index":501,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://raw.githubusercontent.com/opendevstack/od",{"_index":2047,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["https://registry.npmjs.org",{"_index":488,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://repo.scala",{"_index":496,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://sh.rustup.r",{"_index":3583,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["https://sonarqub",{"_index":371,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://start.spring.io",{"_index":3515,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["https://stedolan.github.io/jq",{"_index":2041,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["https://training.openshift.svc",{"_index":1744,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["https://webhook",{"_index":1978,"title":{},"name":{},"text":{"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["https://www.mongodb.com",{"_index":3733,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["https://www.npmjs.com/package/eslint#instal",{"_index":3651,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://www.opendevstack.org/od",{"_index":2353,"title":{},"name":{},"text":{"93":{},"142":{},"146":{},"147":{},"208":{},"212":{},"213":{}},"component":{}}],["https://www.relaxdiego.com/2018/02/jenkin",{"_index":1116,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["https://www.rstudio.com",{"_index":3620,"title":{},"name":{},"text":{"179":{},"245":{}},"component":{}}],["https://www.sonarlint.org/intellij/howto.html",{"_index":2364,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["huge",{"_index":2443,"title":{},"name":{},"text":{"95":{},"127":{},"128":{},"149":{},"193":{},"194":{},"215":{}},"component":{}}],["hugo",{"_index":935,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["hugowschneid",{"_index":1635,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["hyper",{"_index":3602,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["i.",{"_index":1509,"title":{},"name":{},"text":{"27":{},"62":{},"81":{},"111":{},"172":{},"174":{},"180":{},"238":{},"240":{},"246":{}},"component":{}}],["icon",{"_index":1888,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["icon.png",{"_index":1899,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["icontext",{"_index":2416,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["id",{"_index":143,"title":{"2-67":{},"41-67":{},"93-3":{},"101-5":{},"101-7":{},"147-3":{},"157-8":{},"157-10":{},"213-3":{},"223-8":{},"223-10":{}},"name":{},"text":{"2":{},"14":{},"20":{},"22":{},"32":{},"38":{},"41":{},"50":{},"56":{},"58":{},"68":{},"74":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"101":{},"112":{},"117":{},"126":{},"147":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"173":{},"181":{},"189":{},"192":{},"213":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"239":{},"240":{},"247":{},"255":{},"258":{}},"component":{}}],["id=od",{"_index":1226,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["id_rsa_bitbucket.pub",{"_index":407,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["idea",{"_index":691,"title":{"22-1":{},"58-1":{},"102-1":{}},"name":{},"text":{"6":{},"22":{},"45":{},"58":{},"102":{}},"component":{}}],["ideal",{"_index":1534,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"176":{},"242":{}},"component":{}}],["idempot",{"_index":2070,"title":{},"name":{},"text":{"77":{},"130":{},"142":{},"196":{},"208":{}},"component":{}}],["ident",{"_index":49,"title":{},"name":{},"text":{"1":{},"35":{},"40":{},"71":{},"76":{},"78":{},"83":{},"101":{},"109":{},"121":{},"129":{},"131":{},"157":{},"170":{},"184":{},"195":{},"197":{},"223":{},"236":{},"250":{}},"component":{}}],["identifi",{"_index":943,"title":{},"name":{},"text":{"14":{},"50":{},"83":{},"94":{},"96":{},"98":{},"99":{},"126":{},"136":{},"148":{},"151":{},"153":{},"154":{},"155":{},"181":{},"189":{},"192":{},"202":{},"214":{},"217":{},"219":{},"220":{},"221":{},"247":{},"255":{},"258":{}},"component":{}}],["idm=tru",{"_index":2957,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["idmanag",{"_index":1221,"title":{},"name":{},"text":{"20":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["idmanager.dis",{"_index":2955,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["idmanager.group.opendevstack",{"_index":1307,"title":{},"name":{},"text":{"22":{},"58":{},"157":{},"223":{}},"component":{}}],["idmanager.realm=${spring.security.oauth2.client.registration.azure.cli",{"_index":2954,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["idmanager.realm=provis",{"_index":1223,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["idmanager.url=http://192.168.56.32:8080",{"_index":1222,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["idmanager.url=https://login.microsoftonline.com",{"_index":2953,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["id}.git",{"_index":2649,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["ie",{"_index":1502,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["ignor",{"_index":599,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"151":{},"211":{},"217":{},"240":{}},"component":{}}],["ii",{"_index":1579,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["illustr",{"_index":1410,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["imag",{"_index":139,"title":{"10":{},"12":{},"25":{},"66":{},"115":{},"128":{},"177":{},"194":{},"243":{},"2-63":{},"2-68":{},"4-6":{},"13-3":{},"41-63":{},"41-68":{},"43-6":{},"49-3":{},"80-8":{},"80-13":{},"80-15":{},"84-2":{},"84-3":{},"84-4":{},"91-6":{},"92-1":{},"94-2":{},"94-4":{},"95-2":{},"95-6":{},"95-8":{},"95-9":{},"108-2":{},"128-1":{},"128-2":{},"128-3":{},"128-4":{},"128-5":{},"133-8":{},"133-13":{},"133-15":{},"145-6":{},"148-2":{},"148-4":{},"149-2":{},"149-6":{},"149-8":{},"149-9":{},"150-1":{},"169-2":{},"194-1":{},"194-2":{},"194-3":{},"194-4":{},"194-5":{},"199-8":{},"199-13":{},"199-15":{},"211-6":{},"214-2":{},"214-4":{},"215-2":{},"215-6":{},"215-8":{},"215-9":{},"216-1":{},"235-2":{}},"name":{"128":{},"194":{}},"text":{"2":{},"4":{},"5":{},"6":{},"12":{},"14":{},"18":{},"21":{},"24":{},"26":{},"27":{},"31":{},"32":{},"33":{},"39":{},"41":{},"43":{},"44":{},"45":{},"50":{},"54":{},"57":{},"60":{},"61":{},"62":{},"67":{},"68":{},"69":{},"75":{},"77":{},"79":{},"80":{},"83":{},"84":{},"85":{},"86":{},"91":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"113":{},"116":{},"117":{},"118":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"138":{},"139":{},"142":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"175":{},"178":{},"179":{},"189":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{},"208":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"241":{},"244":{},"245":{},"255":{}},"component":{}}],["image.openshift.io/v1",{"_index":3175,"title":{},"name":{},"text":{"133":{},"199":{}},"component":{}}],["imagelabel",{"_index":1103,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"96":{},"151":{},"217":{}},"component":{}}],["imagenamespace=exampl",{"_index":3314,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagenamespace=play",{"_index":3318,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagepromotionsequ",{"_index":2469,"title":{},"name":{},"text":{"96":{},"150":{},"216":{}},"component":{}}],["imagepullback",{"_index":585,"title":{"4-6":{},"43-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{},"component":{}}],["imagepullersecret",{"_index":3307,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagepullpolici",{"_index":2403,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["imageref",{"_index":3279,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["images/airflow",{"_index":1415,"title":{},"name":{},"text":{"24":{}},"component":{}}],["images/nginx",{"_index":870,"title":{},"name":{},"text":{"12":{}},"component":{}}],["images/openresti",{"_index":832,"title":{},"name":{},"text":{"11":{}},"component":{}}],["images\\nginx",{"_index":555,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["imagestream",{"_index":742,"title":{},"name":{},"text":{"6":{},"8":{},"39":{},"45":{},"75":{},"80":{},"96":{},"99":{},"100":{},"128":{},"133":{},"150":{},"151":{},"155":{},"156":{},"194":{},"199":{},"216":{},"217":{},"221":{},"222":{}},"component":{}}],["imagestreamtag",{"_index":2194,"title":{},"name":{},"text":{"80":{},"95":{},"96":{},"99":{},"108":{},"133":{},"149":{},"150":{},"151":{},"155":{},"169":{},"199":{},"215":{},"216":{},"217":{},"221":{},"235":{}},"component":{}}],["imagetag",{"_index":2569,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["imagetag=deadbeef69cafebab",{"_index":3315,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagetrigg",{"_index":2603,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["imagin",{"_index":2894,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["img",{"_index":1567,"title":{},"name":{},"text":{"29":{},"38":{},"63":{},"74":{}},"component":{}}],["immedi",{"_index":3193,"title":{},"name":{},"text":{"136":{},"158":{},"202":{},"224":{}},"component":{}}],["impact",{"_index":1398,"title":{},"name":{},"text":{"23":{},"59":{},"98":{},"128":{},"154":{},"194":{},"220":{}},"component":{}}],["implement",{"_index":835,"title":{"19-4":{},"55-4":{},"100-5":{},"156-5":{},"222-5":{}},"name":{},"text":{"11":{},"14":{},"19":{},"20":{},"27":{},"30":{},"32":{},"36":{},"37":{},"50":{},"55":{},"56":{},"62":{},"64":{},"68":{},"72":{},"73":{},"81":{},"83":{},"96":{},"97":{},"100":{},"101":{},"108":{},"109":{},"111":{},"117":{},"122":{},"136":{},"151":{},"152":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"185":{},"202":{},"217":{},"218":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"251":{}},"component":{}}],["impli",{"_index":3407,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["implic",{"_index":851,"title":{},"name":{},"text":{"11":{},"32":{},"68":{},"117":{}},"component":{}}],["implicit",{"_index":2298,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["import",{"_index":165,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"47":{},"68":{},"79":{},"81":{},"88":{},"96":{},"109":{},"117":{},"128":{},"132":{},"141":{},"150":{},"151":{},"154":{},"170":{},"181":{},"194":{},"198":{},"207":{},"216":{},"217":{},"220":{},"236":{},"247":{}},"component":{}}],["impos",{"_index":960,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["improv",{"_index":2312,"title":{},"name":{},"text":{"83":{},"136":{},"174":{},"202":{},"240":{}},"component":{}}],["includ",{"_index":15,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"16":{},"20":{},"22":{},"27":{},"28":{},"32":{},"40":{},"41":{},"45":{},"50":{},"52":{},"56":{},"58":{},"62":{},"65":{},"68":{},"87":{},"95":{},"96":{},"98":{},"101":{},"107":{},"111":{},"117":{},"120":{},"121":{},"123":{},"126":{},"128":{},"136":{},"140":{},"149":{},"151":{},"153":{},"154":{},"157":{},"168":{},"172":{},"173":{},"183":{},"184":{},"186":{},"187":{},"188":{},"189":{},"192":{},"194":{},"202":{},"206":{},"215":{},"217":{},"219":{},"220":{},"223":{},"227":{},"234":{},"238":{},"239":{},"249":{},"250":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["include::partial$secret",{"_index":3511,"title":{},"name":{},"text":{"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{}},"component":{}}],["include::partials$secret",{"_index":3755,"title":{},"name":{},"text":{"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["inclus",{"_index":3120,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["incom",{"_index":3014,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["incomplet",{"_index":2871,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["inconsist",{"_index":1385,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["incorrect",{"_index":2743,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["increas",{"_index":2587,"title":{},"name":{},"text":{"96":{},"112":{},"151":{},"154":{},"173":{},"180":{},"217":{},"220":{},"239":{},"246":{}},"component":{}}],["increment",{"_index":382,"title":{},"name":{},"text":{"2":{},"41":{},"83":{},"136":{},"202":{}},"component":{}}],["inde",{"_index":3796,"title":{},"name":{},"text":{"240":{}},"component":{}}],["independ",{"_index":2658,"title":{"178-5":{},"244-5":{}},"name":{},"text":{"98":{},"126":{},"154":{},"178":{},"192":{},"220":{},"244":{},"258":{}},"component":{}}],["index",{"_index":631,"title":{},"name":{"5":{},"6":{},"9":{},"10":{},"13":{},"14":{},"22":{},"39":{},"44":{},"45":{},"48":{},"49":{},"50":{},"58":{},"75":{},"83":{},"86":{},"89":{},"93":{},"97":{},"102":{},"123":{},"136":{},"139":{},"143":{},"147":{},"152":{},"158":{},"186":{},"202":{},"205":{},"209":{},"213":{},"218":{},"224":{},"253":{}},"text":{"28":{},"65":{},"79":{},"132":{},"198":{}},"component":{}}],["index.html",{"_index":1807,"title":{},"name":{},"text":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["index.j",{"_index":1762,"title":{},"name":{},"text":{"34":{},"37":{},"38":{},"70":{},"73":{},"74":{},"119":{},"181":{}},"component":{}}],["index.scala.html",{"_index":3047,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["index.t",{"_index":1540,"title":{},"name":{},"text":{"28":{},"34":{},"65":{},"70":{},"114":{},"119":{},"176":{},"181":{},"242":{},"247":{}},"component":{}}],["indic",{"_index":3287,"title":{},"name":{},"text":{"151":{},"153":{},"172":{},"181":{},"217":{},"219":{},"238":{},"247":{}},"component":{}}],["individu",{"_index":25,"title":{},"name":{},"text":{"1":{},"14":{},"40":{},"50":{},"76":{},"96":{},"129":{},"137":{},"142":{},"146":{},"180":{},"195":{},"203":{},"208":{},"212":{},"246":{}},"component":{}}],["industri",{"_index":1630,"title":{"32":{},"68":{},"117":{}},"name":{},"text":{},"component":{}}],["inf",{"_index":3416,"title":{"187":{},"188":{},"252":{},"254":{}},"name":{"160":{},"187":{},"188":{},"226":{},"252":{},"254":{}},"text":{"154":{},"220":{}},"component":{}}],["influenc",{"_index":991,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["info",{"_index":1241,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["inform",{"_index":357,"title":{"80-23":{},"133-23":{},"199-23":{}},"name":{},"text":{"2":{},"21":{},"32":{},"41":{},"57":{},"68":{},"77":{},"93":{},"94":{},"96":{},"98":{},"102":{},"108":{},"117":{},"127":{},"130":{},"147":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"158":{},"166":{},"167":{},"169":{},"173":{},"181":{},"189":{},"193":{},"196":{},"213":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"224":{},"232":{},"233":{},"235":{},"239":{},"247":{},"255":{}},"component":{}}],["infra",{"_index":3413,"title":{"154-5":{},"220-5":{}},"name":{},"text":{"153":{},"154":{},"189":{},"219":{},"220":{},"255":{}},"component":{}}],["infrastructur",{"_index":2,"title":{"1":{},"40":{},"76":{},"129":{},"187":{},"188":{},"195":{},"252":{},"254":{},"2-11":{},"41-11":{},"77-6":{},"186-7":{},"253-7":{}},"name":{"1":{},"40":{},"76":{},"129":{},"195":{}},"text":{"1":{},"2":{},"5":{},"27":{},"32":{},"40":{},"41":{},"44":{},"62":{},"68":{},"76":{},"83":{},"96":{},"111":{},"117":{},"129":{},"151":{},"154":{},"157":{},"172":{},"186":{},"195":{},"217":{},"220":{},"223":{},"238":{},"253":{}},"component":{}}],["infrastrucur",{"_index":761,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["inherit",{"_index":1320,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["init",{"_index":687,"title":{"6-3":{},"45-3":{},"87-2":{},"140-2":{},"206-2":{}},"name":{},"text":{"26":{},"27":{},"32":{},"61":{},"62":{},"68":{},"77":{},"99":{},"110":{},"111":{},"114":{},"117":{},"155":{},"171":{},"176":{},"221":{},"237":{},"242":{}},"component":{}}],["init.sh",{"_index":1487,"title":{},"name":{},"text":{"27":{},"29":{},"31":{},"34":{},"39":{},"62":{},"63":{},"70":{},"75":{},"111":{},"119":{}},"component":{}}],["initi",{"_index":663,"title":{},"name":{},"text":{"5":{},"6":{},"29":{},"32":{},"44":{},"45":{},"63":{},"68":{},"77":{},"83":{},"87":{},"96":{},"112":{},"117":{},"130":{},"136":{},"140":{},"151":{},"173":{},"180":{},"196":{},"202":{},"206":{},"217":{},"239":{},"246":{}},"component":{}}],["initialdelaysecond",{"_index":2606,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["inject",{"_index":758,"title":{},"name":{},"text":{"7":{},"19":{},"31":{},"46":{},"55":{},"100":{},"107":{},"156":{},"168":{},"187":{},"188":{},"222":{},"234":{},"252":{},"254":{}},"component":{}}],["inlcud",{"_index":212,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["input",{"_index":360,"title":{},"name":{},"text":{"2":{},"22":{},"32":{},"41":{},"58":{},"68":{},"98":{},"100":{},"101":{},"117":{},"154":{},"156":{},"157":{},"220":{},"222":{},"223":{}},"component":{}}],["insatl",{"_index":1934,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["insecur",{"_index":2841,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["insert",{"_index":72,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["insid",{"_index":553,"title":{},"name":{},"text":{"2":{},"12":{},"14":{},"20":{},"24":{},"34":{},"41":{},"50":{},"56":{},"60":{},"70":{},"78":{},"92":{},"96":{},"98":{},"99":{},"101":{},"109":{},"119":{},"120":{},"126":{},"131":{},"146":{},"151":{},"154":{},"155":{},"157":{},"170":{},"183":{},"192":{},"197":{},"212":{},"217":{},"220":{},"221":{},"223":{},"236":{},"249":{},"258":{}},"component":{}}],["insight",{"_index":3280,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["insofar",{"_index":2402,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["inspec",{"_index":3718,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["inspecif",{"_index":3157,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["inspect",{"_index":892,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"213":{}},"component":{}}],["instal",{"_index":10,"title":{"2-16":{},"41-16":{},"80-2":{},"80-19":{},"127-3":{},"133-2":{},"133-19":{},"161-4":{},"181-6":{},"193-3":{},"199-2":{},"199-19":{},"227-4":{},"234-4":{},"247-6":{}},"name":{"2":{},"41":{},"77":{},"130":{},"196":{}},"text":{"1":{},"2":{},"4":{},"13":{},"19":{},"20":{},"24":{},"27":{},"28":{},"29":{},"31":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"40":{},"41":{},"43":{},"49":{},"55":{},"56":{},"60":{},"62":{},"63":{},"65":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"85":{},"91":{},"92":{},"94":{},"95":{},"98":{},"100":{},"101":{},"105":{},"109":{},"111":{},"112":{},"114":{},"116":{},"117":{},"119":{},"120":{},"121":{},"122":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"137":{},"138":{},"142":{},"145":{},"146":{},"148":{},"149":{},"151":{},"154":{},"156":{},"157":{},"161":{},"162":{},"163":{},"164":{},"165":{},"170":{},"172":{},"173":{},"174":{},"176":{},"178":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{},"208":{},"211":{},"212":{},"214":{},"215":{},"217":{},"220":{},"222":{},"223":{},"227":{},"228":{},"229":{},"230":{},"231":{},"234":{},"236":{},"238":{},"239":{},"240":{},"242":{},"244":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"254":{}},"component":{}}],["installation.config.t",{"_index":3814,"title":{},"name":{},"text":{"247":{}},"component":{}}],["installation.json",{"_index":3645,"title":{},"name":{},"text":{"181":{}},"component":{}}],["installation.spec.cy.t",{"_index":3811,"title":{},"name":{},"text":{"247":{}},"component":{}}],["installation.spec.t",{"_index":3642,"title":{},"name":{},"text":{"181":{}},"component":{}}],["installation/upd",{"_index":3136,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["instanc",{"_index":391,"title":{"13-4":{},"49-4":{},"80-16":{},"133-16":{},"199-16":{}},"name":{},"text":{"2":{},"6":{},"7":{},"8":{},"13":{},"21":{},"24":{},"34":{},"41":{},"45":{},"46":{},"47":{},"49":{},"57":{},"60":{},"67":{},"69":{},"70":{},"77":{},"79":{},"80":{},"81":{},"88":{},"92":{},"93":{},"95":{},"96":{},"102":{},"116":{},"118":{},"119":{},"123":{},"128":{},"130":{},"132":{},"133":{},"136":{},"141":{},"142":{},"146":{},"147":{},"149":{},"151":{},"153":{},"158":{},"178":{},"179":{},"185":{},"186":{},"189":{},"194":{},"196":{},"198":{},"199":{},"202":{},"207":{},"208":{},"212":{},"213":{},"215":{},"217":{},"219":{},"224":{},"244":{},"245":{},"251":{},"253":{},"255":{}},"component":{}}],["instanti",{"_index":3188,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["instead",{"_index":517,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"76":{},"78":{},"80":{},"83":{},"94":{},"95":{},"96":{},"98":{},"100":{},"126":{},"127":{},"129":{},"131":{},"133":{},"136":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"172":{},"174":{},"181":{},"192":{},"193":{},"195":{},"197":{},"199":{},"202":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"238":{},"240":{},"247":{},"258":{}},"component":{}}],["instruct",{"_index":253,"title":{},"name":{},"text":{"2":{},"13":{},"41":{},"49":{},"77":{},"79":{},"80":{},"98":{},"101":{},"128":{},"130":{},"132":{},"133":{},"154":{},"157":{},"172":{},"181":{},"182":{},"194":{},"196":{},"198":{},"199":{},"220":{},"223":{},"238":{},"247":{},"248":{}},"component":{}}],["int",{"_index":2538,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["integ",{"_index":3305,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["integr",{"_index":104,"title":{"2-21":{},"5-5":{},"22-2":{},"27-9":{},"41-21":{},"44-5":{},"58-2":{},"62-9":{},"111-9":{},"172-9":{},"238-9":{}},"name":{},"text":{"2":{},"5":{},"12":{},"22":{},"24":{},"27":{},"29":{},"30":{},"32":{},"34":{},"39":{},"41":{},"44":{},"58":{},"60":{},"62":{},"63":{},"64":{},"68":{},"70":{},"75":{},"80":{},"83":{},"93":{},"96":{},"100":{},"109":{},"111":{},"112":{},"117":{},"119":{},"120":{},"123":{},"127":{},"133":{},"136":{},"147":{},"151":{},"153":{},"156":{},"160":{},"170":{},"172":{},"173":{},"174":{},"181":{},"183":{},"186":{},"187":{},"188":{},"189":{},"193":{},"199":{},"202":{},"213":{},"217":{},"219":{},"222":{},"226":{},"236":{},"238":{},"239":{},"240":{},"247":{},"249":{},"252":{},"253":{},"254":{},"255":{}},"component":{}}],["integration.config.t",{"_index":3815,"title":{},"name":{},"text":{"247":{}},"component":{}}],["integration.json",{"_index":3646,"title":{},"name":{},"text":{"181":{}},"component":{}}],["integration.spec.cy.t",{"_index":3812,"title":{},"name":{},"text":{"247":{}},"component":{}}],["integration.spec.t",{"_index":3643,"title":{},"name":{},"text":{"181":{}},"component":{}}],["integration/default/control",{"_index":3720,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["intellij",{"_index":2357,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["intend",{"_index":1200,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"153":{},"156":{},"181":{},"182":{},"219":{},"222":{},"247":{},"248":{}},"component":{}}],["intent",{"_index":3348,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["intention",{"_index":2447,"title":{},"name":{},"text":{"95":{},"98":{},"149":{},"154":{},"215":{},"220":{}},"component":{}}],["interact",{"_index":1137,"title":{"96-10":{},"151-10":{},"217-10":{}},"name":{},"text":{"19":{},"55":{},"96":{},"100":{},"138":{},"151":{},"156":{},"178":{},"179":{},"204":{},"217":{},"222":{},"244":{},"245":{}},"component":{}}],["interest",{"_index":2114,"title":{},"name":{},"text":{"79":{},"128":{},"132":{},"194":{},"198":{}},"component":{}}],["interfac",{"_index":1310,"title":{},"name":{},"text":{"22":{},"24":{},"41":{},"58":{},"60":{},"83":{},"97":{},"98":{},"136":{},"152":{},"154":{},"202":{},"218":{},"220":{}},"component":{}}],["intermedi",{"_index":1797,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["intern",{"_index":98,"title":{"19":{},"55":{},"100":{},"156":{},"222":{},"2-19":{},"41-19":{}},"name":{},"text":{"2":{},"22":{},"24":{},"27":{},"41":{},"58":{},"60":{},"62":{},"96":{},"98":{},"100":{},"102":{},"111":{},"123":{},"151":{},"154":{},"156":{},"172":{},"186":{},"217":{},"220":{},"222":{},"238":{},"253":{}},"component":{}}],["internet",{"_index":182,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"117":{}},"component":{}}],["interpret",{"_index":1679,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["interrupt",{"_index":2870,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["introduc",{"_index":644,"title":{},"name":{},"text":{"5":{},"23":{},"44":{},"59":{},"83":{},"136":{},"150":{},"202":{},"216":{}},"component":{}}],["introduct",{"_index":78,"title":{"5":{},"44":{},"83":{},"136":{},"202":{},"2-1":{},"7-1":{},"41-1":{},"46-1":{},"103-1":{},"104-1":{},"105-1":{},"106-1":{},"107-1":{},"159-1":{},"160-1":{},"161-1":{},"162-1":{},"163-1":{},"164-1":{},"165-1":{},"166-1":{},"167-1":{},"168-1":{},"225-1":{},"226-1":{},"227-1":{},"228-1":{},"229-1":{},"230-1":{},"231-1":{},"232-1":{},"233-1":{},"234-1":{}},"name":{},"text":{},"component":{}}],["invalid",{"_index":1452,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["invidunt",{"_index":804,"title":{},"name":{},"text":{"10":{}},"component":{}}],["invok",{"_index":1377,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["involv",{"_index":1311,"title":{},"name":{},"text":{"22":{},"58":{},"98":{},"154":{},"220":{}},"component":{}}],["io",{"_index":1822,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["iodsauthnzadapt",{"_index":1274,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["ionic",{"_index":1819,"title":{"36":{},"72":{},"122":{},"185":{},"251":{}},"name":{"36":{},"72":{},"122":{},"185":{},"251":{}},"text":{"36":{},"39":{},"72":{},"75":{},"95":{},"122":{},"123":{},"136":{},"149":{},"185":{},"186":{},"202":{},"215":{},"251":{},"253":{}},"component":{}}],["ionic.config.json",{"_index":1844,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["ionic/cli",{"_index":3712,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["ionic:build",{"_index":1850,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["iot",{"_index":3554,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["ip",{"_index":74,"title":{},"name":{},"text":{"1":{},"2":{},"32":{},"40":{},"41":{},"68":{},"76":{},"117":{},"129":{},"195":{}},"component":{}}],["ipsum",{"_index":792,"title":{},"name":{},"text":{"10":{}},"component":{}}],["ipykernel",{"_index":3615,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["ipython",{"_index":3612,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["iri",{"_index":1710,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["is.yml",{"_index":2189,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["isn’t",{"_index":522,"title":{"136-2":{},"202-2":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["isol",{"_index":2679,"title":{},"name":{},"text":{"98":{},"154":{},"220":{},"240":{}},"component":{}}],["issu",{"_index":586,"title":{"4-7":{},"43-7":{},"91-7":{},"94-14":{},"145-7":{},"148-14":{},"211-7":{},"214-14":{}},"name":{},"text":{"11":{},"14":{},"29":{},"32":{},"50":{},"63":{},"68":{},"80":{},"82":{},"94":{},"95":{},"96":{},"98":{},"99":{},"112":{},"117":{},"133":{},"135":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"173":{},"199":{},"201":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"239":{},"240":{}},"component":{}}],["issueid",{"_index":2438,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["it'",{"_index":2939,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["item",{"_index":640,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"153":{},"154":{},"174":{},"219":{},"220":{},"240":{}},"component":{}}],["iter",{"_index":3245,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["itself",{"_index":2586,"title":{},"name":{},"text":{"96":{},"98":{},"99":{},"108":{},"127":{},"150":{},"154":{},"155":{},"169":{},"193":{},"216":{},"220":{},"221":{},"235":{}},"component":{}}],["it’",{"_index":233,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["ivi",{"_index":495,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["j11.sh",{"_index":3470,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["j17.sh",{"_index":3464,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["j21.sh",{"_index":3465,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["jackson",{"_index":1197,"title":{},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["januari",{"_index":1714,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["jar",{"_index":1523,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"136":{},"172":{},"202":{},"238":{}},"component":{}}],["java",{"_index":728,"title":{"27":{},"62":{},"111":{},"172":{},"238":{},"19-5":{},"55-5":{},"100-6":{},"156-6":{},"161-3":{},"172-14":{},"222-6":{},"227-3":{},"234-3":{},"238-14":{}},"name":{"27":{},"62":{},"111":{},"172":{},"238":{}},"text":{"6":{},"19":{},"27":{},"45":{},"55":{},"62":{},"81":{},"85":{},"100":{},"101":{},"104":{},"111":{},"115":{},"120":{},"123":{},"136":{},"138":{},"156":{},"157":{},"161":{},"172":{},"177":{},"183":{},"186":{},"202":{},"204":{},"222":{},"223":{},"227":{},"234":{},"238":{},"243":{},"249":{},"253":{}},"component":{}}],["java/springboot",{"_index":3123,"title":{},"name":{},"text":{"123":{},"186":{},"253":{}},"component":{}}],["javascript",{"_index":1781,"title":{},"name":{},"text":{"34":{},"70":{},"113":{},"119":{},"175":{},"241":{}},"component":{}}],["javascript/typescript",{"_index":1825,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["javaversion.version_21",{"_index":3524,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["jcenter",{"_index":490,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdbc",{"_index":298,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdbc:postgresql://localhost:5432/conflu",{"_index":433,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdbc:postgresql://localhost:5432/crowd?rewritebatchedinserts=true&preparethreshold=0",{"_index":303,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdk",{"_index":538,"title":{"161":{},"227":{}},"name":{"161":{},"227":{}},"text":{"2":{},"41":{},"161":{},"172":{},"183":{},"227":{},"234":{},"238":{},"249":{}},"component":{}}],["jenin",{"_index":2216,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenk",{"_index":692,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["jenkin",{"_index":136,"title":{"6":{},"7":{},"8":{},"14":{},"45":{},"46":{},"47":{},"50":{},"84":{},"85":{},"86":{},"87":{},"88":{},"97":{},"103":{},"104":{},"105":{},"106":{},"107":{},"137":{},"138":{},"139":{},"140":{},"141":{},"152":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"203":{},"204":{},"205":{},"206":{},"207":{},"218":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"2-63":{},"4-6":{},"6-1":{},"6-5":{},"25-5":{},"26-5":{},"27-11":{},"28-5":{},"29-5":{},"30-5":{},"31-5":{},"32-3":{},"32-18":{},"33-5":{},"34-5":{},"35-5":{},"36-5":{},"37-5":{},"38-5":{},"41-63":{},"43-6":{},"45-1":{},"45-5":{},"61-5":{},"62-11":{},"63-5":{},"64-5":{},"65-5":{},"66-5":{},"67-5":{},"68-3":{},"68-18":{},"69-5":{},"70-5":{},"71-5":{},"72-5":{},"73-5":{},"74-5":{},"77-14":{},"80-25":{},"80-26":{},"84-1":{},"84-2":{},"84-3":{},"84-4":{},"91-6":{},"93-2":{},"94-2":{},"94-8":{},"95-2":{},"95-3":{},"95-9":{},"95-11":{},"108-2":{},"109-8":{},"110-5":{},"111-11":{},"112-5":{},"113-5":{},"114-7":{},"115-5":{},"116-5":{},"117-3":{},"117-18":{},"118-5":{},"119-5":{},"120-9":{},"121-5":{},"122-5":{},"124-5":{},"125-5":{},"130-12":{},"133-25":{},"133-26":{},"137-1":{},"145-6":{},"147-2":{},"148-2":{},"148-8":{},"149-2":{},"149-3":{},"149-9":{},"149-11":{},"150-1":{},"150-2":{},"169-2":{},"170-9":{},"171-6":{},"172-12":{},"173-6":{},"174-6":{},"175-6":{},"176-8":{},"177-6":{},"178-7":{},"179-6":{},"180-6":{},"181-5":{},"183-9":{},"184-6":{},"185-6":{},"187-5":{},"188-5":{},"190-5":{},"191-5":{},"196-12":{},"199-25":{},"199-26":{},"203-1":{},"211-6":{},"213-2":{},"214-2":{},"214-8":{},"215-2":{},"215-3":{},"215-9":{},"215-11":{},"216-1":{},"216-2":{},"235-2":{},"236-9":{},"237-6":{},"238-12":{},"239-6":{},"240-6":{},"241-6":{},"242-8":{},"243-6":{},"244-7":{},"245-6":{},"246-6":{},"247-5":{},"249-9":{},"250-6":{},"251-6":{},"252-5":{},"254-5":{},"256-5":{},"257-5":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"7":{},"8":{},"13":{},"14":{},"16":{},"21":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"52":{},"57":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"190":{},"191":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"256":{},"257":{}},"component":{}}],["jenkinfil",{"_index":3525,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["jenkins/run.sh",{"_index":2983,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["jenkins@example.com",{"_index":2504,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["jenkins_agent_base_from_imag",{"_index":2104,"title":{},"name":{},"text":{"79":{},"132":{},"137":{},"198":{},"203":{}},"component":{}}],["jenkins_agent_base_imag",{"_index":2100,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["jenkins_master_base_from_imag",{"_index":2099,"title":{},"name":{},"text":{"79":{},"132":{},"137":{},"198":{},"203":{}},"component":{}}],["jenkinsfil",{"_index":686,"title":{"27-9":{},"62-9":{},"94-3":{},"111-9":{},"148-3":{},"172-9":{},"214-3":{},"238-9":{}},"name":{},"text":{"5":{},"8":{},"14":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"44":{},"47":{},"50":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"80":{},"87":{},"88":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"101":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"133":{},"136":{},"140":{},"141":{},"148":{},"149":{},"151":{},"152":{},"154":{},"155":{},"157":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"192":{},"199":{},"202":{},"206":{},"207":{},"214":{},"215":{},"217":{},"218":{},"220":{},"221":{},"223":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"258":{}},"component":{}}],["jenkinsfile.templ",{"_index":2455,"title":{},"name":{},"text":{"95":{},"99":{},"108":{},"120":{},"149":{},"155":{},"169":{},"183":{},"215":{},"221":{},"235":{},"249":{}},"component":{}}],["jenkinsfile_path",{"_index":787,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["jenkinsfile`",{"_index":2436,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["jenkinsfilepath",{"_index":2186,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenkinspipelin",{"_index":2187,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenkinspipeline.[som",{"_index":2904,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.cr",{"_index":2911,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.quickstart",{"_index":2165,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenkinspipeline.quickstarter..desc",{"_index":2898,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.quickstarter..repo",{"_index":2899,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.quickstarter.b",{"_index":2900,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipelinestrategi",{"_index":2185,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jest",{"_index":3073,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["jira",{"_index":54,"title":{"2-35":{},"41-35":{},"98-16":{},"101-8":{},"154-19":{},"157-11":{},"220-19":{},"223-11":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"19":{},"20":{},"22":{},"40":{},"41":{},"42":{},"45":{},"55":{},"56":{},"58":{},"76":{},"83":{},"90":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"126":{},"129":{},"130":{},"136":{},"144":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"158":{},"192":{},"195":{},"196":{},"202":{},"210":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"224":{},"258":{}},"component":{}}],["jira.admin_password=jira_admin",{"_index":1269,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.admin_user=jira_admin",{"_index":1270,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project",{"_index":2916,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.add",{"_index":2927,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.key.=com.pyxis.greenhopper.jira:gh",{"_index":1341,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.key=com.pyxis.greenhopper.jira:gh",{"_index":1335,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.type.=softwar",{"_index":1342,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.type=softwar",{"_index":1337,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.webhook",{"_index":2929,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jira.yml",{"_index":53,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["jira_enable_sso.yml",{"_index":55,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["jiraconfluencespac",{"_index":1373,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["jmod",{"_index":3475,"title":{},"name":{},"text":{"161":{}},"component":{}}],["jnlp",{"_index":1982,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["job",{"_index":519,"title":{},"name":{},"text":{"2":{},"21":{},"22":{},"39":{},"41":{},"57":{},"58":{},"75":{},"80":{},"83":{},"101":{},"102":{},"128":{},"133":{},"136":{},"157":{},"158":{},"194":{},"199":{},"202":{},"223":{},"224":{}},"component":{}}],["job_nam",{"_index":995,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["jobnam",{"_index":994,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["jobs/${job.group}${job.name}.${config.format",{"_index":524,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["journey",{"_index":629,"title":{"5-3":{},"44-3":{},"83-6":{},"136-5":{},"202-5":{}},"name":{},"text":{},"component":{}}],["jpa,h2,lombok,data",{"_index":1511,"title":{},"name":{},"text":{"27":{},"62":{},"111":{}},"component":{}}],["jpa,h2,security,devtool",{"_index":3520,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["jq",{"_index":2039,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["jqueri",{"_index":1159,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["jre",{"_index":3406,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["js",{"_index":1789,"title":{},"name":{},"text":{"35":{},"37":{},"71":{},"73":{},"121":{},"184":{},"250":{}},"component":{}}],["jsession",{"_index":1366,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["jsession_id=$(cat",{"_index":1365,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["json",{"_index":1201,"title":{"80-26":{},"133-26":{},"199-26":{}},"name":{},"text":{"19":{},"32":{},"55":{},"68":{},"80":{},"100":{},"109":{},"114":{},"117":{},"133":{},"156":{},"170":{},"176":{},"199":{},"222":{},"236":{},"240":{},"242":{}},"component":{}}],["jsonpatch",{"_index":2221,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jsonpoint",{"_index":1248,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["jsonschema2pojo",{"_index":1199,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["jsonsupport.scala",{"_index":1603,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["june",{"_index":2280,"title":{"83-13":{},"136-13":{},"202-13":{}},"name":{},"text":{},"component":{}}],["junit",{"_index":1169,"title":{},"name":{},"text":{"19":{},"55":{},"98":{},"100":{},"108":{},"114":{},"115":{},"120":{},"154":{},"156":{},"169":{},"176":{},"177":{},"183":{},"220":{},"222":{},"235":{},"242":{},"243":{},"249":{}},"component":{}}],["junit:1.28",{"_index":2318,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["junit_family=xunit2",{"_index":3532,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["junitxml=tests.xml",{"_index":3039,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["jupyt",{"_index":1610,"title":{"31":{},"67":{},"116":{},"178":{},"244":{},"150-11":{},"216-11":{}},"name":{"31":{},"67":{},"116":{},"178":{},"244":{}},"text":{"31":{},"39":{},"67":{},"75":{},"94":{},"95":{},"116":{},"123":{},"136":{},"148":{},"149":{},"150":{},"178":{},"186":{},"202":{},"214":{},"215":{},"216":{},"244":{},"253":{}},"component":{}}],["jupyter_lab_config.json",{"_index":3611,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["jupyter_notebook_config.json",{"_index":1616,"title":{},"name":{},"text":{"31":{},"67":{},"116":{}},"component":{}}],["jupyterlab",{"_index":3260,"title":{},"name":{},"text":{"150":{},"178":{},"216":{},"244":{}},"component":{}}],["justo",{"_index":815,"title":{},"name":{},"text":{"10":{}},"component":{}}],["k",{"_index":1350,"title":{},"name":{},"text":{"22":{},"32":{},"58":{},"68":{},"117":{}},"component":{}}],["k8",{"_index":3562,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["karma.conf.j",{"_index":1794,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["kasd",{"_index":821,"title":{},"name":{},"text":{"10":{}},"component":{}}],["keep",{"_index":200,"title":{},"name":{},"text":{"2":{},"14":{},"32":{},"34":{},"41":{},"50":{},"68":{},"70":{},"77":{},"79":{},"83":{},"96":{},"98":{},"117":{},"119":{},"130":{},"132":{},"136":{},"142":{},"151":{},"154":{},"196":{},"198":{},"202":{},"208":{},"217":{},"220":{}},"component":{}}],["kept",{"_index":2391,"title":{},"name":{},"text":{"94":{},"95":{},"96":{},"148":{},"149":{},"151":{},"214":{},"215":{},"217":{}},"component":{}}],["kernel",{"_index":3613,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["kernelspec",{"_index":3616,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["key",{"_index":92,"title":{"2-15":{},"2-34":{},"2-38":{},"2-49":{},"41-15":{},"41-34":{},"41-38":{},"41-49":{}},"name":{},"text":{"2":{},"22":{},"24":{},"41":{},"58":{},"60":{},"80":{},"93":{},"96":{},"98":{},"100":{},"101":{},"102":{},"133":{},"147":{},"150":{},"151":{},"154":{},"156":{},"157":{},"181":{},"189":{},"199":{},"213":{},"216":{},"217":{},"220":{},"222":{},"223":{},"247":{},"255":{}},"component":{}}],["key/valu",{"_index":3340,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["key1",{"_index":3288,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["key2",{"_index":3289,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["key=id",{"_index":2949,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["keycloak",{"_index":1246,"title":{"78":{},"131":{},"197":{}},"name":{"78":{},"131":{},"197":{}},"text":{"20":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["keypair",{"_index":2501,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["keystor",{"_index":537,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["kibana",{"_index":1428,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["kick",{"_index":2590,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["kind",{"_index":1515,"title":{},"name":{},"text":{"27":{},"32":{},"62":{},"68":{},"80":{},"96":{},"111":{},"117":{},"133":{},"151":{},"172":{},"199":{},"217":{},"238":{}},"component":{}}],["kitchen",{"_index":3459,"title":{},"name":{},"text":{"160":{},"182":{},"187":{},"188":{},"226":{},"248":{},"252":{},"254":{}},"component":{}}],["knob",{"_index":1321,"title":{},"name":{},"text":{"22":{},"58":{},"98":{},"101":{},"154":{},"157":{},"220":{},"223":{}},"component":{}}],["know",{"_index":242,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"154":{},"173":{},"174":{},"180":{},"182":{},"187":{},"188":{},"220":{},"239":{},"240":{},"246":{},"248":{},"252":{},"254":{}},"component":{}}],["knowledg",{"_index":2672,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["known",{"_index":1255,"title":{"25-7":{},"26-7":{},"27-13":{},"28-7":{},"29-7":{},"30-7":{},"31-7":{},"32-21":{},"33-7":{},"34-7":{},"35-7":{},"36-7":{},"38-7":{},"61-7":{},"62-13":{},"63-7":{},"64-7":{},"65-7":{},"66-7":{},"67-7":{},"68-21":{},"69-7":{},"70-7":{},"71-7":{},"72-7":{},"74-7":{},"94-14":{},"98-25":{},"103-3":{},"104-3":{},"105-3":{},"106-3":{},"107-3":{},"109-10":{},"110-7":{},"111-13":{},"112-7":{},"113-7":{},"114-9":{},"115-7":{},"116-7":{},"117-21":{},"118-7":{},"119-7":{},"120-11":{},"121-7":{},"122-7":{},"124-7":{},"125-7":{},"148-14":{},"154-30":{},"159-3":{},"160-3":{},"161-5":{},"162-3":{},"163-3":{},"164-3":{},"165-3":{},"166-3":{},"167-3":{},"168-3":{},"170-11":{},"171-8":{},"172-15":{},"173-9":{},"174-9":{},"175-8":{},"176-10":{},"177-8":{},"178-9":{},"179-8":{},"180-8":{},"181-9":{},"182-6":{},"183-11":{},"184-8":{},"185-8":{},"187-7":{},"188-7":{},"190-7":{},"191-7":{},"214-14":{},"220-30":{},"225-3":{},"226-3":{},"227-5":{},"228-3":{},"229-3":{},"230-3":{},"231-3":{},"232-3":{},"233-3":{},"234-5":{},"236-11":{},"237-8":{},"238-15":{},"239-9":{},"240-9":{},"241-8":{},"242-10":{},"243-8":{},"244-9":{},"245-8":{},"246-8":{},"247-9":{},"248-6":{},"249-11":{},"250-8":{},"251-8":{},"252-7":{},"254-7":{},"256-7":{},"257-7":{}},"name":{},"text":{"20":{},"56":{},"94":{},"98":{},"101":{},"115":{},"148":{},"150":{},"154":{},"157":{},"177":{},"189":{},"214":{},"216":{},"220":{},"223":{},"240":{},"243":{},"255":{}},"component":{}}],["known/openid",{"_index":1257,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["kubernet",{"_index":1064,"title":{},"name":{},"text":{"14":{},"24":{},"50":{},"60":{},"96":{},"99":{},"127":{},"136":{},"150":{},"151":{},"153":{},"155":{},"193":{},"202":{},"216":{},"217":{},"219":{},"221":{}},"component":{}}],["kubernetes.io/bas",{"_index":2702,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["kubernetesexecutor",{"_index":1405,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["l",{"_index":2494,"title":{},"name":{},"text":{"96":{},"127":{},"151":{},"193":{},"217":{}},"component":{}}],["lab",{"_index":3228,"title":{"178":{},"244":{},"150-11":{},"216-11":{}},"name":{"178":{},"244":{}},"text":{"150":{},"178":{},"186":{},"216":{},"244":{},"253":{}},"component":{}}],["label",{"_index":1008,"title":{"153":{},"219":{},"153-1":{},"219-1":{}},"name":{"153":{},"219":{}},"text":{"14":{},"18":{},"24":{},"50":{},"54":{},"60":{},"80":{},"96":{},"98":{},"99":{},"133":{},"150":{},"151":{},"153":{},"154":{},"155":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"184":{},"185":{},"189":{},"199":{},"216":{},"217":{},"219":{},"220":{},"221":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"250":{},"251":{},"255":{}},"component":{}}],["labor",{"_index":806,"title":{},"name":{},"text":{"10":{}},"component":{}}],["lake",{"_index":1687,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["languag",{"_index":415,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"93":{},"96":{},"97":{},"99":{},"113":{},"127":{},"136":{},"147":{},"151":{},"152":{},"155":{},"174":{},"175":{},"193":{},"202":{},"213":{},"217":{},"218":{},"221":{},"240":{},"241":{}},"component":{}}],["larg",{"_index":921,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"14":{},"50":{},"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["last",{"_index":428,"title":{},"name":{},"text":{"2":{},"24":{},"41":{},"60":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["late",{"_index":2664,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["later",{"_index":412,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"27":{},"41":{},"45":{},"50":{},"62":{},"77":{},"85":{},"98":{},"100":{},"111":{},"130":{},"138":{},"154":{},"156":{},"172":{},"196":{},"204":{},"220":{},"222":{},"238":{}},"component":{}}],["latest",{"_index":190,"title":{},"name":{},"text":{"2":{},"27":{},"32":{},"41":{},"62":{},"68":{},"77":{},"80":{},"81":{},"95":{},"96":{},"98":{},"99":{},"111":{},"117":{},"128":{},"130":{},"133":{},"137":{},"142":{},"146":{},"149":{},"151":{},"154":{},"155":{},"161":{},"174":{},"194":{},"196":{},"199":{},"203":{},"208":{},"212":{},"215":{},"217":{},"220":{},"221":{},"227":{},"234":{},"240":{}},"component":{}}],["launch",{"_index":2071,"title":{},"name":{},"text":{"77":{},"96":{},"130":{},"151":{},"196":{},"217":{}},"component":{}}],["layer",{"_index":1594,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["layout",{"_index":477,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["lb",{"_index":73,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["lcov",{"_index":3594,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["lead",{"_index":2220,"title":{},"name":{},"text":{"80":{},"128":{},"133":{},"194":{},"199":{}},"component":{}}],["lean",{"_index":649,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"126":{},"136":{},"154":{},"192":{},"202":{},"220":{},"240":{},"258":{}},"component":{}}],["learn",{"_index":1708,"title":{},"name":{},"text":{"32":{},"39":{},"68":{},"75":{},"80":{},"81":{},"83":{},"94":{},"95":{},"117":{},"123":{},"133":{},"136":{},"148":{},"149":{},"150":{},"174":{},"199":{},"202":{},"214":{},"215":{},"216":{},"240":{}},"component":{}}],["leav",{"_index":346,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"77":{},"80":{},"88":{},"100":{},"130":{},"133":{},"141":{},"156":{},"196":{},"199":{},"207":{},"222":{}},"component":{}}],["left",{"_index":397,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"98":{},"101":{},"108":{},"154":{},"157":{},"169":{},"220":{},"223":{},"235":{}},"component":{}}],["length=120",{"_index":3038,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["less",{"_index":3386,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["let",{"_index":2362,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["letter",{"_index":2686,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["let’",{"_index":2715,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["leva",{"_index":2663,"title":{},"name":{},"text":{"98":{},"126":{},"151":{},"154":{},"192":{},"217":{},"220":{},"258":{}},"component":{}}],["level",{"_index":2619,"title":{"136-3":{},"157-4":{},"157-5":{},"202-3":{},"223-4":{},"223-5":{}},"name":{},"text":{"96":{},"98":{},"126":{},"151":{},"153":{},"154":{},"157":{},"181":{},"182":{},"189":{},"192":{},"217":{},"219":{},"220":{},"223":{},"247":{},"248":{},"255":{},"258":{}},"component":{}}],["lf",{"_index":920,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"14":{},"50":{},"77":{},"96":{},"130":{},"151":{},"196":{},"217":{}},"component":{}}],["li",{"_index":2914,"title":{},"name":{},"text":{"101":{}},"component":{}}],["lib",{"_index":3082,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["lib.r",{"_index":3549,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["lib:2.13",{"_index":2317,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["librari",{"_index":401,"title":{"14":{},"50":{},"97":{},"152":{},"218":{},"95-3":{},"114-4":{},"149-3":{},"150-2":{},"154-9":{},"176-4":{},"215-3":{},"216-2":{},"220-9":{},"242-4":{}},"name":{},"text":{"2":{},"5":{},"12":{},"14":{},"21":{},"25":{},"26":{},"27":{},"36":{},"37":{},"39":{},"41":{},"44":{},"50":{},"57":{},"61":{},"62":{},"66":{},"72":{},"73":{},"75":{},"80":{},"83":{},"87":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"108":{},"109":{},"110":{},"111":{},"114":{},"115":{},"122":{},"123":{},"124":{},"125":{},"126":{},"130":{},"133":{},"136":{},"140":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"169":{},"170":{},"171":{},"172":{},"174":{},"176":{},"177":{},"185":{},"186":{},"190":{},"191":{},"192":{},"196":{},"199":{},"202":{},"206":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"235":{},"236":{},"237":{},"238":{},"240":{},"242":{},"243":{},"251":{},"253":{},"256":{},"257":{},"258":{}},"component":{}}],["libraries.html",{"_index":1117,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["library#22",{"_index":2395,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["library'",{"_index":753,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["library(\"od",{"_index":2767,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["library('od",{"_index":2418,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"149":{},"150":{},"151":{},"154":{},"215":{},"216":{},"217":{},"220":{}},"component":{}}],["library.groovi",{"_index":2323,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["library/compon",{"_index":3223,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["library/issues/374",{"_index":3248,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["library/latest/index.html",{"_index":2355,"title":{},"name":{},"text":{"93":{}},"component":{}}],["library/pull/513",{"_index":3250,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["library@${odsgitref",{"_index":2768,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["library@2.x",{"_index":2377,"title":{},"name":{},"text":{"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["library@3.x",{"_index":2421,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["library@4.x",{"_index":3238,"title":{},"name":{},"text":{"150":{},"154":{},"216":{},"220":{}},"component":{}}],["library@product",{"_index":944,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["libressl",{"_index":3788,"title":{},"name":{},"text":{"240":{}},"component":{}}],["licens",{"_index":82,"title":{"2-6":{},"2-15":{},"2-38":{},"2-49":{},"41-6":{},"41-15":{},"41-38":{},"41-49":{}},"name":{},"text":{"2":{},"14":{},"16":{},"28":{},"37":{},"41":{},"50":{},"52":{},"65":{},"73":{},"96":{},"114":{},"151":{},"176":{},"217":{},"240":{},"242":{}},"component":{}}],["life",{"_index":3479,"title":{},"name":{},"text":{"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["lifecycl",{"_index":3139,"title":{"128":{},"194":{}},"name":{"128":{},"194":{}},"text":{"128":{},"194":{}},"component":{}}],["lightweight",{"_index":2739,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["limit",{"_index":1457,"title":{"25-7":{},"26-7":{},"27-13":{},"28-7":{},"29-7":{},"30-7":{},"31-7":{},"32-21":{},"33-7":{},"34-7":{},"35-7":{},"36-7":{},"38-7":{},"61-7":{},"62-13":{},"63-7":{},"64-7":{},"65-7":{},"66-7":{},"67-7":{},"68-21":{},"69-7":{},"70-7":{},"71-7":{},"72-7":{},"74-7":{},"98-25":{},"103-3":{},"104-3":{},"105-3":{},"106-3":{},"107-3":{},"109-10":{},"110-7":{},"111-13":{},"112-7":{},"113-7":{},"114-9":{},"115-7":{},"116-7":{},"117-21":{},"118-7":{},"119-7":{},"120-11":{},"121-7":{},"122-7":{},"124-7":{},"125-7":{},"154-30":{},"159-3":{},"160-3":{},"161-5":{},"162-3":{},"163-3":{},"164-3":{},"165-3":{},"166-3":{},"167-3":{},"168-3":{},"170-11":{},"171-8":{},"172-15":{},"173-9":{},"174-9":{},"175-8":{},"176-10":{},"177-8":{},"178-9":{},"179-8":{},"180-8":{},"181-9":{},"182-6":{},"183-11":{},"184-8":{},"185-8":{},"187-7":{},"188-7":{},"190-7":{},"191-7":{},"220-30":{},"225-3":{},"226-3":{},"227-5":{},"228-3":{},"229-3":{},"230-3":{},"231-3":{},"232-3":{},"233-3":{},"234-5":{},"236-11":{},"237-8":{},"238-15":{},"239-9":{},"240-9":{},"241-8":{},"242-10":{},"243-8":{},"244-9":{},"245-8":{},"246-8":{},"247-9":{},"248-6":{},"249-11":{},"250-8":{},"251-8":{},"252-7":{},"254-7":{},"256-7":{},"257-7":{}},"name":{},"text":{"98":{},"136":{},"150":{},"154":{},"202":{},"216":{},"220":{},"240":{}},"component":{}}],["line",{"_index":1520,"title":{},"name":{},"text":{"27":{},"62":{},"77":{},"81":{},"83":{},"95":{},"98":{},"100":{},"111":{},"112":{},"130":{},"136":{},"149":{},"151":{},"154":{},"156":{},"172":{},"173":{},"181":{},"196":{},"202":{},"215":{},"217":{},"220":{},"222":{},"238":{},"239":{},"247":{}},"component":{}}],["link",{"_index":293,"title":{"19-6":{},"55-6":{},"100-11":{},"156-11":{},"222-11":{}},"name":{},"text":{"2":{},"19":{},"20":{},"22":{},"32":{},"41":{},"55":{},"56":{},"58":{},"68":{},"81":{},"98":{},"100":{},"101":{},"117":{},"128":{},"151":{},"154":{},"156":{},"157":{},"181":{},"189":{},"194":{},"217":{},"220":{},"222":{},"223":{},"240":{},"247":{},"255":{}},"component":{}}],["lint",{"_index":1585,"title":{},"name":{},"text":{"29":{},"34":{},"35":{},"36":{},"37":{},"38":{},"63":{},"70":{},"71":{},"72":{},"73":{},"74":{},"103":{},"112":{},"119":{},"121":{},"122":{},"159":{},"173":{},"174":{},"180":{},"185":{},"225":{},"239":{},"240":{},"246":{},"251":{}},"component":{}}],["linter",{"_index":1546,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"174":{},"176":{},"184":{},"240":{},"242":{},"250":{}},"component":{}}],["linux",{"_index":85,"title":{"2-7":{},"41-7":{}},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"77":{},"117":{},"130":{},"196":{}},"component":{}}],["linux.zip",{"_index":3667,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["list",{"_index":255,"title":{},"name":{},"text":{"2":{},"8":{},"14":{},"16":{},"22":{},"29":{},"41":{},"47":{},"50":{},"52":{},"58":{},"63":{},"77":{},"88":{},"93":{},"95":{},"96":{},"98":{},"101":{},"112":{},"123":{},"126":{},"141":{},"147":{},"149":{},"151":{},"153":{},"154":{},"157":{},"173":{},"174":{},"178":{},"186":{},"192":{},"207":{},"213":{},"215":{},"217":{},"219":{},"220":{},"223":{},"239":{},"240":{},"244":{},"253":{},"258":{}},"component":{}}],["liter",{"_index":3326,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["littl",{"_index":929,"title":{},"name":{},"text":{"14":{},"30":{},"50":{},"64":{},"96":{},"97":{},"98":{},"99":{},"151":{},"152":{},"154":{},"155":{},"217":{},"218":{},"220":{},"221":{}},"component":{}}],["live",{"_index":1950,"title":{},"name":{},"text":{"39":{},"75":{},"80":{},"96":{},"97":{},"98":{},"126":{},"133":{},"151":{},"152":{},"154":{},"174":{},"192":{},"199":{},"217":{},"218":{},"220":{},"240":{},"258":{}},"component":{}}],["llvm",{"_index":3502,"title":{},"name":{},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["lo",{"_index":2046,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["loacl",{"_index":454,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["load",{"_index":127,"title":{"2-52":{},"41-52":{}},"name":{},"text":{"11":{},"12":{},"14":{},"32":{},"50":{},"68":{},"96":{},"98":{},"99":{},"100":{},"109":{},"117":{},"126":{},"128":{},"151":{},"154":{},"155":{},"156":{},"170":{},"181":{},"192":{},"194":{},"217":{},"220":{},"221":{},"222":{},"236":{},"247":{},"258":{}},"component":{}}],["local",{"_index":42,"title":{"2-9":{},"2-57":{},"19-1":{},"32-8":{},"41-9":{},"41-57":{},"55-1":{},"68-8":{},"77-2":{},"82-3":{},"93-3":{},"93-4":{},"100-1":{},"117-8":{},"130-2":{},"135-3":{},"147-3":{},"147-4":{},"156-1":{},"196-2":{},"201-3":{},"213-3":{},"213-4":{},"222-1":{}},"name":{"2":{},"41":{}},"text":{"1":{},"2":{},"14":{},"19":{},"20":{},"27":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"50":{},"55":{},"56":{},"62":{},"63":{},"64":{},"68":{},"70":{},"72":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"93":{},"96":{},"100":{},"101":{},"108":{},"109":{},"111":{},"113":{},"114":{},"117":{},"119":{},"122":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"142":{},"146":{},"147":{},"151":{},"156":{},"157":{},"169":{},"170":{},"172":{},"174":{},"175":{},"176":{},"181":{},"185":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"208":{},"212":{},"213":{},"217":{},"222":{},"223":{},"235":{},"236":{},"238":{},"240":{},"241":{},"242":{},"247":{},"251":{}},"component":{}}],["localhost:4200",{"_index":1773,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["locat",{"_index":668,"title":{},"name":{},"text":{"5":{},"6":{},"13":{},"19":{},"29":{},"44":{},"45":{},"49":{},"55":{},"63":{},"76":{},"80":{},"81":{},"82":{},"83":{},"87":{},"92":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"112":{},"114":{},"126":{},"129":{},"133":{},"135":{},"137":{},"140":{},"142":{},"146":{},"147":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"173":{},"176":{},"180":{},"192":{},"195":{},"199":{},"201":{},"203":{},"206":{},"208":{},"212":{},"213":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"239":{},"242":{},"246":{},"258":{}},"component":{}}],["lock",{"_index":911,"title":{},"name":{},"text":{"13":{},"38":{},"49":{},"74":{}},"component":{}}],["lock.json",{"_index":1537,"title":{},"name":{},"text":{"28":{},"35":{},"38":{},"65":{},"71":{},"74":{},"114":{},"121":{},"176":{},"184":{},"242":{},"250":{}},"component":{}}],["log",{"_index":107,"title":{"2-22":{},"41-22":{}},"name":{},"text":{"2":{},"13":{},"14":{},"20":{},"21":{},"22":{},"24":{},"41":{},"49":{},"50":{},"56":{},"57":{},"58":{},"60":{},"77":{},"101":{},"130":{},"157":{},"196":{},"223":{}},"component":{}}],["logback",{"_index":3059,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["logback.xml",{"_index":3051,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["logfil",{"_index":1299,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["logic",{"_index":2211,"title":{},"name":{},"text":{"80":{},"121":{},"122":{},"133":{},"174":{},"184":{},"185":{},"199":{},"240":{},"250":{},"251":{}},"component":{}}],["login",{"_index":70,"title":{},"name":{},"text":{"1":{},"2":{},"22":{},"39":{},"40":{},"41":{},"58":{},"75":{},"76":{},"129":{},"130":{},"195":{},"196":{}},"component":{}}],["login.t",{"_index":3638,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["login_obsolete.t",{"_index":3809,"title":{},"name":{},"text":{"247":{}},"component":{}}],["login_statu",{"_index":1360,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["login_status=$(cat",{"_index":1357,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["logist",{"_index":1705,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["logmessag",{"_index":3060,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["logo.png",{"_index":1912,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["logon",{"_index":1958,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["logout",{"_index":2956,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["logstash",{"_index":3058,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["long",{"_index":1751,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["longer",{"_index":452,"title":{"95-11":{},"149-11":{},"150-10":{},"215-11":{},"216-10":{}},"name":{},"text":{"2":{},"41":{},"47":{},"80":{},"88":{},"95":{},"133":{},"141":{},"149":{},"150":{},"154":{},"199":{},"207":{},"215":{},"216":{},"220":{}},"component":{}}],["longlivedbranch",{"_index":2556,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["look",{"_index":37,"title":{},"name":{},"text":{"1":{},"2":{},"13":{},"14":{},"19":{},"27":{},"30":{},"40":{},"41":{},"49":{},"50":{},"55":{},"62":{},"64":{},"76":{},"80":{},"95":{},"96":{},"100":{},"108":{},"111":{},"115":{},"127":{},"129":{},"133":{},"149":{},"151":{},"156":{},"169":{},"172":{},"177":{},"181":{},"193":{},"195":{},"199":{},"215":{},"217":{},"222":{},"235":{},"238":{},"243":{},"247":{}},"component":{}}],["lookup",{"_index":2589,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["lookuppolici",{"_index":2198,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["lorem",{"_index":791,"title":{},"name":{},"text":{"10":{}},"component":{}}],["lot",{"_index":1126,"title":{},"name":{},"text":{"14":{},"28":{},"50":{},"65":{},"95":{},"96":{},"97":{},"108":{},"114":{},"149":{},"151":{},"152":{},"154":{},"169":{},"176":{},"215":{},"217":{},"218":{},"220":{},"235":{},"242":{}},"component":{}}],["low",{"_index":2563,"title":{},"name":{},"text":{"96":{},"127":{},"151":{},"193":{},"217":{}},"component":{}}],["lowercas",{"_index":2651,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["lua",{"_index":546,"title":{"12":{},"12-2":{},"109-6":{},"109-7":{},"170-6":{},"170-7":{},"236-6":{},"236-7":{}},"name":{},"text":{"2":{},"11":{},"12":{},"41":{},"109":{},"170":{},"236":{}},"component":{}}],["m",{"_index":1880,"title":{},"name":{},"text":{"38":{},"74":{},"112":{},"151":{},"173":{},"178":{},"180":{},"217":{},"239":{},"244":{},"246":{}},"component":{}}],["machin",{"_index":450,"title":{},"name":{},"text":{"2":{},"32":{},"39":{},"41":{},"68":{},"75":{},"77":{},"80":{},"83":{},"96":{},"100":{},"108":{},"117":{},"123":{},"130":{},"133":{},"136":{},"151":{},"156":{},"169":{},"196":{},"199":{},"202":{},"217":{},"222":{},"235":{}},"component":{}}],["machine/editor",{"_index":3182,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["macro",{"_index":3784,"title":{},"name":{},"text":{"240":{}},"component":{}}],["macro:2.3",{"_index":699,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["made",{"_index":970,"title":{},"name":{},"text":{"14":{},"50":{},"81":{},"95":{},"96":{},"108":{},"114":{},"127":{},"136":{},"149":{},"150":{},"151":{},"153":{},"169":{},"176":{},"193":{},"202":{},"215":{},"216":{},"217":{},"219":{},"235":{},"242":{}},"component":{}}],["magna",{"_index":808,"title":{},"name":{},"text":{"10":{}},"component":{}}],["mail",{"_index":411,"title":{"6-4":{},"45-4":{}},"name":{},"text":{"2":{},"6":{},"41":{},"45":{},"87":{},"140":{},"151":{},"170":{},"206":{},"217":{},"236":{}},"component":{}}],["mail.en",{"_index":1313,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["main",{"_index":1075,"title":{},"name":{},"text":{"14":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"50":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"93":{},"96":{},"101":{},"112":{},"114":{},"116":{},"117":{},"118":{},"121":{},"122":{},"128":{},"147":{},"151":{},"157":{},"173":{},"174":{},"176":{},"178":{},"179":{},"180":{},"184":{},"185":{},"194":{},"213":{},"217":{},"223":{},"239":{},"240":{},"242":{},"244":{},"245":{},"246":{},"250":{},"251":{}},"component":{}}],["main.css",{"_index":1566,"title":{},"name":{},"text":{"29":{},"63":{},"113":{},"175":{},"241":{}},"component":{}}],["main.go",{"_index":1476,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["main.j",{"_index":3053,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["main.pi",{"_index":3023,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["main.r",{"_index":3548,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["main.scala.html",{"_index":3048,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["main.spec.j",{"_index":1760,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["main.spec.t",{"_index":1766,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["main.t",{"_index":1808,"title":{},"name":{},"text":{"35":{},"36":{},"38":{},"71":{},"72":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["main.tf",{"_index":3724,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["main_test.pi",{"_index":3024,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["mainlin",{"_index":2676,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["maintain",{"_index":2010,"title":{},"name":{},"text":{"76":{},"77":{},"84":{},"129":{},"130":{},"195":{},"196":{}},"component":{}}],["major",{"_index":1394,"title":{"23-1":{},"59-1":{}},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["make",{"_index":224,"title":{"81-1":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"32":{},"41":{},"44":{},"50":{},"55":{},"68":{},"77":{},"79":{},"80":{},"81":{},"83":{},"84":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"117":{},"123":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"172":{},"174":{},"179":{},"186":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"238":{},"240":{},"245":{},"253":{},"255":{},"258":{}},"component":{}}],["makefil",{"_index":789,"title":{},"name":{},"text":{"8":{},"47":{},"84":{},"88":{},"141":{},"207":{}},"component":{}}],["manag",{"_index":129,"title":{"126":{},"192":{},"258":{},"2-53":{},"41-53":{},"80-19":{},"84-1":{},"133-19":{},"154-25":{},"199-19":{},"220-25":{}},"name":{"126":{},"192":{},"258":{}},"text":{"2":{},"5":{},"7":{},"12":{},"32":{},"41":{},"44":{},"46":{},"68":{},"78":{},"82":{},"83":{},"87":{},"95":{},"97":{},"98":{},"101":{},"103":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"126":{},"131":{},"135":{},"136":{},"140":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"159":{},"170":{},"171":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"192":{},"197":{},"201":{},"202":{},"206":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"225":{},"236":{},"237":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["manager.yml",{"_index":2642,"title":{},"name":{},"text":{"98":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"126":{},"154":{},"170":{},"171":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"192":{},"220":{},"236":{},"237":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"258":{}},"component":{}}],["mandatori",{"_index":1661,"title":{},"name":{},"text":{"32":{},"68":{},"80":{},"87":{},"101":{},"115":{},"117":{},"133":{},"140":{},"157":{},"177":{},"199":{},"206":{},"223":{},"243":{}},"component":{}}],["mani",{"_index":981,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"109":{},"151":{},"155":{},"170":{},"217":{},"221":{},"236":{}},"component":{}}],["manifest",{"_index":3317,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["manifest.json",{"_index":1839,"title":{},"name":{},"text":{"36":{},"37":{},"38":{},"72":{},"73":{},"74":{},"122":{}},"component":{}}],["manual",{"_index":889,"title":{"13-4":{},"49-4":{}},"name":{},"text":{"22":{},"32":{},"47":{},"58":{},"68":{},"78":{},"80":{},"87":{},"88":{},"94":{},"96":{},"98":{},"101":{},"117":{},"131":{},"133":{},"137":{},"140":{},"141":{},"142":{},"146":{},"148":{},"150":{},"151":{},"154":{},"157":{},"197":{},"199":{},"203":{},"206":{},"207":{},"208":{},"212":{},"214":{},"216":{},"217":{},"220":{},"223":{}},"component":{}}],["map",{"_index":421,"title":{"96-4":{},"101-4":{},"101-6":{},"101-7":{},"151-4":{},"157-7":{},"157-9":{},"157-10":{},"217-4":{},"223-7":{},"223-9":{},"223-10":{}},"name":{},"text":{"2":{},"5":{},"6":{},"14":{},"18":{},"19":{},"20":{},"21":{},"22":{},"24":{},"41":{},"44":{},"45":{},"50":{},"54":{},"55":{},"56":{},"57":{},"58":{},"60":{},"78":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"121":{},"131":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"184":{},"197":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"250":{}},"component":{}}],["mapper",{"_index":2079,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["mapping.project",{"_index":2921,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["mark",{"_index":1851,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"122":{},"185":{},"251":{}},"component":{}}],["marketplac",{"_index":914,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["master",{"_index":684,"title":{"87":{},"140":{},"206":{},"6-1":{},"45-1":{},"78-1":{},"80-25":{},"84-2":{},"131-1":{},"133-25":{},"197-1":{},"199-25":{}},"name":{"87":{},"140":{},"206":{}},"text":{"5":{},"6":{},"14":{},"36":{},"44":{},"45":{},"50":{},"72":{},"77":{},"78":{},"79":{},"80":{},"81":{},"83":{},"84":{},"95":{},"96":{},"98":{},"99":{},"102":{},"121":{},"122":{},"126":{},"128":{},"130":{},"131":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"154":{},"155":{},"158":{},"181":{},"184":{},"185":{},"192":{},"194":{},"196":{},"197":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"220":{},"221":{},"224":{},"247":{},"250":{},"251":{}},"component":{}}],["master,develop,production,staging,releas",{"_index":776,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["matadata",{"_index":1427,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["match",{"_index":675,"title":{},"name":{},"text":{"5":{},"14":{},"44":{},"50":{},"80":{},"96":{},"98":{},"108":{},"130":{},"133":{},"150":{},"151":{},"153":{},"154":{},"160":{},"169":{},"189":{},"196":{},"199":{},"216":{},"217":{},"219":{},"220":{},"226":{},"235":{},"255":{}},"component":{}}],["materi",{"_index":1877,"title":{},"name":{},"text":{"37":{},"73":{},"82":{},"135":{},"138":{},"201":{},"204":{}},"component":{}}],["matter",{"_index":662,"title":{},"name":{},"text":{"5":{},"44":{},"77":{},"83":{},"98":{},"130":{},"154":{},"196":{},"220":{}},"component":{}}],["maven",{"_index":492,"title":{"104":{}},"name":{"104":{}},"text":{"2":{},"14":{},"27":{},"41":{},"50":{},"62":{},"95":{},"104":{},"111":{},"120":{},"149":{},"153":{},"161":{},"172":{},"189":{},"215":{},"219":{},"227":{},"238":{},"255":{}},"component":{}}],["maven2",{"_index":481,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"151":{},"217":{}},"component":{}}],["maven:2.x",{"_index":2378,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["max",{"_index":3037,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["maximum",{"_index":2464,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["md5sum",{"_index":3668,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["mean",{"_index":2054,"title":{},"name":{},"text":{"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"95":{},"98":{},"101":{},"128":{},"130":{},"132":{},"133":{},"135":{},"136":{},"141":{},"142":{},"149":{},"150":{},"151":{},"153":{},"154":{},"157":{},"158":{},"189":{},"194":{},"196":{},"198":{},"199":{},"201":{},"202":{},"207":{},"208":{},"215":{},"216":{},"217":{},"219":{},"220":{},"223":{},"224":{},"255":{}},"component":{}}],["meaning",{"_index":2685,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"189":{},"219":{},"220":{},"255":{}},"component":{}}],["meant",{"_index":167,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"153":{},"154":{},"182":{},"219":{},"220":{},"248":{}},"component":{}}],["meantim",{"_index":2599,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["mechan",{"_index":339,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["media",{"_index":1069,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["medium",{"_index":2564,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["meet",{"_index":3736,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["member",{"_index":2009,"title":{},"name":{},"text":{"76":{},"81":{},"98":{},"129":{},"154":{},"195":{},"220":{}},"component":{}}],["membership",{"_index":384,"title":{},"name":{},"text":{"2":{},"41":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["memori",{"_index":2310,"title":{},"name":{},"text":{"83":{},"94":{},"96":{},"99":{},"136":{},"148":{},"151":{},"154":{},"155":{},"202":{},"214":{},"217":{},"220":{},"221":{}},"component":{}}],["mention",{"_index":1779,"title":{},"name":{},"text":{"34":{},"70":{},"98":{},"114":{},"119":{},"123":{},"154":{},"157":{},"173":{},"176":{},"186":{},"220":{},"223":{},"239":{},"242":{},"253":{},"258":{}},"component":{}}],["menu",{"_index":321,"title":{},"name":{},"text":{"2":{},"41":{},"87":{},"140":{},"206":{}},"component":{}}],["mere",{"_index":1135,"title":{},"name":{},"text":{"19":{},"55":{},"98":{},"100":{},"126":{},"154":{},"156":{},"192":{},"220":{},"222":{},"258":{}},"component":{}}],["merg",{"_index":458,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"21":{},"36":{},"41":{},"44":{},"45":{},"47":{},"57":{},"72":{},"80":{},"81":{},"82":{},"83":{},"88":{},"96":{},"102":{},"122":{},"133":{},"135":{},"136":{},"141":{},"151":{},"158":{},"185":{},"199":{},"201":{},"202":{},"207":{},"217":{},"224":{},"251":{}},"component":{}}],["mergedissueid",{"_index":2524,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["messag",{"_index":621,"title":{},"name":{},"text":{"4":{},"14":{},"43":{},"50":{},"91":{},"96":{},"113":{},"145":{},"151":{},"153":{},"175":{},"189":{},"211":{},"217":{},"219":{},"241":{},"255":{}},"component":{}}],["message\":\"unexpect",{"_index":2882,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["message\":\"us",{"_index":2879,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["met",{"_index":173,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["meta",{"_index":1690,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["metadata",{"_index":2177,"title":{"189":{},"255":{},"170-8":{},"171-5":{},"172-11":{},"173-5":{},"174-5":{},"175-5":{},"176-7":{},"177-5":{},"178-6":{},"179-5":{},"180-5":{},"184-5":{},"185-5":{},"236-8":{},"237-5":{},"238-11":{},"239-5":{},"240-5":{},"241-5":{},"242-7":{},"243-5":{},"244-6":{},"245-5":{},"246-5":{},"250-5":{},"251-5":{}},"name":{"189":{},"255":{}},"text":{"80":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"133":{},"151":{},"153":{},"155":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"199":{},"217":{},"219":{},"221":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{}},"component":{}}],["metadata.yml",{"_index":2636,"title":{},"name":{},"text":{"98":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"126":{},"153":{},"154":{},"170":{},"171":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"192":{},"219":{},"220":{},"236":{},"237":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["method",{"_index":1089,"title":{},"name":{},"text":{"14":{},"15":{},"20":{},"27":{},"50":{},"51":{},"56":{},"62":{},"96":{},"101":{},"111":{},"150":{},"151":{},"157":{},"172":{},"216":{},"217":{},"223":{},"238":{}},"component":{}}],["metric",{"_index":2385,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["microservic",{"_index":1475,"title":{},"name":{},"text":{"26":{},"32":{},"61":{},"68":{},"110":{},"117":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"189":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"255":{}},"component":{}}],["middl",{"_index":399,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["middlewar",{"_index":3397,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["migrat",{"_index":1078,"title":{"127":{},"193":{},"172-14":{},"238-14":{}},"name":{"127":{},"193":{}},"text":{"14":{},"50":{},"76":{},"83":{},"95":{},"96":{},"127":{},"129":{},"136":{},"142":{},"146":{},"149":{},"150":{},"151":{},"161":{},"172":{},"193":{},"195":{},"202":{},"208":{},"212":{},"215":{},"216":{},"217":{},"227":{},"234":{},"238":{},"240":{}},"component":{}}],["migration.html",{"_index":3212,"title":{},"name":{},"text":{"142":{},"146":{},"208":{},"212":{}},"component":{}}],["mimick",{"_index":1951,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["mind",{"_index":201,"title":{},"name":{},"text":{"2":{},"14":{},"32":{},"41":{},"50":{},"68":{},"77":{},"79":{},"96":{},"98":{},"114":{},"117":{},"132":{},"151":{},"154":{},"176":{},"198":{},"217":{},"220":{},"242":{}},"component":{}}],["minim",{"_index":924,"title":{},"name":{},"text":{"14":{},"28":{},"50":{},"65":{},"96":{},"97":{},"99":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["minimum",{"_index":3495,"title":{},"name":{},"text":{"167":{},"233":{}},"component":{}}],["minishift",{"_index":582,"title":{"4-5":{},"43-5":{},"91-5":{},"145-5":{},"211-5":{}},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["minor",{"_index":2289,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["minut",{"_index":2572,"title":{},"name":{},"text":{"96":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["mirror",{"_index":390,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"117":{}},"component":{}}],["misconfigur",{"_index":3284,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["mismatch",{"_index":3791,"title":{},"name":{},"text":{"240":{}},"component":{}}],["miss",{"_index":1498,"title":{},"name":{},"text":{"27":{},"62":{},"76":{},"77":{},"80":{},"101":{},"111":{},"112":{},"120":{},"129":{},"130":{},"133":{},"157":{},"172":{},"173":{},"183":{},"195":{},"196":{},"199":{},"223":{},"238":{},"239":{},"240":{},"249":{}},"component":{}}],["mistak",{"_index":3592,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["mitig",{"_index":1749,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"128":{},"194":{}},"component":{}}],["mix",{"_index":2755,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["mkdir",{"_index":2045,"title":{},"name":{},"text":{"77":{},"96":{},"130":{},"137":{},"142":{},"146":{},"151":{},"181":{},"196":{},"203":{},"208":{},"212":{},"217":{},"247":{}},"component":{}}],["mkyong",{"_index":1208,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["ml",{"_index":1631,"title":{"150-10":{},"216-10":{}},"name":{"32":{},"68":{},"117":{}},"text":{"95":{},"149":{},"150":{},"215":{},"216":{}},"component":{}}],["mlflow",{"_index":3256,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["mobil",{"_index":1821,"title":{},"name":{},"text":{"36":{},"39":{},"72":{},"75":{},"122":{},"123":{},"185":{},"186":{},"251":{},"253":{}},"component":{}}],["mocha",{"_index":1549,"title":{},"name":{},"text":{"28":{},"38":{},"65":{},"74":{}},"component":{}}],["mockito",{"_index":1170,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["mod",{"_index":1479,"title":{},"name":{},"text":{"26":{},"61":{},"99":{},"110":{},"155":{},"171":{},"221":{},"237":{}},"component":{}}],["mod.r",{"_index":3566,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["mode",{"_index":1109,"title":{},"name":{},"text":{"14":{},"17":{},"29":{},"32":{},"50":{},"53":{},"63":{},"68":{},"93":{},"96":{},"98":{},"113":{},"117":{},"147":{},"151":{},"154":{},"175":{},"213":{},"217":{},"220":{},"241":{}},"component":{}}],["model",{"_index":1625,"title":{"32-7":{},"32-8":{},"68-7":{},"68-8":{},"117-7":{},"117-8":{}},"name":{},"text":{"32":{},"68":{},"98":{},"117":{},"126":{},"154":{},"174":{},"192":{},"220":{},"240":{},"258":{}},"component":{}}],["modelwrapp",{"_index":1663,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["modern",{"_index":3797,"title":{},"name":{},"text":{"240":{}},"component":{}}],["modernscm",{"_index":945,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"148":{},"214":{}},"component":{}}],["modfi",{"_index":1935,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["modif",{"_index":3241,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["modifi",{"_index":604,"title":{"108-1":{},"108-2":{},"146-1":{},"169-1":{},"169-2":{},"212-1":{},"235-1":{},"235-2":{}},"name":{},"text":{"4":{},"5":{},"8":{},"22":{},"32":{},"43":{},"44":{},"47":{},"58":{},"68":{},"76":{},"77":{},"79":{},"80":{},"82":{},"88":{},"91":{},"95":{},"98":{},"101":{},"102":{},"117":{},"129":{},"130":{},"132":{},"133":{},"135":{},"141":{},"142":{},"145":{},"149":{},"151":{},"154":{},"157":{},"181":{},"195":{},"196":{},"198":{},"199":{},"201":{},"207":{},"208":{},"211":{},"215":{},"217":{},"220":{},"223":{},"247":{}},"component":{}}],["modsecur",{"_index":836,"title":{"12":{}},"name":{},"text":{"11":{},"12":{}},"component":{}}],["modsecurity.conf",{"_index":842,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["modsecurity_nginx_version=\"1.0.0",{"_index":879,"title":{},"name":{},"text":{"12":{}},"component":{}}],["modsecurity_version=\"3.0.0",{"_index":878,"title":{},"name":{},"text":{"12":{}},"component":{}}],["modul",{"_index":830,"title":{"12-1":{},"12-2":{},"109-6":{},"109-7":{},"170-6":{},"170-7":{},"236-6":{},"236-7":{}},"name":{},"text":{"11":{},"12":{},"26":{},"29":{},"61":{},"63":{},"82":{},"99":{},"109":{},"110":{},"112":{},"114":{},"135":{},"155":{},"170":{},"171":{},"173":{},"174":{},"176":{},"180":{},"201":{},"221":{},"236":{},"237":{},"239":{},"240":{},"242":{},"246":{}},"component":{}}],["modular",{"_index":3597,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["module\").authent",{"_index":3009,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["modules.t",{"_index":3117,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["moment",{"_index":3154,"title":{},"name":{},"text":{"128":{},"130":{},"137":{},"194":{},"196":{},"203":{}},"component":{}}],["mongodb",{"_index":3376,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["monitor",{"_index":763,"title":{},"name":{},"text":{"7":{},"14":{},"16":{},"32":{},"46":{},"50":{},"52":{},"68":{},"85":{},"96":{},"117":{},"138":{},"151":{},"204":{},"217":{}},"component":{}}],["mono",{"_index":3253,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["more",{"_index":698,"title":{},"name":{},"text":{"6":{},"11":{},"12":{},"14":{},"19":{},"27":{},"32":{},"45":{},"47":{},"50":{},"55":{},"62":{},"68":{},"77":{},"81":{},"82":{},"87":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"117":{},"123":{},"127":{},"128":{},"130":{},"135":{},"140":{},"141":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"172":{},"181":{},"186":{},"189":{},"193":{},"194":{},"196":{},"201":{},"206":{},"207":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"238":{},"240":{},"247":{},"253":{},"255":{}},"component":{}}],["moreov",{"_index":784,"title":{},"name":{},"text":{"8":{},"32":{},"68":{},"117":{},"157":{},"189":{},"223":{},"255":{}},"component":{}}],["mostli",{"_index":2623,"title":{},"name":{},"text":{"97":{},"152":{},"218":{}},"component":{}}],["mount",{"_index":266,"title":{},"name":{},"text":{"2":{},"14":{},"31":{},"41":{},"50":{},"67":{},"96":{},"99":{},"116":{},"151":{},"155":{},"178":{},"217":{},"221":{},"244":{}},"component":{}}],["move",{"_index":982,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"79":{},"80":{},"95":{},"96":{},"98":{},"117":{},"132":{},"133":{},"137":{},"149":{},"150":{},"151":{},"154":{},"174":{},"198":{},"199":{},"203":{},"215":{},"216":{},"217":{},"220":{},"240":{}},"component":{}}],["mro",{"_index":2307,"title":{},"name":{},"text":{"83":{},"136":{},"154":{},"202":{},"220":{}},"component":{}}],["mroagentmemorylimit",{"_index":3423,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["msalv2",{"_index":3639,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["msapplic",{"_index":1903,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["msg",{"_index":576,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["msi",{"_index":588,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["msrv",{"_index":3496,"title":{},"name":{},"text":{"167":{},"233":{}},"component":{}}],["mstile",{"_index":1905,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["much",{"_index":1285,"title":{},"name":{},"text":{"21":{},"32":{},"57":{},"68":{},"96":{},"99":{},"102":{},"117":{},"151":{},"154":{},"155":{},"158":{},"217":{},"220":{},"221":{},"224":{}},"component":{}}],["multi",{"_index":1293,"title":{"24-7":{},"60-7":{}},"name":{},"text":{"21":{},"57":{},"151":{},"217":{}},"component":{}}],["multipl",{"_index":984,"title":{"173-8":{},"239-8":{}},"name":{},"text":{"14":{},"50":{},"82":{},"83":{},"95":{},"96":{},"97":{},"98":{},"99":{},"126":{},"135":{},"136":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"160":{},"192":{},"201":{},"202":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"226":{},"258":{}},"component":{}}],["myarg\":\"val",{"_index":1100,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{}},"component":{}}],["myimagelabel\":\"vallabel",{"_index":1104,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{}},"component":{}}],["mylocaldevelop",{"_index":3034,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["mylocaldevelopment/bin/activ",{"_index":3035,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["mypi",{"_index":3030,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["myproject",{"_index":2885,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["mypy.ini",{"_index":3029,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["n",{"_index":518,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"80":{},"94":{},"96":{},"100":{},"108":{},"127":{},"132":{},"133":{},"148":{},"151":{},"156":{},"169":{},"193":{},"198":{},"199":{},"214":{},"217":{},"222":{},"235":{}},"component":{}}],["n.d",{"_index":1712,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["n/a",{"_index":1472,"title":{},"name":{},"text":{"25":{},"26":{},"28":{},"33":{},"61":{},"65":{},"66":{},"69":{},"104":{},"105":{},"109":{},"110":{},"114":{},"115":{},"118":{},"124":{},"125":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"170":{},"171":{},"176":{},"177":{},"179":{},"190":{},"191":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"236":{},"237":{},"242":{},"243":{},"245":{},"256":{},"257":{}},"component":{}}],["na",{"_index":1524,"title":{},"name":{},"text":{"27":{},"29":{},"30":{},"35":{},"62":{},"63":{},"64":{},"71":{},"111":{},"112":{},"113":{},"120":{},"121":{},"172":{},"175":{},"181":{},"183":{},"184":{},"238":{},"241":{},"247":{},"249":{},"250":{}},"component":{}}],["name",{"_index":301,"title":{"153-15":{},"189-3":{},"219-15":{},"255-3":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"11":{},"14":{},"18":{},"20":{},"21":{},"22":{},"24":{},"32":{},"34":{},"36":{},"39":{},"41":{},"44":{},"45":{},"47":{},"50":{},"54":{},"56":{},"57":{},"58":{},"60":{},"68":{},"70":{},"72":{},"75":{},"78":{},"80":{},"81":{},"82":{},"83":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"115":{},"117":{},"119":{},"122":{},"126":{},"131":{},"133":{},"135":{},"141":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"188":{},"189":{},"192":{},"197":{},"199":{},"201":{},"207":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"254":{},"255":{},"258":{}},"component":{}}],["name.<>.rol",{"_index":2920,"title":{},"name":{},"text":{"101":{}},"component":{}}],["name].branch",{"_index":2906,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["name].cr",{"_index":2905,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["name].jenkinsfil",{"_index":2908,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["name]/jenkinsfil",{"_index":2909,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["namespac",{"_index":673,"title":{"8-2":{},"79-1":{},"80-13":{},"94-4":{},"94-10":{},"95-1":{},"128-2":{},"128-3":{},"128-4":{},"132-1":{},"133-13":{},"148-4":{},"148-10":{},"149-1":{},"194-2":{},"194-3":{},"194-4":{},"198-1":{},"199-13":{},"214-4":{},"214-10":{},"215-1":{}},"name":{},"text":{"5":{},"6":{},"8":{},"21":{},"24":{},"44":{},"45":{},"47":{},"57":{},"60":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"109":{},"126":{},"128":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"158":{},"170":{},"192":{},"194":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"224":{},"236":{},"258":{}},"component":{}}],["name}.git",{"_index":2648,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["nativ",{"_index":1843,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"136":{},"150":{},"185":{},"202":{},"216":{},"251":{}},"component":{}}],["natur",{"_index":2644,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["navig",{"_index":270,"title":{},"name":{},"text":{"2":{},"41":{},"82":{},"108":{},"120":{},"135":{},"169":{},"183":{},"201":{},"235":{},"249":{}},"component":{}}],["necessari",{"_index":231,"title":{},"name":{},"text":{"2":{},"26":{},"32":{},"41":{},"61":{},"68":{},"77":{},"81":{},"94":{},"98":{},"110":{},"117":{},"130":{},"148":{},"151":{},"154":{},"171":{},"196":{},"214":{},"217":{},"220":{},"237":{}},"component":{}}],["necessarili",{"_index":3147,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["ned",{"_index":3164,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["need",{"_index":196,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"16":{},"22":{},"24":{},"25":{},"27":{},"32":{},"36":{},"37":{},"39":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"52":{},"58":{},"60":{},"62":{},"66":{},"68":{},"72":{},"73":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"87":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"115":{},"117":{},"120":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"130":{},"132":{},"133":{},"136":{},"137":{},"140":{},"141":{},"142":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"172":{},"173":{},"177":{},"181":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"195":{},"196":{},"198":{},"199":{},"202":{},"203":{},"206":{},"207":{},"208":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"238":{},"239":{},"243":{},"247":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["nest",{"_index":380,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["net",{"_index":229,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["network",{"_index":609,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"174":{},"211":{},"240":{}},"component":{}}],["network/oper",{"_index":1474,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["never",{"_index":2096,"title":{},"name":{},"text":{"79":{},"81":{},"132":{},"153":{},"198":{},"219":{}},"component":{}}],["nevertheless",{"_index":244,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["new",{"_index":296,"title":{"13-3":{},"39-8":{},"49-3":{},"75-8":{},"79-1":{},"80-16":{},"83-3":{},"83-4":{},"84-2":{},"84-3":{},"84-4":{},"92-1":{},"94-9":{},"94-11":{},"95-1":{},"132-1":{},"133-16":{},"137-1":{},"142-1":{},"146-2":{},"148-9":{},"148-11":{},"149-1":{},"150-3":{},"158-1":{},"158-2":{},"198-1":{},"199-16":{},"203-1":{},"208-1":{},"212-2":{},"214-9":{},"214-11":{},"215-1":{},"216-3":{},"224-1":{},"224-2":{}},"name":{},"text":{"2":{},"5":{},"11":{},"12":{},"13":{},"14":{},"16":{},"19":{},"21":{},"22":{},"23":{},"30":{},"31":{},"32":{},"39":{},"41":{},"44":{},"49":{},"50":{},"52":{},"55":{},"57":{},"58":{},"59":{},"64":{},"67":{},"68":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"113":{},"116":{},"117":{},"120":{},"123":{},"128":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"170":{},"174":{},"175":{},"178":{},"183":{},"186":{},"194":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"236":{},"240":{},"241":{},"244":{},"249":{},"253":{}},"component":{}}],["new/rework",{"_index":2303,"title":{},"name":{},"text":{"83":{}},"component":{}}],["newcom",{"_index":1121,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["newer",{"_index":872,"title":{},"name":{},"text":{"12":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["newest",{"_index":3259,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["newli",{"_index":681,"title":{},"name":{},"text":{"5":{},"32":{},"39":{},"44":{},"68":{},"75":{},"80":{},"94":{},"117":{},"124":{},"125":{},"133":{},"137":{},"142":{},"146":{},"148":{},"190":{},"191":{},"199":{},"203":{},"208":{},"212":{},"214":{},"256":{},"257":{}},"component":{}}],["newlin",{"_index":2248,"title":{},"name":{},"text":{"81":{}},"component":{}}],["next",{"_index":297,"title":{"23-1":{},"59-1":{}},"name":{},"text":{"2":{},"6":{},"8":{},"22":{},"29":{},"39":{},"41":{},"45":{},"47":{},"58":{},"63":{},"75":{},"79":{},"80":{},"81":{},"83":{},"88":{},"95":{},"96":{},"98":{},"109":{},"123":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"149":{},"151":{},"154":{},"160":{},"170":{},"173":{},"180":{},"186":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"215":{},"217":{},"220":{},"226":{},"236":{},"239":{},"246":{},"253":{}},"component":{}}],["nextest",{"_index":3501,"title":{},"name":{},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["nextest.toml",{"_index":3555,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["nexu",{"_index":468,"title":{"9":{},"48":{},"89":{},"142":{},"143":{},"208":{},"209":{},"27-6":{},"62-6":{},"77-12":{},"111-6":{},"120-5":{},"130-10":{},"142-1":{},"172-6":{},"183-5":{},"196-10":{},"208-1":{},"238-6":{},"249-5":{}},"name":{},"text":{"2":{},"14":{},"15":{},"19":{},"27":{},"31":{},"41":{},"50":{},"51":{},"55":{},"62":{},"77":{},"79":{},"80":{},"83":{},"95":{},"96":{},"98":{},"100":{},"103":{},"104":{},"105":{},"107":{},"108":{},"111":{},"120":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"142":{},"149":{},"151":{},"154":{},"156":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"168":{},"169":{},"172":{},"181":{},"183":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"208":{},"215":{},"217":{},"220":{},"222":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"234":{},"235":{},"238":{},"247":{},"249":{},"258":{}},"component":{}}],["nexus3",{"_index":131,"title":{"2-58":{},"41-58":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_folder_releas",{"_index":1501,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["nexus_folder_snapshot",{"_index":1503,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["nexus_host",{"_index":1146,"title":{},"name":{},"text":{"19":{},"55":{},"95":{},"96":{},"100":{},"149":{},"151":{},"156":{},"215":{},"217":{},"222":{}},"component":{}}],["nexus_image_tag",{"_index":3213,"title":{},"name":{},"text":{"142":{},"208":{}},"component":{}}],["nexus_password",{"_index":1148,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["nexus_pw",{"_index":1143,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["nexus_pw=develop",{"_index":535,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_url",{"_index":1141,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"96":{},"100":{},"111":{},"120":{},"151":{},"156":{},"172":{},"183":{},"217":{},"222":{},"238":{},"249":{}},"component":{}}],["nexus_url=http://nexu",{"_index":533,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_us",{"_index":1142,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["nexus_user=develop",{"_index":534,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_usernam",{"_index":1147,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["nexus_username/nexus_password/nexus_auth",{"_index":2446,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["nexusdatabaserepositori",{"_index":3295,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["nexushost",{"_index":1025,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["nexushostwithbasicauth",{"_index":1028,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["nexuspassword",{"_index":1027,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["nexusreportrepositori",{"_index":3296,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["nexusrepositori",{"_index":3282,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["nexusurl",{"_index":2434,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["nexusurlwithbasicauth",{"_index":2480,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["nexususernam",{"_index":1026,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["ng",{"_index":1815,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["nginx",{"_index":545,"title":{"12":{},"109":{},"170":{},"236":{},"12-1":{},"12-4":{}},"name":{"11":{},"12":{},"109":{},"170":{},"236":{}},"text":{"2":{},"11":{},"12":{},"41":{},"94":{},"109":{},"126":{},"148":{},"170":{},"192":{},"214":{},"236":{},"258":{}},"component":{}}],["nginx.conf",{"_index":840,"title":{},"name":{},"text":{"11":{},"12":{},"109":{},"170":{},"236":{}},"component":{}}],["nginx.vh.default.conf.nginx",{"_index":1790,"title":{},"name":{},"text":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["nginx_version=\"1.13.6",{"_index":877,"title":{},"name":{},"text":{"12":{}},"component":{}}],["nice",{"_index":2172,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["nikto",{"_index":884,"title":{},"name":{},"text":{"12":{}},"component":{}}],["no_ci",{"_index":3275,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["no_nexu",{"_index":1149,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["no_nexus=tru",{"_index":539,"title":{},"name":{},"text":{"2":{},"19":{},"27":{},"41":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["no_proxi",{"_index":2979,"title":{},"name":{},"text":{"107":{},"168":{},"234":{}},"component":{}}],["node",{"_index":615,"title":{"28":{},"65":{},"114":{},"176":{},"242":{},"114-5":{},"176-5":{},"242-5":{}},"name":{"28":{}},"text":{"4":{},"14":{},"24":{},"28":{},"32":{},"35":{},"36":{},"37":{},"39":{},"43":{},"50":{},"60":{},"65":{},"68":{},"71":{},"72":{},"73":{},"75":{},"91":{},"95":{},"96":{},"98":{},"99":{},"114":{},"117":{},"121":{},"122":{},"130":{},"145":{},"149":{},"151":{},"154":{},"155":{},"176":{},"184":{},"185":{},"196":{},"211":{},"215":{},"217":{},"220":{},"221":{},"242":{},"250":{},"251":{}},"component":{}}],["node.j",{"_index":3477,"title":{"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"name":{},"text":{"162":{},"163":{},"164":{},"165":{},"176":{},"181":{},"184":{},"185":{},"228":{},"229":{},"230":{},"231":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["node/express",{"_index":3068,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["node_modul",{"_index":1553,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["nodej",{"_index":2374,"title":{"105":{},"94-8":{},"148-8":{},"214-8":{}},"name":{},"text":{"94":{},"105":{},"148":{},"153":{},"178":{},"189":{},"214":{},"219":{},"244":{},"255":{}},"component":{}}],["nodejs/express",{"_index":1939,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["nodejs10",{"_index":1818,"title":{},"name":{"105":{}},"text":{"35":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"94":{},"95":{},"105":{},"114":{},"119":{},"121":{},"122":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["nodejs16",{"_index":3478,"title":{},"name":{"162":{},"228":{}},"text":{"162":{},"228":{}},"component":{}}],["nodejs18",{"_index":3483,"title":{},"name":{"163":{},"229":{}},"text":{"163":{},"229":{}},"component":{}}],["nodejs20",{"_index":3486,"title":{},"name":{"164":{},"230":{}},"text":{"164":{},"230":{}},"component":{}}],["nodejs20:4.x",{"_index":3658,"title":{},"name":{},"text":{"181":{}},"component":{}}],["nodejs22",{"_index":3488,"title":{},"name":{"165":{},"231":{}},"text":{"165":{},"231":{}},"component":{}}],["nodejs22:4.x",{"_index":3817,"title":{},"name":{},"text":{"247":{}},"component":{}}],["nodejs8",{"_index":1557,"title":{},"name":{},"text":{"28":{},"34":{},"36":{},"37":{},"38":{},"94":{},"148":{},"214":{}},"component":{}}],["nodeselector",{"_index":2178,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["non",{"_index":1530,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"115":{},"176":{},"177":{},"181":{},"242":{},"243":{},"247":{}},"component":{}}],["none",{"_index":484,"title":{},"name":{},"text":{"2":{},"25":{},"26":{},"32":{},"41":{},"61":{},"66":{},"68":{},"96":{},"110":{},"115":{},"117":{},"124":{},"125":{},"151":{},"153":{},"171":{},"177":{},"190":{},"191":{},"217":{},"219":{},"237":{},"240":{},"243":{},"256":{},"257":{}},"component":{}}],["nonumi",{"_index":801,"title":{},"name":{},"text":{"10":{}},"component":{}}],["normal",{"_index":332,"title":{},"name":{},"text":{"2":{},"14":{},"22":{},"41":{},"50":{},"58":{},"102":{},"127":{},"151":{},"193":{},"217":{}},"component":{}}],["nose",{"_index":1574,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["nosetest",{"_index":1583,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["not_built",{"_index":2549,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["notabl",{"_index":2373,"title":{"94-6":{},"148-6":{},"151-29":{},"214-6":{},"217-29":{}},"name":{},"text":{"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["note",{"_index":1076,"title":{"23":{},"59":{},"150-9":{},"216-9":{}},"name":{},"text":{"14":{},"16":{},"20":{},"27":{},"34":{},"39":{},"47":{},"50":{},"52":{},"56":{},"62":{},"70":{},"75":{},"76":{},"79":{},"80":{},"81":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"119":{},"121":{},"126":{},"128":{},"129":{},"130":{},"132":{},"133":{},"141":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"157":{},"166":{},"167":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"184":{},"185":{},"192":{},"194":{},"195":{},"196":{},"198":{},"199":{},"207":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"223":{},"232":{},"233":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"250":{},"251":{},"258":{}},"component":{}}],["notebook",{"_index":1611,"title":{"31":{},"67":{},"116":{},"150-11":{},"216-11":{}},"name":{"31":{},"67":{},"116":{}},"text":{"31":{},"39":{},"67":{},"75":{},"94":{},"95":{},"116":{},"123":{},"148":{},"149":{},"150":{},"178":{},"214":{},"215":{},"216":{},"244":{}},"component":{}}],["notes.txt",{"_index":3563,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["noth",{"_index":1417,"title":{},"name":{},"text":{"24":{},"60":{},"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["notic",{"_index":3003,"title":{},"name":{},"text":{"109":{},"130":{},"170":{},"196":{},"236":{}},"component":{}}],["notif",{"_index":124,"title":{"2-40":{},"41-40":{},"87-3":{},"140-3":{},"206-3":{}},"name":{},"text":{"14":{},"50":{},"87":{},"96":{},"140":{},"151":{},"182":{},"206":{},"217":{},"248":{}},"component":{}}],["notifi",{"_index":1094,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"96":{},"151":{},"217":{}},"component":{}}],["notifynotgreen",{"_index":1023,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["novemb",{"_index":2282,"title":{"83-14":{},"136-9":{},"136-14":{},"202-9":{},"202-14":{}},"name":{},"text":{},"component":{}}],["now",{"_index":247,"title":{},"name":{},"text":{"2":{},"5":{},"34":{},"41":{},"44":{},"47":{},"70":{},"77":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"98":{},"100":{},"119":{},"130":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"154":{},"156":{},"178":{},"196":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"220":{},"222":{},"244":{}},"component":{}}],["npm",{"_index":486,"title":{},"name":{},"text":{"2":{},"28":{},"34":{},"35":{},"36":{},"37":{},"38":{},"41":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"105":{},"114":{},"119":{},"121":{},"122":{},"162":{},"163":{},"164":{},"165":{},"176":{},"181":{},"184":{},"185":{},"228":{},"229":{},"230":{},"231":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["npmj",{"_index":485,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["null",{"_index":2191,"title":{},"name":{},"text":{"80":{},"133":{},"182":{},"199":{},"248":{}},"component":{}}],["number",{"_index":998,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"95":{},"96":{},"98":{},"99":{},"117":{},"149":{},"151":{},"154":{},"155":{},"182":{},"215":{},"217":{},"220":{},"221":{},"248":{}},"component":{}}],["nx",{"_index":504,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["o",{"_index":2844,"title":{},"name":{},"text":{"100":{},"156":{},"173":{},"222":{},"239":{}},"component":{}}],["oauth",{"_index":1421,"title":{},"name":{},"text":{"24":{},"60":{},"67":{},"69":{},"78":{},"94":{},"109":{},"116":{},"118":{},"131":{},"148":{},"170":{},"178":{},"179":{},"180":{},"197":{},"214":{},"236":{},"244":{},"245":{},"246":{}},"component":{}}],["oauth2",{"_index":1172,"title":{"20-3":{},"56-3":{},"101-12":{},"157-15":{},"223-15":{}},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["oauth2.properti",{"_index":1220,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["oauth2.user.roles.jsonpointerexpress",{"_index":1247,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["oauth2.user.roles.jsonpointerexpression=/claims/rol",{"_index":1224,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["oauth2.user.us",{"_index":2951,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["oauth2/openid",{"_index":1163,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["oauth2securityconfigur",{"_index":1193,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["object",{"_index":424,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"80":{},"95":{},"96":{},"99":{},"109":{},"133":{},"149":{},"151":{},"155":{},"170":{},"199":{},"215":{},"217":{},"221":{},"236":{}},"component":{}}],["oc",{"_index":556,"title":{},"name":{},"text":{"2":{},"6":{},"13":{},"22":{},"25":{},"41":{},"45":{},"49":{},"58":{},"66":{},"77":{},"79":{},"80":{},"85":{},"94":{},"96":{},"100":{},"102":{},"115":{},"127":{},"128":{},"130":{},"132":{},"133":{},"138":{},"148":{},"151":{},"156":{},"177":{},"193":{},"194":{},"196":{},"198":{},"199":{},"204":{},"214":{},"217":{},"222":{},"243":{}},"component":{}}],["occur",{"_index":2003,"title":{},"name":{},"text":{"60":{},"98":{},"100":{},"151":{},"154":{},"156":{},"217":{},"220":{},"222":{}},"component":{}}],["ocp",{"_index":548,"title":{"80-7":{},"133-7":{},"199-7":{}},"name":{},"text":{"2":{},"6":{},"8":{},"13":{},"14":{},"19":{},"39":{},"41":{},"45":{},"49":{},"50":{},"55":{},"75":{},"80":{},"100":{},"108":{},"123":{},"133":{},"156":{},"169":{},"186":{},"199":{},"222":{},"235":{},"253":{}},"component":{}}],["octob",{"_index":2278,"title":{"83-12":{},"136-12":{},"202-12":{}},"name":{},"text":{},"component":{}}],["od",{"_index":264,"title":{"7":{},"46":{},"85":{},"124":{},"125":{},"138":{},"190":{},"191":{},"204":{},"256":{},"257":{},"14-11":{},"14-13":{},"27-9":{},"50-11":{},"50-13":{},"62-9":{},"77-11":{},"78-6":{},"80-23":{},"95-1":{},"98-4":{},"98-5":{},"98-6":{},"111-9":{},"123-7":{},"126-4":{},"126-5":{},"126-6":{},"128-2":{},"128-3":{},"130-9":{},"131-6":{},"133-23":{},"136-2":{},"136-3":{},"149-1":{},"154-4":{},"154-5":{},"154-6":{},"154-7":{},"154-8":{},"154-9":{},"172-9":{},"186-8":{},"192-4":{},"192-5":{},"192-6":{},"194-2":{},"194-3":{},"196-9":{},"197-6":{},"199-23":{},"202-2":{},"202-3":{},"215-1":{},"220-4":{},"220-5":{},"220-6":{},"220-7":{},"220-8":{},"220-9":{},"238-9":{},"253-8":{},"258-4":{},"258-5":{},"258-6":{}},"name":{"124":{},"125":{},"190":{},"191":{},"256":{},"257":{}},"text":{"2":{},"5":{},"6":{},"7":{},"11":{},"14":{},"19":{},"21":{},"22":{},"25":{},"26":{},"41":{},"44":{},"45":{},"46":{},"50":{},"55":{},"57":{},"58":{},"60":{},"61":{},"66":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"109":{},"110":{},"115":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"186":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"253":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["ods.example.com",{"_index":2285,"title":{},"name":{},"text":{"83":{}},"component":{}}],["ods.git",{"_index":2907,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["ods/2.x",{"_index":2144,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["ods/:/opt/provis",{"_index":2113,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["ods/jenkin",{"_index":2422,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"103":{},"104":{},"105":{},"106":{},"107":{},"149":{},"150":{},"151":{},"155":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"181":{},"215":{},"216":{},"217":{},"221":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"247":{}},"component":{}}],["ods/mast",{"_index":2143,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["ods/od",{"_index":2815,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["ods_git_ref",{"_index":2786,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["ods_image_tag",{"_index":2785,"title":{},"name":{},"text":{"99":{},"128":{},"130":{},"155":{},"194":{},"196":{},"221":{}},"component":{}}],["ods_image_tag=2.x",{"_index":2987,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["ods_namespac",{"_index":2068,"title":{},"name":{},"text":{"77":{},"99":{},"130":{},"155":{},"196":{},"221":{}},"component":{}}],["ods_namespace=cd",{"_index":2120,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["odsbox",{"_index":2809,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["odsbox_quickstart",{"_index":2810,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["odscompon",{"_index":2805,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odscomponentfindopenshiftimageorels",{"_index":3244,"title":{"151-13":{},"217-13":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["odscomponentfindopenshiftimageorelse(context",{"_index":3264,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["odscomponentpipelin",{"_index":2329,"title":{},"name":{},"text":{"87":{},"95":{},"96":{},"97":{},"140":{},"149":{},"151":{},"152":{},"206":{},"215":{},"217":{},"218":{}},"component":{}}],["odscomponentstagebuildopenshiftimag",{"_index":2412,"title":{"96-17":{},"151-21":{},"217-21":{}},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["odscomponentstagebuildopenshiftimage(context",{"_index":2425,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagecopyimag",{"_index":3263,"title":{"151-32":{},"217-32":{}},"name":{},"text":{},"component":{}}],["odscomponentstageimportopenshiftimag",{"_index":2461,"title":{"96-18":{},"151-23":{},"217-23":{}},"name":{},"text":{"96":{}},"component":{}}],["odscomponentstageimportopenshiftimageorels",{"_index":2445,"title":{"96-19":{}},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"215":{},"216":{}},"component":{}}],["odscomponentstageimportopenshiftimageorelse(context",{"_index":2462,"title":{},"name":{},"text":{"96":{}},"component":{}}],["odscomponentstagerolloutopenshiftdeploy",{"_index":2413,"title":{"96-20":{},"151-25":{},"217-25":{}},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["odscomponentstagerolloutopenshiftdeployment(context",{"_index":2426,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagescanwithaqua",{"_index":3261,"title":{"151-16":{},"217-16":{}},"name":{},"text":{},"component":{}}],["odscomponentstagescanwithsnyk",{"_index":2411,"title":{"96-16":{},"151-19":{},"217-19":{}},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagescanwithsnyk(context",{"_index":2557,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["odscomponentstagescanwithsonar",{"_index":2352,"title":{"96-15":{},"151-14":{},"217-14":{}},"name":{},"text":{"93":{},"95":{},"96":{},"121":{},"147":{},"149":{},"151":{},"184":{},"213":{},"215":{},"217":{},"250":{}},"component":{}}],["odscomponentstagescanwithsonar(context",{"_index":2424,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagescanwithtrivi",{"_index":3262,"title":{"151-17":{},"217-17":{}},"name":{},"text":{},"component":{}}],["odscomponentstagescanwithtrivy(context",{"_index":3291,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["odscomponentstageuploadtonexu",{"_index":2414,"title":{"96-21":{},"151-30":{},"217-30":{}},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["odsgitref",{"_index":2764,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsimagetag",{"_index":2633,"title":{},"name":{},"text":{"98":{},"99":{},"154":{},"155":{},"220":{},"221":{}},"component":{}}],["odsnamespac",{"_index":2762,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsnamespace}/jenkin",{"_index":2769,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsorchestrationpipelin",{"_index":2407,"title":{},"name":{},"text":{"95":{},"97":{},"98":{},"149":{},"152":{},"154":{},"215":{},"218":{},"220":{}},"component":{}}],["odspipelin",{"_index":947,"title":{},"name":{"15":{},"51":{}},"text":{"14":{},"15":{},"50":{},"51":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["odsquickstarterpipelin",{"_index":2406,"title":{},"name":{},"text":{"95":{},"97":{},"99":{},"149":{},"152":{},"155":{},"215":{},"218":{},"221":{}},"component":{}}],["odsquickstarterstagecopyfil",{"_index":2757,"title":{"99-7":{},"155-7":{},"221-7":{}},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagecopyfiles(context",{"_index":2771,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagecreateopenshiftresourc",{"_index":2758,"title":{"99-8":{},"155-8":{},"221-8":{}},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagecreateopenshiftresources(context",{"_index":2776,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstageforkod",{"_index":2761,"title":{"99-11":{},"155-11":{},"221-11":{}},"name":{},"text":{},"component":{}}],["odsquickstarterstagerenderjenkinsfil",{"_index":2759,"title":{"99-9":{},"155-9":{},"221-9":{}},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["odsquickstarterstagerenderjenkinsfile(context",{"_index":2777,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagerendersonarproperti",{"_index":2760,"title":{"99-10":{},"155-10":{},"221-10":{}},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["odsquickstarterstagerendersonarproperties(context",{"_index":2778,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstgarterpipelin",{"_index":2779,"title":{},"name":{},"text":{"99":{}},"component":{}}],["odssharedlibvers",{"_index":1055,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["of=mi",{"_index":3404,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["offer",{"_index":705,"title":{},"name":{},"text":{"6":{},"14":{},"15":{},"32":{},"45":{},"47":{},"50":{},"51":{},"68":{},"87":{},"88":{},"95":{},"97":{},"117":{},"136":{},"140":{},"141":{},"149":{},"152":{},"202":{},"206":{},"207":{},"215":{},"218":{}},"component":{}}],["offic",{"_index":2989,"title":{"109-6":{},"170-6":{},"236-6":{}},"name":{},"text":{},"component":{}}],["offici",{"_index":690,"title":{"123-2":{},"186-2":{},"253-2":{}},"name":{},"text":{"6":{},"30":{},"45":{},"64":{},"81":{},"86":{},"95":{},"109":{},"113":{},"123":{},"136":{},"137":{},"139":{},"142":{},"149":{},"150":{},"151":{},"170":{},"174":{},"175":{},"181":{},"186":{},"202":{},"203":{},"205":{},"208":{},"215":{},"216":{},"217":{},"236":{},"240":{},"241":{},"247":{},"253":{}},"component":{}}],["oft",{"_index":444,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["oidc",{"_index":3007,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["ok",{"_index":2884,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["okd",{"_index":566,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["okhttp3",{"_index":1205,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["okttp3",{"_index":1198,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["old",{"_index":2119,"title":{"83-12":{},"83-13":{},"83-14":{},"136-12":{},"136-13":{},"136-14":{},"202-12":{},"202-13":{},"202-14":{}},"name":{},"text":{"79":{},"95":{},"96":{},"132":{},"149":{},"151":{},"198":{},"215":{},"217":{}},"component":{}}],["older",{"_index":1608,"title":{},"name":{"80":{},"133":{},"199":{}},"text":{"30":{},"64":{},"173":{}},"component":{}}],["on",{"_index":125,"title":{"2-48":{},"41-48":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"12":{},"14":{},"18":{},"21":{},"32":{},"36":{},"41":{},"44":{},"45":{},"47":{},"50":{},"54":{},"57":{},"68":{},"72":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"93":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"108":{},"109":{},"112":{},"117":{},"122":{},"123":{},"126":{},"127":{},"128":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"141":{},"147":{},"149":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"158":{},"169":{},"170":{},"173":{},"174":{},"178":{},"180":{},"181":{},"185":{},"186":{},"189":{},"192":{},"193":{},"194":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"207":{},"213":{},"215":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"224":{},"235":{},"236":{},"239":{},"240":{},"244":{},"246":{},"247":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["onc",{"_index":682,"title":{},"name":{},"text":{"5":{},"6":{},"8":{},"14":{},"16":{},"29":{},"32":{},"36":{},"37":{},"38":{},"44":{},"45":{},"47":{},"50":{},"52":{},"60":{},"63":{},"68":{},"72":{},"73":{},"74":{},"77":{},"80":{},"81":{},"82":{},"87":{},"88":{},"96":{},"98":{},"100":{},"112":{},"117":{},"122":{},"127":{},"128":{},"130":{},"133":{},"135":{},"137":{},"140":{},"141":{},"142":{},"146":{},"150":{},"151":{},"154":{},"156":{},"173":{},"180":{},"185":{},"193":{},"194":{},"196":{},"199":{},"201":{},"203":{},"206":{},"207":{},"208":{},"212":{},"216":{},"217":{},"220":{},"222":{},"239":{},"246":{},"251":{}},"component":{}}],["ongo",{"_index":3158,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["onlin",{"_index":475,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["onlycheckprecondit",{"_index":2891,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["onlycheckpreconditions=tru",{"_index":2807,"title":{"100-10":{},"156-10":{},"222-10":{}},"name":{},"text":{},"component":{}}],["opedevstack",{"_index":2812,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["open",{"_index":320,"title":{},"name":{},"text":{"2":{},"4":{},"5":{},"13":{},"27":{},"35":{},"36":{},"37":{},"41":{},"43":{},"44":{},"49":{},"62":{},"71":{},"72":{},"73":{},"78":{},"81":{},"83":{},"91":{},"93":{},"96":{},"111":{},"121":{},"122":{},"131":{},"136":{},"145":{},"147":{},"151":{},"158":{},"172":{},"174":{},"178":{},"184":{},"185":{},"197":{},"202":{},"211":{},"213":{},"217":{},"224":{},"238":{},"240":{},"244":{},"250":{},"251":{}},"component":{}}],["opendevstack",{"_index":7,"title":{"5":{},"39":{},"44":{},"75":{},"77":{},"80":{},"82":{},"83":{},"94":{},"95":{},"123":{},"130":{},"133":{},"135":{},"136":{},"148":{},"149":{},"150":{},"186":{},"196":{},"199":{},"201":{},"202":{},"214":{},"215":{},"216":{},"253":{},"2-25":{},"2-33":{},"2-57":{},"2-69":{},"5-1":{},"5-2":{},"5-4":{},"5-5":{},"39-9":{},"41-25":{},"41-33":{},"41-57":{},"41-69":{},"44-1":{},"44-2":{},"44-4":{},"44-5":{},"75-9":{},"77-10":{},"78-3":{},"79-2":{},"80-1":{},"80-2":{},"81-1":{},"81-3":{},"83-1":{},"83-2":{},"83-5":{},"130-7":{},"131-3":{},"132-2":{},"133-1":{},"133-2":{},"136-1":{},"136-4":{},"196-7":{},"197-3":{},"198-2":{},"199-1":{},"199-2":{},"202-1":{},"202-4":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"6":{},"19":{},"20":{},"22":{},"25":{},"27":{},"39":{},"40":{},"41":{},"43":{},"44":{},"45":{},"47":{},"55":{},"56":{},"58":{},"62":{},"66":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"86":{},"88":{},"91":{},"94":{},"95":{},"97":{},"98":{},"100":{},"101":{},"102":{},"108":{},"111":{},"115":{},"126":{},"127":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"139":{},"141":{},"145":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"156":{},"157":{},"158":{},"169":{},"172":{},"177":{},"189":{},"192":{},"193":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"205":{},"207":{},"211":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"222":{},"223":{},"224":{},"235":{},"238":{},"243":{},"255":{},"258":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"209":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{}}}],["opendevstack.admin",{"_index":312,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["opendevstack/od",{"_index":2903,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["opendevstack](https://www.opendevstack.org",{"_index":3762,"title":{},"name":{},"text":{"240":{}},"component":{}}],["openid",{"_index":314,"title":{},"name":{},"text":{"2":{},"41":{},"78":{},"131":{},"197":{}},"component":{}}],["openidc",{"_index":3001,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["openjdk",{"_index":3473,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["openresti",{"_index":829,"title":{"12":{}},"name":{"12":{}},"text":{"11":{},"12":{},"109":{},"170":{},"236":{}},"component":{}}],["openresty/nginx",{"_index":3508,"title":{},"name":{},"text":{"170":{},"236":{}},"component":{}}],["openshift",{"_index":155,"title":{"24":{},"60":{},"153":{},"219":{},"14-15":{},"24-3":{},"50-15":{},"60-3":{},"77-8":{},"77-10":{},"79-6":{},"96-9":{},"98-24":{},"100-2":{},"127-2":{},"130-7":{},"132-6":{},"151-9":{},"154-29":{},"156-2":{},"193-2":{},"196-7":{},"198-6":{},"217-9":{},"220-29":{},"222-2":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"13":{},"14":{},"15":{},"18":{},"19":{},"21":{},"22":{},"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"42":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"51":{},"54":{},"55":{},"57":{},"58":{},"60":{},"62":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"111":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"123":{},"126":{},"127":{},"130":{},"132":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"144":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"196":{},"198":{},"199":{},"202":{},"204":{},"205":{},"206":{},"207":{},"210":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["openshift.default.svc.cluster.loc",{"_index":778,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["openshift/template.yml",{"_index":2496,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["openshift_api_host",{"_index":777,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["openshift_api_url",{"_index":1054,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["openshiftbuildtimeout",{"_index":1059,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["openshiftdir",{"_index":2567,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["openshifthost",{"_index":1052,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["openshiftifi",{"_index":1460,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["openshiftproject",{"_index":669,"title":{},"name":{},"text":{"5":{},"22":{},"44":{},"58":{}},"component":{}}],["openshiftrollouttimeout",{"_index":2474,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["openshiftrollouttimeoutminut",{"_index":3425,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["openshiftrollouttimeoutretri",{"_index":3427,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["opensourc",{"_index":3255,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["openssl",{"_index":3760,"title":{"240-10":{},"240-12":{},"240-13":{},"240-14":{},"240-15":{}},"name":{},"text":{"240":{}},"component":{}}],["oper",{"_index":265,"title":{},"name":{},"text":{"2":{},"19":{},"24":{},"28":{},"32":{},"41":{},"55":{},"60":{},"65":{},"68":{},"80":{},"98":{},"100":{},"114":{},"117":{},"133":{},"153":{},"154":{},"156":{},"176":{},"199":{},"219":{},"220":{},"222":{},"242":{}},"component":{}}],["opm",{"_index":2997,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["opposit",{"_index":2707,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["opt",{"_index":2394,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["opt/app",{"_index":2005,"title":{},"name":{},"text":{"67":{},"116":{},"178":{},"244":{}},"component":{}}],["opt/provision/histori",{"_index":2115,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["opt/provision/history/log",{"_index":1298,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["opt/sonarqube/data/es6",{"_index":2129,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["optim",{"_index":2629,"title":{"98-13":{},"154-16":{},"220-16":{}},"name":{},"text":{"121":{},"184":{},"250":{}},"component":{}}],["option",{"_index":96,"title":{"2-18":{},"41-18":{},"96-2":{},"99-2":{},"100-10":{},"127-2":{},"127-3":{},"150-6":{},"151-2":{},"151-15":{},"151-18":{},"151-20":{},"151-22":{},"151-24":{},"151-28":{},"151-31":{},"151-33":{},"155-2":{},"156-10":{},"193-2":{},"193-3":{},"216-6":{},"217-2":{},"217-15":{},"217-18":{},"217-20":{},"217-22":{},"217-24":{},"217-28":{},"217-31":{},"217-33":{},"221-2":{},"222-10":{}},"name":{},"text":{"2":{},"14":{},"18":{},"19":{},"20":{},"22":{},"27":{},"41":{},"47":{},"50":{},"54":{},"55":{},"56":{},"58":{},"62":{},"78":{},"80":{},"83":{},"87":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"114":{},"127":{},"131":{},"133":{},"136":{},"140":{},"141":{},"147":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"172":{},"176":{},"193":{},"197":{},"199":{},"202":{},"206":{},"207":{},"213":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"238":{},"242":{}},"component":{}}],["optionali",{"_index":1500,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["orchestr",{"_index":1136,"title":{"98":{},"154":{},"220":{}},"name":{"98":{},"154":{},"220":{}},"text":{"19":{},"21":{},"55":{},"57":{},"83":{},"95":{},"97":{},"98":{},"100":{},"126":{},"136":{},"149":{},"150":{},"152":{},"153":{},"154":{},"156":{},"192":{},"202":{},"215":{},"216":{},"218":{},"219":{},"220":{},"222":{},"258":{}},"component":{}}],["order",{"_index":386,"title":{},"name":{},"text":{"2":{},"12":{},"32":{},"39":{},"41":{},"47":{},"68":{},"75":{},"76":{},"77":{},"81":{},"88":{},"94":{},"98":{},"100":{},"101":{},"108":{},"109":{},"117":{},"120":{},"126":{},"127":{},"129":{},"141":{},"146":{},"148":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"170":{},"180":{},"182":{},"183":{},"192":{},"193":{},"195":{},"207":{},"212":{},"214":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"236":{},"246":{},"248":{},"249":{},"258":{}},"component":{}}],["order(ordered.highest_preced",{"_index":1191,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org",{"_index":638,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["org.hibernate.dialect.postgresqldialect",{"_index":307,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["org.ods.services.bitbucketservic",{"_index":2542,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["org.ods.services.gitservice.mergedissueid(context.projectid",{"_index":2525,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["org.ods.services.serviceregistri",{"_index":2541,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["org.opendevstack",{"_index":1035,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["org.opendevstack.${context.projectid",{"_index":3345,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["org.opendevstack.${projectid",{"_index":2620,"title":{},"name":{},"text":{"96":{}},"component":{}}],["org.opendevstack.provision.authentication.crowd",{"_index":1178,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.authentication.crowd.crowdsecurityconfiguration.java",{"_index":1179,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.authentication.oauth2",{"_index":1189,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.authentication.oauth2.oauth2securityconfiguration.java",{"_index":1190,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.services.baseserviceadapter#authenticatedcal",{"_index":1275,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["org.postgresql.driv",{"_index":302,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["org/mi",{"_index":2639,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["org/phoenix",{"_index":2655,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["organ",{"_index":1619,"title":{"82-2":{},"135-2":{},"201-2":{}},"name":{},"text":{"31":{},"32":{},"67":{},"68":{},"116":{},"117":{},"178":{},"244":{}},"component":{}}],["organis",{"_index":1079,"title":{"98-19":{},"154-22":{},"220-22":{}},"name":{},"text":{"14":{},"50":{},"81":{},"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["origin",{"_index":2018,"title":{},"name":{},"text":{"76":{},"77":{},"80":{},"81":{},"97":{},"98":{},"126":{},"128":{},"129":{},"130":{},"133":{},"152":{},"154":{},"192":{},"194":{},"195":{},"196":{},"199":{},"218":{},"220":{},"258":{}},"component":{}}],["origin/2.x",{"_index":2228,"title":{},"name":{},"text":{"81":{}},"component":{}}],["os",{"_index":3793,"title":{},"name":{},"text":{"240":{}},"component":{}}],["os,librari",{"_index":3302,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["other",{"_index":2677,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["otherwis",{"_index":1416,"title":{},"name":{},"text":{"24":{},"27":{},"32":{},"47":{},"60":{},"62":{},"68":{},"80":{},"88":{},"94":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"117":{},"130":{},"133":{},"141":{},"148":{},"149":{},"151":{},"154":{},"157":{},"169":{},"172":{},"196":{},"199":{},"207":{},"214":{},"215":{},"217":{},"220":{},"223":{},"235":{},"238":{}},"component":{}}],["ouput",{"_index":2497,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["out",{"_index":146,"title":{"2-69":{},"41-69":{}},"name":{},"text":{"2":{},"19":{},"20":{},"32":{},"36":{},"37":{},"38":{},"39":{},"41":{},"55":{},"56":{},"68":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"83":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"115":{},"117":{},"122":{},"123":{},"128":{},"130":{},"136":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"177":{},"185":{},"186":{},"194":{},"196":{},"202":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"240":{},"243":{},"251":{},"253":{}},"component":{}}],["outdat",{"_index":2007,"title":{},"name":{},"text":{"76":{},"96":{},"129":{},"151":{},"195":{},"217":{}},"component":{}}],["outdir",{"_index":3067,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["outlin",{"_index":2116,"title":{},"name":{},"text":{"79":{},"95":{},"98":{},"128":{},"132":{},"149":{},"154":{},"194":{},"198":{},"215":{},"220":{}},"component":{}}],["output",{"_index":1556,"title":{},"name":{},"text":{"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"63":{},"65":{},"71":{},"72":{},"73":{},"74":{},"80":{},"98":{},"100":{},"113":{},"114":{},"121":{},"122":{},"133":{},"154":{},"156":{},"174":{},"175":{},"176":{},"184":{},"185":{},"199":{},"220":{},"222":{},"240":{},"241":{},"242":{},"250":{},"251":{}},"component":{}}],["outsid",{"_index":783,"title":{},"name":{},"text":{"8":{},"32":{},"47":{},"68":{},"88":{},"95":{},"96":{},"117":{},"141":{},"149":{},"151":{},"207":{},"215":{},"217":{}},"component":{}}],["over",{"_index":1622,"title":{},"name":{},"text":{"31":{},"34":{},"70":{},"119":{},"150":{},"172":{},"173":{},"175":{},"176":{},"216":{},"238":{},"239":{},"241":{},"242":{}},"component":{}}],["overcom",{"_index":2744,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["overflood",{"_index":3683,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["overlap",{"_index":3183,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["overrid",{"_index":1506,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["overridden",{"_index":3396,"title":{},"name":{},"text":{"153":{},"157":{},"219":{},"223":{}},"component":{}}],["overview",{"_index":343,"title":{"22":{},"58":{},"39-1":{},"75-1":{},"123-1":{},"136-3":{},"153-1":{},"186-1":{},"189-1":{},"202-3":{},"219-1":{},"253-1":{},"255-1":{}},"name":{},"text":{"2":{},"39":{},"41":{},"75":{},"123":{},"186":{},"253":{}},"component":{}}],["overwrit",{"_index":1153,"title":{"101-7":{},"157-10":{},"223-10":{}},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["overwritten",{"_index":2926,"title":{},"name":{},"text":{"101":{},"157":{},"181":{},"223":{},"247":{}},"component":{}}],["owasp",{"_index":720,"title":{},"name":{},"text":{"6":{},"7":{},"11":{},"12":{},"45":{},"46":{}},"component":{}}],["owasp_modsecurity_crs_version=\"3.0.2",{"_index":880,"title":{},"name":{},"text":{"12":{}},"component":{}}],["own",{"_index":2024,"title":{},"name":{},"text":{"76":{},"81":{},"128":{},"129":{},"194":{},"195":{}},"component":{}}],["owner",{"_index":2127,"title":{},"name":{},"text":{"79":{},"101":{},"128":{},"132":{},"157":{},"194":{},"198":{},"223":{}},"component":{}}],["p",{"_index":2016,"title":{},"name":{},"text":{"76":{},"77":{},"93":{},"96":{},"98":{},"129":{},"130":{},"137":{},"142":{},"146":{},"147":{},"151":{},"154":{},"181":{},"195":{},"196":{},"203":{},"208":{},"212":{},"213":{},"217":{},"220":{},"247":{}},"component":{}}],["packag",{"_index":228,"title":{"161-4":{},"227-4":{},"234-4":{}},"name":{},"text":{"2":{},"19":{},"24":{},"26":{},"28":{},"29":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"41":{},"55":{},"60":{},"61":{},"63":{},"65":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"77":{},"95":{},"96":{},"98":{},"99":{},"100":{},"103":{},"110":{},"112":{},"114":{},"117":{},"119":{},"121":{},"122":{},"130":{},"149":{},"151":{},"154":{},"155":{},"156":{},"159":{},"161":{},"171":{},"173":{},"174":{},"176":{},"177":{},"179":{},"180":{},"184":{},"185":{},"196":{},"215":{},"217":{},"220":{},"221":{},"222":{},"225":{},"237":{},"239":{},"240":{},"242":{},"243":{},"245":{},"246":{},"250":{},"251":{}},"component":{}}],["package.json",{"_index":1538,"title":{},"name":{},"text":{"28":{},"34":{},"35":{},"36":{},"37":{},"38":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"114":{},"119":{},"121":{},"122":{},"176":{},"181":{},"184":{},"185":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["package_nam",{"_index":2784,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["packagenam",{"_index":2783,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["page",{"_index":194,"title":{},"name":{},"text":{"2":{},"14":{},"36":{},"41":{},"50":{},"72":{},"76":{},"79":{},"83":{},"96":{},"100":{},"101":{},"120":{},"122":{},"129":{},"132":{},"136":{},"151":{},"156":{},"157":{},"183":{},"189":{},"195":{},"198":{},"202":{},"217":{},"222":{},"223":{},"249":{},"255":{}},"component":{}}],["pagenotfound.j",{"_index":1860,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["pahs",{"_index":759,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["pain",{"_index":1194,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["pair",{"_index":1258,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"151":{},"157":{},"217":{},"223":{}},"component":{}}],["panda",{"_index":1665,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"180":{},"246":{}},"component":{}}],["paragraph",{"_index":318,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["parallel",{"_index":2627,"title":{"98-11":{},"126-11":{},"154-14":{},"192-11":{},"220-14":{},"258-11":{}},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["param",{"_index":1097,"title":{},"name":{},"text":{"14":{},"18":{},"47":{},"50":{},"54":{},"77":{},"80":{},"88":{},"98":{},"100":{},"108":{},"130":{},"133":{},"141":{},"154":{},"156":{},"169":{},"196":{},"199":{},"207":{},"220":{},"222":{},"235":{}},"component":{}}],["param=valu",{"_index":2732,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["paramet",{"_index":786,"title":{"47-4":{},"88-4":{},"141-4":{},"207-4":{}},"name":{},"text":{"8":{},"19":{},"22":{},"34":{},"39":{},"47":{},"55":{},"58":{},"70":{},"75":{},"77":{},"79":{},"80":{},"87":{},"88":{},"93":{},"96":{},"98":{},"99":{},"100":{},"119":{},"126":{},"128":{},"130":{},"132":{},"133":{},"140":{},"141":{},"147":{},"151":{},"153":{},"154":{},"155":{},"156":{},"181":{},"182":{},"187":{},"188":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"206":{},"207":{},"213":{},"217":{},"219":{},"220":{},"221":{},"222":{},"247":{},"248":{},"252":{},"254":{},"255":{},"258":{}},"component":{}}],["parameter",{"_index":2750,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["parametr",{"_index":2722,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["pars",{"_index":2533,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["part",{"_index":4,"title":{"5-2":{},"44-2":{},"83-5":{},"136-4":{},"202-4":{}},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"22":{},"40":{},"41":{},"45":{},"47":{},"50":{},"58":{},"76":{},"80":{},"85":{},"88":{},"94":{},"96":{},"98":{},"101":{},"126":{},"129":{},"133":{},"136":{},"138":{},"141":{},"142":{},"148":{},"151":{},"153":{},"154":{},"157":{},"189":{},"192":{},"195":{},"199":{},"202":{},"204":{},"207":{},"208":{},"214":{},"217":{},"219":{},"220":{},"223":{},"255":{},"258":{}},"component":{}}],["parti",{"_index":766,"title":{"20-4":{},"56-4":{},"101-14":{},"157-17":{},"223-17":{}},"name":{},"text":{"7":{},"14":{},"16":{},"20":{},"27":{},"46":{},"50":{},"52":{},"56":{},"62":{},"85":{},"96":{},"101":{},"111":{},"138":{},"151":{},"157":{},"172":{},"204":{},"217":{},"223":{},"238":{}},"component":{}}],["partial",{"_index":2628,"title":{"98-12":{},"154-15":{},"220-15":{}},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["particular",{"_index":1252,"title":{},"name":{},"text":{"20":{},"56":{},"95":{},"101":{},"149":{},"157":{},"215":{},"223":{}},"component":{}}],["partof",{"_index":3379,"title":{"189-9":{},"255-9":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["pass",{"_index":508,"title":{},"name":{},"text":{"2":{},"8":{},"14":{},"22":{},"25":{},"36":{},"37":{},"41":{},"47":{},"50":{},"58":{},"66":{},"72":{},"73":{},"88":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"115":{},"122":{},"141":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"177":{},"180":{},"181":{},"185":{},"207":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"243":{},"246":{},"247":{},"251":{}},"component":{}}],["password",{"_index":243,"title":{},"name":{},"text":{"2":{},"11":{},"13":{},"14":{},"20":{},"22":{},"32":{},"41":{},"49":{},"50":{},"56":{},"58":{},"68":{},"77":{},"78":{},"80":{},"92":{},"95":{},"96":{},"98":{},"101":{},"117":{},"130":{},"131":{},"133":{},"146":{},"149":{},"151":{},"154":{},"157":{},"196":{},"197":{},"199":{},"212":{},"215":{},"217":{},"220":{},"223":{}},"component":{}}],["past",{"_index":409,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["patch",{"_index":1621,"title":{"80-26":{},"133-26":{},"199-26":{}},"name":{},"text":{"31":{},"80":{},"128":{},"133":{},"194":{},"199":{}},"component":{}}],["path",{"_index":170,"title":{},"name":{},"text":{"2":{},"8":{},"20":{},"31":{},"41":{},"47":{},"56":{},"67":{},"80":{},"88":{},"93":{},"96":{},"98":{},"101":{},"115":{},"116":{},"126":{},"128":{},"130":{},"133":{},"141":{},"147":{},"151":{},"154":{},"157":{},"177":{},"178":{},"192":{},"194":{},"196":{},"199":{},"207":{},"213":{},"217":{},"220":{},"223":{},"243":{},"244":{},"258":{}},"component":{}}],["paths=al",{"_index":3304,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["patient",{"_index":291,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["pattern",{"_index":2650,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["paus",{"_index":510,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"219":{}},"component":{}}],["payload",{"_index":1733,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"88":{},"100":{},"101":{},"117":{},"141":{},"156":{},"157":{},"207":{},"222":{},"223":{}},"component":{}}],["payload.json",{"_index":2824,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["peopl",{"_index":642,"title":{},"name":{},"text":{"5":{},"22":{},"44":{},"58":{},"83":{},"124":{},"125":{},"190":{},"191":{},"256":{},"257":{}},"component":{}}],["pep",{"_index":1584,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["pep8",{"_index":1587,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["per",{"_index":985,"title":{"101-7":{},"157-10":{},"223-10":{}},"name":{},"text":{"14":{},"16":{},"20":{},"21":{},"27":{},"47":{},"50":{},"52":{},"56":{},"57":{},"62":{},"80":{},"88":{},"96":{},"98":{},"101":{},"111":{},"133":{},"141":{},"150":{},"151":{},"153":{},"154":{},"157":{},"172":{},"199":{},"207":{},"216":{},"217":{},"219":{},"220":{},"223":{},"238":{}},"component":{}}],["perform",{"_index":859,"title":{"12-4":{},"13-4":{},"49-4":{},"98-13":{},"154-16":{},"220-16":{}},"name":{},"text":{"12":{},"13":{},"32":{},"49":{},"68":{},"79":{},"83":{},"93":{},"96":{},"98":{},"117":{},"132":{},"136":{},"147":{},"150":{},"151":{},"153":{},"154":{},"174":{},"181":{},"189":{},"198":{},"202":{},"213":{},"216":{},"217":{},"219":{},"220":{},"240":{},"247":{},"255":{}},"component":{}}],["periodsecond",{"_index":2608,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["permiss",{"_index":116,"title":{"2-32":{},"2-43":{},"2-56":{},"4-3":{},"22-3":{},"41-32":{},"41-43":{},"41-56":{},"43-3":{},"58-3":{},"91-3":{},"101-2":{},"101-4":{},"101-5":{},"101-7":{},"145-3":{},"157-2":{},"157-3":{},"157-7":{},"157-8":{},"157-10":{},"211-3":{},"223-2":{},"223-3":{},"223-7":{},"223-8":{},"223-10":{}},"name":{},"text":{"2":{},"4":{},"22":{},"29":{},"41":{},"43":{},"58":{},"63":{},"77":{},"79":{},"80":{},"81":{},"91":{},"98":{},"101":{},"112":{},"130":{},"132":{},"133":{},"145":{},"157":{},"158":{},"173":{},"196":{},"198":{},"199":{},"211":{},"223":{},"224":{},"239":{}},"component":{}}],["permissionset",{"_index":1326,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["persist",{"_index":442,"title":{},"name":{},"text":{"2":{},"14":{},"31":{},"41":{},"50":{},"67":{},"96":{},"99":{},"116":{},"151":{},"153":{},"155":{},"178":{},"189":{},"217":{},"219":{},"221":{},"244":{},"255":{}},"component":{}}],["person",{"_index":512,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["perspect",{"_index":2293,"title":{},"name":{},"text":{"83":{},"128":{},"136":{},"194":{},"202":{}},"component":{}}],["phase",{"_index":1752,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"150":{},"216":{}},"component":{}}],["philosophi",{"_index":2262,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["phoenix",{"_index":2637,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["pick",{"_index":674,"title":{},"name":{},"text":{"5":{},"6":{},"22":{},"39":{},"44":{},"45":{},"58":{},"75":{},"79":{},"81":{},"85":{},"98":{},"102":{},"108":{},"114":{},"128":{},"132":{},"138":{},"154":{},"169":{},"176":{},"194":{},"198":{},"204":{},"220":{},"235":{},"242":{}},"component":{}}],["pictur",{"_index":3195,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["piec",{"_index":3738,"title":{},"name":{},"text":{"189":{},"240":{},"255":{}},"component":{}}],["pin",{"_index":1908,"title":{},"name":{},"text":{"38":{},"74":{},"83":{},"136":{},"202":{}},"component":{}}],["pip",{"_index":1578,"title":{},"name":{},"text":{"29":{},"63":{},"95":{},"106":{},"112":{},"149":{},"166":{},"173":{},"178":{},"180":{},"215":{},"232":{},"239":{},"244":{},"246":{}},"component":{}}],["pipelin",{"_index":679,"title":{"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{},"14-13":{},"50-13":{},"93-2":{},"95-4":{},"96-2":{},"96-3":{},"96-11":{},"99-2":{},"99-3":{},"147-2":{},"149-4":{},"151-2":{},"151-3":{},"151-11":{},"155-2":{},"155-3":{},"213-2":{},"215-4":{},"217-2":{},"217-3":{},"217-11":{},"221-2":{},"221-3":{}},"name":{"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"text":{"5":{},"6":{},"8":{},"14":{},"15":{},"22":{},"24":{},"27":{},"28":{},"29":{},"31":{},"32":{},"33":{},"36":{},"37":{},"44":{},"45":{},"47":{},"50":{},"51":{},"58":{},"60":{},"62":{},"63":{},"65":{},"67":{},"68":{},"69":{},"72":{},"73":{},"77":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"108":{},"111":{},"112":{},"114":{},"116":{},"117":{},"118":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"172":{},"173":{},"174":{},"176":{},"178":{},"179":{},"182":{},"184":{},"185":{},"186":{},"187":{},"188":{},"192":{},"194":{},"196":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"238":{},"239":{},"240":{},"242":{},"244":{},"245":{},"248":{},"250":{},"251":{},"252":{},"253":{},"254":{},"258":{}},"component":{}}],["pipeline.git",{"_index":2652,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["pipeline.html#_odscomponentstagescanwithsonar",{"_index":3224,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["pipeline.yml",{"_index":2174,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["pipeline/stag",{"_index":2427,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["pkgtype",{"_index":3741,"title":{},"name":{},"text":{"217":{}},"component":{}}],["plabyook",{"_index":66,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["place",{"_index":445,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"26":{},"41":{},"44":{},"50":{},"61":{},"80":{},"83":{},"96":{},"99":{},"100":{},"108":{},"110":{},"115":{},"128":{},"133":{},"151":{},"153":{},"155":{},"156":{},"169":{},"171":{},"177":{},"194":{},"199":{},"217":{},"219":{},"221":{},"222":{},"235":{},"237":{},"243":{}},"component":{}}],["plain",{"_index":677,"title":{"25":{},"66":{},"115":{},"177":{},"243":{}},"name":{"25":{},"61":{},"66":{},"110":{},"115":{},"171":{},"177":{},"237":{},"243":{}},"text":{"5":{},"25":{},"44":{},"66":{},"83":{},"100":{},"101":{},"114":{},"115":{},"150":{},"156":{},"157":{},"158":{},"176":{},"177":{},"216":{},"222":{},"223":{},"224":{},"242":{},"243":{}},"component":{}}],["plan",{"_index":2300,"title":{},"name":{},"text":{"83":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["platform",{"_index":254,"title":{},"name":{},"text":{"2":{},"13":{},"36":{},"41":{},"49":{},"72":{},"77":{},"93":{},"109":{},"122":{},"130":{},"136":{},"147":{},"151":{},"157":{},"170":{},"185":{},"196":{},"202":{},"213":{},"217":{},"223":{},"236":{},"251":{}},"component":{}}],["platform/3.11/rest_api/api",{"_index":1975,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["platform/latest/applications/deployments/what",{"_index":3232,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["platformruntim",{"_index":2866,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["play",{"_index":3043,"title":{"113":{},"175":{},"241":{}},"name":{"113":{},"175":{},"241":{}},"text":{"113":{},"136":{},"151":{},"153":{},"175":{},"189":{},"202":{},"217":{},"219":{},"241":{},"255":{}},"component":{}}],["playbook",{"_index":1,"title":{"1-1":{},"4-4":{},"40-1":{},"43-4":{},"76-1":{},"91-4":{},"129-1":{},"145-4":{},"195-1":{},"211-4":{}},"name":{},"text":{"1":{},"4":{},"40":{},"43":{},"76":{},"82":{},"83":{},"91":{},"129":{},"135":{},"145":{},"195":{},"201":{},"211":{}},"component":{}}],["playframework",{"_index":3042,"title":{"113":{},"175":{},"241":{}},"name":{},"text":{},"component":{}}],["pleas",{"_index":251,"title":{},"name":{},"text":{"2":{},"13":{},"14":{},"27":{},"29":{},"31":{},"32":{},"34":{},"38":{},"39":{},"41":{},"49":{},"50":{},"62":{},"63":{},"67":{},"68":{},"70":{},"74":{},"75":{},"76":{},"77":{},"81":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"109":{},"111":{},"116":{},"117":{},"119":{},"121":{},"122":{},"129":{},"130":{},"134":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"162":{},"163":{},"164":{},"165":{},"170":{},"172":{},"178":{},"180":{},"181":{},"184":{},"185":{},"195":{},"196":{},"200":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"228":{},"229":{},"230":{},"231":{},"236":{},"238":{},"240":{},"244":{},"246":{},"247":{},"250":{},"251":{}},"component":{}}],["please",{"_index":3126,"title":{},"name":{},"text":{"123":{},"186":{},"253":{}},"component":{}}],["plot",{"_index":3629,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["plotli",{"_index":3633,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["plug",{"_index":1464,"title":{},"name":{},"text":{"25":{},"66":{}},"component":{}}],["plugin",{"_index":142,"title":{"2-65":{},"6-2":{},"7-2":{},"41-65":{},"45-2":{},"46-2":{},"87-1":{},"93-3":{},"140-1":{},"146-1":{},"147-3":{},"206-1":{},"212-1":{},"213-3":{}},"name":{},"text":{"2":{},"6":{},"7":{},"13":{},"14":{},"27":{},"34":{},"38":{},"41":{},"45":{},"46":{},"47":{},"49":{},"50":{},"62":{},"70":{},"74":{},"85":{},"87":{},"88":{},"92":{},"93":{},"96":{},"99":{},"111":{},"115":{},"119":{},"138":{},"140":{},"141":{},"146":{},"147":{},"150":{},"151":{},"155":{},"172":{},"177":{},"181":{},"204":{},"206":{},"207":{},"212":{},"213":{},"216":{},"217":{},"221":{},"238":{},"243":{},"247":{}},"component":{}}],["plugin#constraint",{"_index":1984,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["plugins.sbt",{"_index":1601,"title":{},"name":{},"text":{"30":{},"64":{},"113":{},"175":{},"241":{}},"component":{}}],["pmc",{"_index":3176,"title":{},"name":{},"text":{"134":{},"200":{}},"component":{}}],["pod",{"_index":617,"title":{},"name":{},"text":{"4":{},"14":{},"21":{},"24":{},"31":{},"32":{},"33":{},"43":{},"50":{},"57":{},"60":{},"67":{},"68":{},"69":{},"79":{},"91":{},"95":{},"96":{},"98":{},"99":{},"101":{},"102":{},"108":{},"116":{},"117":{},"118":{},"128":{},"132":{},"145":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"178":{},"179":{},"180":{},"194":{},"198":{},"211":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"244":{},"245":{},"246":{}},"component":{}}],["podalwayspullimag",{"_index":1016,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["podcontain",{"_index":1006,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podlabel",{"_index":1007,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podserviceaccount",{"_index":1018,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podtempl",{"_index":1063,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podvolum",{"_index":1014,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["point",{"_index":354,"title":{},"name":{},"text":{"2":{},"14":{},"24":{},"29":{},"39":{},"41":{},"60":{},"63":{},"75":{},"77":{},"80":{},"81":{},"83":{},"94":{},"95":{},"98":{},"100":{},"108":{},"112":{},"128":{},"130":{},"133":{},"136":{},"148":{},"149":{},"150":{},"154":{},"156":{},"169":{},"173":{},"194":{},"196":{},"199":{},"202":{},"214":{},"215":{},"216":{},"220":{},"222":{},"235":{},"239":{}},"component":{}}],["pointer",{"_index":1251,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["pojo",{"_index":1203,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["pojo('",{"_index":1202,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["polici",{"_index":476,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"80":{},"94":{},"132":{},"133":{},"148":{},"198":{},"199":{},"214":{}},"component":{}}],["polish",{"_index":2678,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["pollut",{"_index":2229,"title":{},"name":{},"text":{"81":{},"96":{},"151":{},"217":{}},"component":{}}],["polyfills.t",{"_index":1809,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["popul",{"_index":3192,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["port",{"_index":223,"title":{},"name":{},"text":{"2":{},"29":{},"32":{},"41":{},"63":{},"68":{},"109":{},"117":{},"170":{},"236":{}},"component":{}}],["portabl",{"_index":1489,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["posit",{"_index":387,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["posix",{"_index":2250,"title":{},"name":{},"text":{"81":{}},"component":{}}],["possibl",{"_index":71,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"14":{},"21":{},"32":{},"34":{},"40":{},"41":{},"43":{},"44":{},"47":{},"50":{},"57":{},"68":{},"70":{},"76":{},"83":{},"88":{},"91":{},"94":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"109":{},"117":{},"119":{},"123":{},"129":{},"136":{},"141":{},"145":{},"148":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"170":{},"181":{},"186":{},"189":{},"195":{},"202":{},"207":{},"211":{},"214":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"236":{},"247":{},"253":{},"255":{}},"component":{}}],["post",{"_index":706,"title":{"47-2":{},"47-3":{},"88-2":{},"88-3":{},"141-2":{},"141-3":{},"181-6":{},"207-2":{},"207-3":{},"247-6":{}},"name":{},"text":{"6":{},"19":{},"22":{},"32":{},"45":{},"55":{},"58":{},"68":{},"80":{},"87":{},"100":{},"101":{},"117":{},"133":{},"140":{},"156":{},"157":{},"181":{},"199":{},"206":{},"222":{},"223":{},"247":{}},"component":{}}],["postcomment(str",{"_index":2537,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["postcommit",{"_index":2179,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["postgr",{"_index":2121,"title":{},"name":{},"text":{"79":{},"132":{},"198":{},"240":{}},"component":{}}],["postgresql",{"_index":43,"title":{},"name":{},"text":{"1":{},"2":{},"24":{},"40":{},"41":{},"60":{},"76":{},"129":{},"195":{}},"component":{}}],["postgresql.yml",{"_index":41,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["potenti",{"_index":1692,"title":{},"name":{},"text":{"32":{},"68":{},"96":{},"117":{},"123":{},"128":{},"186":{},"194":{},"253":{}},"component":{}}],["power",{"_index":1286,"title":{},"name":{},"text":{"21":{},"28":{},"57":{},"65":{},"102":{},"114":{},"158":{},"176":{},"224":{},"242":{}},"component":{}}],["pr",{"_index":2540,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["practic",{"_index":1669,"title":{},"name":{},"text":{"32":{},"36":{},"37":{},"68":{},"72":{},"73":{},"82":{},"117":{},"122":{},"127":{},"135":{},"185":{},"193":{},"201":{},"251":{}},"component":{}}],["pre",{"_index":1735,"title":{"100-8":{},"156-8":{},"222-8":{}},"name":{},"text":{"32":{},"36":{},"37":{},"68":{},"72":{},"73":{},"83":{},"100":{},"105":{},"117":{},"122":{},"136":{},"156":{},"162":{},"163":{},"164":{},"165":{},"170":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"202":{},"222":{},"228":{},"229":{},"230":{},"231":{},"236":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["prebuilt",{"_index":2351,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["preced",{"_index":3269,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["precondit",{"_index":2883,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["preconfigur",{"_index":1485,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["prediciton",{"_index":1734,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["predict",{"_index":1629,"title":{"32-15":{},"32-17":{},"68-15":{},"68-17":{},"117-15":{},"117-17":{}},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["prefer",{"_index":414,"title":{},"name":{},"text":{"2":{},"32":{},"36":{},"41":{},"68":{},"72":{},"117":{},"122":{},"185":{},"187":{},"188":{},"251":{},"252":{},"254":{}},"component":{}}],["prefix",{"_index":775,"title":{},"name":{},"text":{"8":{},"14":{},"18":{},"47":{},"50":{},"54":{},"88":{},"96":{},"141":{},"150":{},"151":{},"207":{},"216":{},"217":{}},"component":{}}],["prem",{"_index":3414,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["prep_and_predict",{"_index":1667,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["prep_and_train",{"_index":1664,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["prepar",{"_index":87,"title":{"2-11":{},"2-57":{},"2-63":{},"41-11":{},"41-57":{},"41-63":{},"80-19":{},"127-1":{},"133-19":{},"193-1":{},"199-19":{}},"name":{},"text":{"2":{},"27":{},"32":{},"41":{},"62":{},"68":{},"77":{},"79":{},"111":{},"112":{},"117":{},"130":{},"132":{},"172":{},"173":{},"180":{},"196":{},"198":{},"238":{},"239":{},"240":{},"246":{}},"component":{}}],["prerequisit",{"_index":2030,"title":{"77-1":{},"130-1":{},"196-1":{}},"name":{},"text":{},"component":{}}],["presenc",{"_index":2169,"title":{},"name":{},"text":{"80":{},"85":{},"95":{},"133":{},"138":{},"149":{},"199":{},"204":{},"215":{}},"component":{}}],["present",{"_index":2056,"title":{},"name":{},"text":{"77":{},"80":{},"82":{},"95":{},"96":{},"98":{},"99":{},"130":{},"133":{},"135":{},"149":{},"150":{},"151":{},"154":{},"155":{},"196":{},"199":{},"201":{},"215":{},"216":{},"217":{},"220":{},"221":{}},"component":{}}],["preserv",{"_index":2580,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["press",{"_index":437,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["prettier",{"_index":3653,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["prevent",{"_index":1451,"title":{},"name":{},"text":{"24":{},"34":{},"60":{},"70":{},"96":{},"98":{},"119":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["preview",{"_index":987,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["previou",{"_index":317,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"80":{},"95":{},"96":{},"133":{},"142":{},"146":{},"149":{},"151":{},"153":{},"161":{},"199":{},"208":{},"212":{},"215":{},"217":{},"219":{},"227":{},"234":{}},"component":{}}],["previous",{"_index":2417,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"127":{},"149":{},"150":{},"151":{},"154":{},"193":{},"215":{},"216":{},"217":{},"220":{}},"component":{}}],["primari",{"_index":3347,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["print",{"_index":3085,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["prior",{"_index":2219,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["prioriti",{"_index":3373,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["privaci",{"_index":1684,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["privat",{"_index":2256,"title":{},"name":{},"text":{"81":{},"96":{},"98":{},"151":{},"154":{},"174":{},"217":{},"220":{},"240":{}},"component":{}}],["private/publ",{"_index":2749,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["privatekey=private.key",{"_index":2506,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["privileg",{"_index":503,"title":{},"name":{},"text":{"2":{},"41":{},"127":{},"158":{},"193":{},"224":{}},"component":{}}],["pro",{"_index":1853,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["probe",{"_index":2605,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["problem",{"_index":3079,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["proce",{"_index":284,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["procedur",{"_index":1952,"title":{"80-3":{},"133-3":{},"199-3":{}},"name":{},"text":{"39":{},"75":{},"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["proceed",{"_index":2086,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["process",{"_index":154,"title":{},"name":{},"text":{"2":{},"19":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"41":{},"55":{},"63":{},"64":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"79":{},"80":{},"95":{},"96":{},"98":{},"99":{},"100":{},"112":{},"113":{},"117":{},"119":{},"120":{},"122":{},"126":{},"127":{},"128":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"173":{},"174":{},"175":{},"180":{},"181":{},"183":{},"185":{},"187":{},"188":{},"192":{},"193":{},"194":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"239":{},"240":{},"241":{},"246":{},"247":{},"249":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["prod",{"_index":964,"title":{},"name":{},"text":{"14":{},"36":{},"50":{},"72":{},"96":{},"98":{},"122":{},"151":{},"154":{},"185":{},"217":{},"220":{},"251":{}},"component":{}}],["prod.env",{"_index":2731,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["prod.json",{"_index":3694,"title":{},"name":{},"text":{"182":{},"187":{},"188":{},"248":{},"252":{},"254":{}},"component":{}}],["prod.prod",{"_index":2727,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["prod.tfbackend.config",{"_index":3728,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["prod.yml",{"_index":3732,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["produc",{"_index":2109,"title":{},"name":{},"text":{"79":{},"80":{},"95":{},"98":{},"132":{},"133":{},"149":{},"154":{},"188":{},"198":{},"199":{},"215":{},"220":{},"254":{}},"component":{}}],["product",{"_index":169,"title":{},"name":{},"text":{"2":{},"14":{},"21":{},"36":{},"39":{},"41":{},"50":{},"57":{},"72":{},"75":{},"79":{},"80":{},"81":{},"96":{},"98":{},"101":{},"109":{},"112":{},"121":{},"122":{},"127":{},"132":{},"133":{},"151":{},"154":{},"157":{},"170":{},"173":{},"174":{},"182":{},"184":{},"185":{},"187":{},"188":{},"193":{},"198":{},"199":{},"217":{},"220":{},"223":{},"236":{},"239":{},"240":{},"248":{},"250":{},"251":{},"252":{},"254":{}},"component":{}}],["profil",{"_index":1214,"title":{},"name":{},"text":{"20":{},"29":{},"35":{},"36":{},"37":{},"38":{},"56":{},"63":{},"71":{},"72":{},"73":{},"74":{},"100":{},"101":{},"121":{},"122":{},"156":{},"157":{},"174":{},"185":{},"222":{},"223":{},"240":{},"251":{}},"component":{}}],["program",{"_index":3115,"title":{},"name":{},"text":{"120":{},"174":{},"183":{},"240":{},"249":{}},"component":{}}],["progress",{"_index":1554,"title":{"153-17":{},"219-17":{}},"name":{},"text":{"28":{},"65":{},"98":{},"153":{},"154":{},"219":{},"220":{}},"component":{}}],["project",{"_index":118,"title":{"2-33":{},"5-5":{},"5-6":{},"14-11":{},"27-3":{},"41-33":{},"44-5":{},"44-6":{},"50-11":{},"62-3":{},"77-11":{},"80-12":{},"80-22":{},"83-3":{},"83-4":{},"101-4":{},"101-5":{},"101-6":{},"101-7":{},"101-8":{},"111-3":{},"128-3":{},"130-9":{},"133-12":{},"133-22":{},"157-4":{},"157-7":{},"157-8":{},"157-9":{},"157-10":{},"157-11":{},"158-1":{},"158-2":{},"172-3":{},"194-3":{},"196-9":{},"199-12":{},"199-22":{},"223-4":{},"223-7":{},"223-8":{},"223-9":{},"223-10":{},"223-11":{},"224-1":{},"224-2":{},"238-3":{}},"name":{},"text":{"2":{},"4":{},"5":{},"7":{},"8":{},"12":{},"13":{},"14":{},"16":{},"19":{},"21":{},"22":{},"23":{},"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"46":{},"47":{},"49":{},"50":{},"52":{},"55":{},"57":{},"58":{},"59":{},"60":{},"62":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"82":{},"83":{},"85":{},"88":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"111":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"141":{},"142":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"172":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"207":{},"208":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["project'",{"_index":3765,"title":{},"name":{},"text":{"240":{}},"component":{}}],["project.default",{"_index":2912,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["project.key1.en",{"_index":3285,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["project.key2.en",{"_index":3286,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["project.nam",{"_index":3393,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["project.properti",{"_index":1107,"title":{"93-1":{},"147-1":{},"213-1":{}},"name":{},"text":{"14":{},"17":{},"24":{},"25":{},"26":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"39":{},"50":{},"53":{},"60":{},"61":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"75":{},"96":{},"99":{},"108":{},"110":{},"112":{},"113":{},"114":{},"115":{},"120":{},"121":{},"122":{},"151":{},"155":{},"169":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"183":{},"184":{},"185":{},"217":{},"221":{},"235":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"249":{},"250":{},"251":{}},"component":{}}],["project.properties.templ",{"_index":2804,"title":{},"name":{},"text":{"99":{},"108":{},"155":{},"169":{},"221":{},"235":{}},"component":{}}],["project.sh",{"_index":2699,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["project.template.key.nam",{"_index":1345,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project.template.key.names=default",{"_index":1334,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project.vers",{"_index":3409,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["project/spac",{"_index":1303,"title":{"22-4":{},"58-4":{},"101-3":{},"157-6":{},"223-6":{}},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project:sp",{"_index":1339,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project_cd_us",{"_index":2860,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["project_id",{"_index":1962,"title":{},"name":{},"text":{"39":{},"75":{},"80":{},"94":{},"99":{},"133":{},"148":{},"155":{},"199":{},"214":{},"221":{}},"component":{}}],["project_key",{"_index":2931,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projectadmingroup",{"_index":2862,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectadminus",{"_index":2861,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectdev/test",{"_index":1297,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["projectid",{"_index":934,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["projectkey",{"_index":2857,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectnam",{"_index":2558,"title":{},"name":{},"text":{"96":{},"100":{},"151":{},"156":{},"217":{},"222":{}},"component":{}}],["projectreadonlygroup",{"_index":2864,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectroleforadmingroup",{"_index":2923,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projectroleforreadonlygroup",{"_index":2925,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projectroleforusergroup",{"_index":2924,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projecttyp",{"_index":2858,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectusergroup",{"_index":2863,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["project’",{"_index":618,"title":{},"name":{},"text":{"4":{},"19":{},"22":{},"43":{},"55":{},"58":{},"91":{},"100":{},"121":{},"122":{},"145":{},"156":{},"184":{},"185":{},"211":{},"222":{},"250":{},"251":{}},"component":{}}],["promot",{"_index":2309,"title":{"98-17":{},"98-18":{},"154-20":{},"154-21":{},"220-20":{},"220-21":{}},"name":{},"text":{"83":{},"95":{},"96":{},"98":{},"136":{},"149":{},"151":{},"154":{},"180":{},"202":{},"215":{},"217":{},"220":{},"246":{}},"component":{}}],["prompt",{"_index":1688,"title":{},"name":{},"text":{"32":{},"68":{},"77":{},"117":{},"130":{},"196":{}},"component":{}}],["proof",{"_index":385,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["proper",{"_index":3504,"title":{},"name":{},"text":{"169":{},"180":{},"235":{},"246":{}},"component":{}}],["properli",{"_index":2092,"title":{},"name":{},"text":{"79":{},"80":{},"98":{},"132":{},"133":{},"154":{},"174":{},"198":{},"199":{},"220":{},"240":{}},"component":{}}],["properti",{"_index":120,"title":{"2-37":{},"41-37":{},"95-7":{},"101-8":{},"149-7":{},"157-11":{},"215-7":{},"223-11":{}},"name":{},"text":{"14":{},"16":{},"19":{},"20":{},"22":{},"27":{},"50":{},"52":{},"55":{},"56":{},"58":{},"62":{},"95":{},"96":{},"99":{},"100":{},"101":{},"111":{},"120":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"172":{},"183":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"238":{},"249":{}},"component":{}}],["property.=tru",{"_index":2928,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["property_valu",{"_index":2932,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["protect",{"_index":782,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"180":{},"207":{},"246":{}},"component":{}}],["protected_branch",{"_index":770,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["proto",{"_index":3580,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["protocol",{"_index":1595,"title":{},"name":{},"text":{"30":{},"64":{},"78":{},"131":{},"197":{}},"component":{}}],["prototyp",{"_index":1614,"title":{},"name":{},"text":{"31":{},"67":{},"116":{},"178":{},"244":{}},"component":{}}],["protractor.conf.j",{"_index":1791,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{}},"component":{}}],["prov",{"_index":1277,"title":{},"name":{},"text":{"21":{},"57":{},"79":{},"80":{},"95":{},"100":{},"101":{},"132":{},"133":{},"149":{},"156":{},"157":{},"198":{},"199":{},"215":{},"222":{},"223":{}},"component":{}}],["prov_app_config_fil",{"_index":2827,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["prov_app_config_file=\"${prov_app_config_fil",{"_index":2825,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["prov_app_from_imag",{"_index":2816,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provapp",{"_index":2959,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provid",{"_index":34,"title":{"14-2":{},"24-4":{},"50-2":{},"60-4":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"7":{},"8":{},"11":{},"14":{},"19":{},"20":{},"22":{},"24":{},"27":{},"31":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"44":{},"45":{},"46":{},"50":{},"55":{},"56":{},"58":{},"60":{},"62":{},"67":{},"68":{},"70":{},"72":{},"75":{},"76":{},"81":{},"82":{},"83":{},"86":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"115":{},"116":{},"117":{},"119":{},"120":{},"122":{},"123":{},"126":{},"128":{},"129":{},"130":{},"135":{},"136":{},"137":{},"139":{},"146":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"172":{},"173":{},"174":{},"177":{},"178":{},"181":{},"183":{},"186":{},"189":{},"192":{},"194":{},"195":{},"196":{},"201":{},"202":{},"203":{},"205":{},"212":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"238":{},"239":{},"240":{},"243":{},"244":{},"247":{},"249":{},"253":{},"255":{},"258":{}},"component":{}}],["provis",{"_index":13,"title":{"22":{},"58":{},"100":{},"101":{},"102":{},"125":{},"156":{},"157":{},"158":{},"191":{},"222":{},"223":{},"224":{},"257":{},"2-66":{},"22-5":{},"25-4":{},"26-4":{},"27-10":{},"28-4":{},"29-4":{},"30-4":{},"31-4":{},"33-4":{},"34-4":{},"35-4":{},"36-4":{},"37-4":{},"38-4":{},"41-66":{},"58-5":{},"61-4":{},"62-10":{},"63-4":{},"64-4":{},"65-4":{},"66-4":{},"67-4":{},"69-4":{},"70-4":{},"71-4":{},"72-4":{},"73-4":{},"74-4":{},"77-16":{},"78-6":{},"79-7":{},"80-9":{},"80-17":{},"80-24":{},"109-4":{},"110-4":{},"111-10":{},"112-4":{},"113-4":{},"114-6":{},"115-4":{},"116-4":{},"118-4":{},"119-4":{},"120-7":{},"121-4":{},"122-4":{},"124-4":{},"125-4":{},"130-14":{},"131-6":{},"132-7":{},"133-9":{},"133-17":{},"133-24":{},"170-4":{},"171-4":{},"172-10":{},"173-4":{},"174-4":{},"175-4":{},"176-6":{},"177-4":{},"178-4":{},"179-4":{},"180-4":{},"181-4":{},"182-4":{},"183-7":{},"184-4":{},"185-4":{},"187-4":{},"188-4":{},"190-4":{},"191-4":{},"196-14":{},"197-6":{},"198-7":{},"199-9":{},"199-17":{},"199-24":{},"236-4":{},"237-4":{},"238-10":{},"239-4":{},"240-4":{},"241-4":{},"242-6":{},"243-4":{},"244-4":{},"245-4":{},"246-4":{},"247-4":{},"248-4":{},"249-7":{},"250-4":{},"251-4":{},"252-4":{},"254-4":{},"256-4":{},"257-4":{}},"name":{"125":{},"191":{},"257":{}},"text":{"1":{},"2":{},"5":{},"8":{},"19":{},"20":{},"21":{},"22":{},"27":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"38":{},"39":{},"40":{},"41":{},"44":{},"47":{},"55":{},"56":{},"57":{},"58":{},"60":{},"62":{},"63":{},"64":{},"67":{},"69":{},"70":{},"71":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"111":{},"112":{},"113":{},"116":{},"118":{},"119":{},"120":{},"123":{},"125":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"173":{},"174":{},"175":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"186":{},"187":{},"188":{},"191":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"239":{},"240":{},"241":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"252":{},"253":{},"254":{},"257":{}},"component":{}}],["provision",{"_index":2712,"title":{},"name":{},"text":{"98":{}},"component":{}}],["provision.auth.bas",{"_index":2960,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provision.auth.provid",{"_index":1184,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["provision.auth.provider.oauth2.us",{"_index":2936,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provision.auth.provider=crowd",{"_index":1162,"title":{},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["provision.auth.provider=oauth2",{"_index":1164,"title":{},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["provision.cleanup.incomplete.project",{"_index":1393,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["provision.ui.disclaim",{"_index":2972,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provision_api_host",{"_index":1347,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["provision_api_host}/api/v2/project",{"_index":1382,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["provision_api_host}/api/v2/project/$2",{"_index":2849,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provision_api_host}/j_security_check",{"_index":1354,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provision_api_host}/login?error",{"_index":1359,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provision_fil",{"_index":2838,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provision_file=provis",{"_index":2823,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provisionfil",{"_index":1378,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provisionfile=create.txt",{"_index":1376,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provisiong",{"_index":2813,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provison",{"_index":2454,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["proxi",{"_index":487,"title":{"8":{},"11":{},"47":{},"88":{},"141":{},"207":{},"6-6":{},"8-2":{},"8-3":{},"45-6":{},"47-7":{},"80-16":{},"84-4":{},"88-7":{},"101-8":{},"133-16":{},"141-7":{},"157-11":{},"199-16":{},"207-7":{},"223-11":{}},"name":{"8":{},"47":{},"88":{},"141":{},"207":{}},"text":{"2":{},"6":{},"7":{},"8":{},"11":{},"21":{},"22":{},"31":{},"32":{},"33":{},"41":{},"45":{},"46":{},"47":{},"57":{},"58":{},"67":{},"68":{},"69":{},"77":{},"79":{},"80":{},"84":{},"85":{},"88":{},"94":{},"95":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"116":{},"117":{},"118":{},"128":{},"130":{},"132":{},"133":{},"138":{},"141":{},"148":{},"149":{},"150":{},"151":{},"157":{},"158":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"178":{},"179":{},"180":{},"194":{},"196":{},"198":{},"199":{},"204":{},"207":{},"214":{},"215":{},"216":{},"217":{},"223":{},"224":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"244":{},"245":{},"246":{}},"component":{}}],["psql",{"_index":2125,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["public",{"_index":240,"title":{},"name":{},"text":{"2":{},"19":{},"37":{},"38":{},"41":{},"55":{},"73":{},"74":{},"98":{},"100":{},"113":{},"154":{},"156":{},"175":{},"220":{},"222":{},"241":{}},"component":{}}],["publickey,password).\\r\\n",{"_index":579,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["publicli",{"_index":2233,"title":{},"name":{},"text":{"81":{}},"component":{}}],["publish",{"_index":2356,"title":{},"name":{},"text":{"93":{},"108":{},"120":{},"128":{},"147":{},"169":{},"183":{},"194":{},"213":{},"235":{},"240":{},"249":{}},"component":{}}],["pull",{"_index":583,"title":{"4-6":{},"5-6":{},"43-6":{},"44-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{"6":{},"8":{},"14":{},"32":{},"38":{},"45":{},"47":{},"50":{},"68":{},"74":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"93":{},"96":{},"98":{},"99":{},"108":{},"117":{},"128":{},"132":{},"133":{},"135":{},"136":{},"141":{},"147":{},"151":{},"154":{},"155":{},"169":{},"194":{},"198":{},"199":{},"201":{},"202":{},"207":{},"213":{},"217":{},"220":{},"221":{},"235":{}},"component":{}}],["pullabl",{"_index":2159,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["puller",{"_index":624,"title":{"80-15":{},"94-4":{},"133-15":{},"148-4":{},"199-15":{},"214-4":{}},"name":{},"text":{"4":{},"43":{},"80":{},"91":{},"94":{},"133":{},"145":{},"148":{},"151":{},"199":{},"211":{},"214":{},"217":{}},"component":{}}],["pullrequestid",{"_index":2539,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["puplish",{"_index":1505,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["purchas",{"_index":210,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["purpos",{"_index":1456,"title":{"25-1":{},"26-1":{},"27-1":{},"28-1":{},"29-1":{},"30-1":{},"31-1":{},"33-1":{},"34-1":{},"35-1":{},"36-1":{},"37-1":{},"38-1":{},"61-1":{},"62-1":{},"63-1":{},"64-1":{},"65-1":{},"66-1":{},"67-1":{},"69-1":{},"70-1":{},"71-1":{},"72-1":{},"73-1":{},"74-1":{},"109-1":{},"110-1":{},"111-1":{},"112-1":{},"113-1":{},"114-1":{},"115-1":{},"116-1":{},"118-1":{},"119-1":{},"120-1":{},"121-1":{},"122-1":{},"124-1":{},"125-1":{},"170-1":{},"171-1":{},"172-1":{},"173-1":{},"174-1":{},"175-1":{},"176-1":{},"177-1":{},"178-1":{},"179-1":{},"180-1":{},"181-1":{},"182-1":{},"183-1":{},"184-1":{},"185-1":{},"187-1":{},"188-1":{},"190-1":{},"191-1":{},"236-1":{},"237-1":{},"238-1":{},"239-1":{},"240-1":{},"241-1":{},"242-1":{},"243-1":{},"244-1":{},"245-1":{},"246-1":{},"247-1":{},"248-1":{},"249-1":{},"250-1":{},"251-1":{},"252-1":{},"254-1":{},"256-1":{},"257-1":{}},"name":{},"text":{"27":{},"29":{},"32":{},"62":{},"63":{},"68":{},"95":{},"101":{},"108":{},"111":{},"112":{},"117":{},"120":{},"124":{},"125":{},"130":{},"149":{},"153":{},"157":{},"169":{},"172":{},"173":{},"180":{},"183":{},"189":{},"190":{},"191":{},"196":{},"215":{},"219":{},"223":{},"235":{},"238":{},"239":{},"246":{},"249":{},"255":{},"256":{},"257":{}},"component":{}}],["purpous",{"_index":2962,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["push",{"_index":683,"title":{},"name":{},"text":{"5":{},"6":{},"8":{},"13":{},"27":{},"32":{},"39":{},"44":{},"45":{},"47":{},"49":{},"62":{},"68":{},"75":{},"77":{},"79":{},"80":{},"81":{},"82":{},"88":{},"98":{},"99":{},"102":{},"108":{},"111":{},"114":{},"117":{},"124":{},"125":{},"130":{},"132":{},"133":{},"135":{},"137":{},"141":{},"142":{},"146":{},"151":{},"154":{},"155":{},"158":{},"169":{},"172":{},"176":{},"190":{},"191":{},"196":{},"198":{},"199":{},"201":{},"203":{},"207":{},"208":{},"212":{},"217":{},"220":{},"221":{},"224":{},"235":{},"238":{},"242":{},"256":{},"257":{}},"component":{}}],["put",{"_index":2478,"title":{},"name":{},"text":{"96":{},"100":{},"128":{},"151":{},"156":{},"194":{},"217":{},"222":{}},"component":{}}],["pvc",{"_index":2151,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["pwa",{"_index":1824,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["pwd",{"_index":2830,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["pycharm",{"_index":1680,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["pycodestyl",{"_index":1586,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["pypi",{"_index":500,"title":{},"name":{},"text":{"2":{},"31":{},"41":{}},"component":{}}],["pytest",{"_index":3027,"title":{"182":{},"248":{}},"name":{},"text":{"112":{},"173":{},"180":{},"182":{},"239":{},"246":{},"248":{}},"component":{}}],["pytest.ini",{"_index":3026,"title":{},"name":{},"text":{"112":{}},"component":{}}],["python",{"_index":1431,"title":{"29":{},"63":{},"106":{},"112":{},"166":{},"173":{},"182":{},"232":{},"239":{},"248":{},"95-10":{},"149-10":{},"173-8":{},"215-10":{},"239-8":{}},"name":{"29":{},"63":{},"106":{},"112":{},"166":{},"173":{},"182":{},"232":{},"239":{},"248":{}},"text":{"24":{},"29":{},"31":{},"32":{},"60":{},"63":{},"67":{},"68":{},"80":{},"95":{},"106":{},"112":{},"116":{},"117":{},"133":{},"136":{},"149":{},"166":{},"173":{},"174":{},"178":{},"180":{},"182":{},"186":{},"199":{},"202":{},"215":{},"232":{},"239":{},"240":{},"244":{},"246":{},"248":{},"253":{}},"component":{}}],["python/flask",{"_index":1940,"title":{},"name":{},"text":{"39":{},"75":{},"123":{},"186":{},"253":{}},"component":{}}],["python3.11",{"_index":3536,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["python3.12",{"_index":3758,"title":{},"name":{},"text":{"239":{}},"component":{}}],["python3.6",{"_index":3538,"title":{},"name":{},"text":{"173":{}},"component":{}}],["python3.8",{"_index":3537,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["python3.9",{"_index":3539,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["python:3.x",{"_index":2460,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["pythonpath=src",{"_index":3530,"title":{},"name":{},"text":{"173":{},"180":{},"239":{},"246":{}},"component":{}}],["python’",{"_index":3528,"title":{},"name":{},"text":{"173":{},"180":{},"239":{},"246":{}},"component":{}}],["pytnon",{"_index":3535,"title":{},"name":{},"text":{"173":{}},"component":{}}],["q",{"_index":2694,"title":{},"name":{},"text":{"98":{},"154":{},"181":{},"220":{},"247":{}},"component":{}}],["q/p",{"_index":2302,"title":{},"name":{},"text":{"83":{}},"component":{}}],["qa",{"_index":2668,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["qa.env",{"_index":2730,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["qq",{"_index":1589,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["qualiti",{"_index":893,"title":{"94-12":{},"148-12":{},"214-12":{}},"name":{},"text":{"13":{},"49":{},"93":{},"94":{},"96":{},"98":{},"112":{},"121":{},"122":{},"147":{},"148":{},"151":{},"154":{},"173":{},"180":{},"184":{},"185":{},"213":{},"214":{},"217":{},"220":{},"239":{},"246":{},"250":{},"251":{}},"component":{}}],["quay.io",{"_index":3144,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["queri",{"_index":785,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"153":{},"207":{},"219":{}},"component":{}}],["question",{"_index":628,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["queue",{"_index":3398,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["quick",{"_index":1526,"title":{"32-11":{},"68-11":{},"117-11":{}},"name":{},"text":{"28":{},"29":{},"35":{},"38":{},"63":{},"65":{},"71":{},"74":{},"112":{},"173":{},"174":{},"180":{},"187":{},"239":{},"240":{},"246":{},"252":{}},"component":{}}],["quickli",{"_index":643,"title":{},"name":{},"text":{"5":{},"39":{},"44":{},"75":{},"83":{},"123":{},"136":{},"186":{},"202":{},"253":{}},"component":{}}],["quicksart",{"_index":3676,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["quickstart",{"_index":402,"title":{"27":{},"29":{},"30":{},"39":{},"62":{},"63":{},"64":{},"75":{},"99":{},"108":{},"111":{},"112":{},"113":{},"123":{},"155":{},"169":{},"172":{},"173":{},"174":{},"175":{},"186":{},"187":{},"188":{},"221":{},"235":{},"238":{},"239":{},"240":{},"241":{},"252":{},"253":{},"254":{},"5-6":{},"5-7":{},"25-1":{},"25-4":{},"25-5":{},"26-1":{},"26-4":{},"26-5":{},"27-1":{},"27-10":{},"27-11":{},"28-1":{},"28-4":{},"28-5":{},"29-1":{},"29-4":{},"29-5":{},"30-1":{},"30-4":{},"30-5":{},"31-1":{},"31-4":{},"31-5":{},"32-18":{},"33-1":{},"33-4":{},"33-5":{},"34-1":{},"34-4":{},"34-5":{},"35-1":{},"35-4":{},"35-5":{},"36-1":{},"36-4":{},"36-5":{},"37-1":{},"37-4":{},"37-5":{},"38-1":{},"38-4":{},"38-5":{},"39-2":{},"39-3":{},"39-4":{},"39-5":{},"39-7":{},"39-8":{},"44-6":{},"44-7":{},"61-1":{},"61-4":{},"61-5":{},"62-1":{},"62-10":{},"62-11":{},"63-1":{},"63-4":{},"63-5":{},"64-1":{},"64-4":{},"64-5":{},"65-1":{},"65-4":{},"65-5":{},"66-1":{},"66-4":{},"66-5":{},"67-1":{},"67-4":{},"67-5":{},"68-18":{},"69-1":{},"69-4":{},"69-5":{},"70-1":{},"70-4":{},"70-5":{},"71-1":{},"71-4":{},"71-5":{},"72-1":{},"72-4":{},"72-5":{},"73-1":{},"73-4":{},"73-5":{},"74-1":{},"74-4":{},"74-5":{},"75-2":{},"75-3":{},"75-4":{},"75-5":{},"75-7":{},"75-8":{},"80-19":{},"83-4":{},"101-1":{},"108-1":{},"109-1":{},"109-4":{},"109-8":{},"110-1":{},"110-4":{},"110-5":{},"111-1":{},"111-10":{},"111-11":{},"112-1":{},"112-4":{},"112-5":{},"113-1":{},"113-4":{},"113-5":{},"114-1":{},"114-6":{},"114-7":{},"115-1":{},"115-4":{},"115-5":{},"116-1":{},"116-4":{},"116-5":{},"117-18":{},"118-1":{},"118-4":{},"118-5":{},"119-1":{},"119-4":{},"119-5":{},"120-1":{},"120-7":{},"120-9":{},"121-1":{},"121-4":{},"121-5":{},"122-1":{},"122-4":{},"122-5":{},"123-2":{},"123-3":{},"123-4":{},"123-5":{},"123-6":{},"123-7":{},"123-8":{},"124-1":{},"124-4":{},"124-5":{},"125-1":{},"125-4":{},"125-5":{},"133-19":{},"150-9":{},"150-10":{},"157-1":{},"158-2":{},"169-1":{},"170-1":{},"170-4":{},"170-9":{},"171-1":{},"171-4":{},"171-6":{},"172-1":{},"172-10":{},"172-12":{},"173-1":{},"173-4":{},"173-6":{},"174-1":{},"174-4":{},"174-6":{},"175-1":{},"175-4":{},"175-6":{},"176-1":{},"176-6":{},"176-8":{},"177-1":{},"177-4":{},"177-6":{},"178-1":{},"178-4":{},"178-7":{},"179-1":{},"179-4":{},"179-6":{},"180-1":{},"180-4":{},"180-6":{},"181-1":{},"181-4":{},"181-5":{},"182-1":{},"182-4":{},"183-1":{},"183-7":{},"183-9":{},"184-1":{},"184-4":{},"184-6":{},"185-1":{},"185-4":{},"185-6":{},"186-2":{},"186-3":{},"186-4":{},"186-5":{},"186-6":{},"186-7":{},"186-8":{},"186-9":{},"187-1":{},"187-4":{},"187-5":{},"188-1":{},"188-4":{},"188-5":{},"190-1":{},"190-4":{},"190-5":{},"191-1":{},"191-4":{},"191-5":{},"199-19":{},"216-9":{},"216-10":{},"223-1":{},"224-2":{},"235-1":{},"236-1":{},"236-4":{},"236-9":{},"237-1":{},"237-4":{},"237-6":{},"238-1":{},"238-10":{},"238-12":{},"239-1":{},"239-4":{},"239-6":{},"240-1":{},"240-4":{},"240-6":{},"241-1":{},"241-4":{},"241-6":{},"242-1":{},"242-6":{},"242-8":{},"243-1":{},"243-4":{},"243-6":{},"244-1":{},"244-4":{},"244-7":{},"245-1":{},"245-4":{},"245-6":{},"246-1":{},"246-4":{},"246-6":{},"247-1":{},"247-4":{},"247-5":{},"248-1":{},"248-4":{},"249-1":{},"249-7":{},"249-9":{},"250-1":{},"250-4":{},"250-6":{},"251-1":{},"251-4":{},"251-6":{},"252-1":{},"252-4":{},"252-5":{},"253-2":{},"253-3":{},"253-4":{},"253-5":{},"253-6":{},"253-7":{},"253-8":{},"253-9":{},"254-1":{},"254-4":{},"254-5":{},"256-1":{},"256-4":{},"256-5":{},"257-1":{},"257-4":{},"257-5":{}},"name":{"99":{},"108":{},"155":{},"169":{},"221":{},"235":{}},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"15":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"44":{},"45":{},"50":{},"51":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"83":{},"85":{},"94":{},"95":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"138":{},"148":{},"149":{},"150":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"204":{},"214":{},"215":{},"216":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["quickstarter_directori",{"_index":1960,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["quickstarters#12",{"_index":2382,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#46",{"_index":2392,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#60",{"_index":2393,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#71",{"_index":2389,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#74",{"_index":2383,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters,od",{"_index":3204,"title":{},"name":{},"text":{"137":{},"203":{}},"component":{}}],["quickstarters.properti",{"_index":2896,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["quickstarters/airflow",{"_index":2002,"title":{},"name":{},"text":{"60":{}},"component":{}}],["quickstarters/blob/master/docs/modules/jenkin",{"_index":2981,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["quickstarters/blob/master/docs/modules/quickstarters/pag",{"_index":2980,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["quickstarters/ocp",{"_index":2205,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["quickstarters/pull/188",{"_index":2222,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["quickstarters/quickstarters.properti",{"_index":2895,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["quickstartserver.scala",{"_index":1604,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["quicktart",{"_index":3686,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["quit",{"_index":2128,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["quota",{"_index":2311,"title":{},"name":{},"text":{"83":{},"94":{},"136":{},"148":{},"202":{},"214":{}},"component":{}}],["r",{"_index":1468,"title":{"69":{},"118":{},"179":{},"245":{}},"name":{},"text":{"25":{},"29":{},"32":{},"33":{},"39":{},"63":{},"66":{},"68":{},"69":{},"75":{},"76":{},"112":{},"115":{},"117":{},"118":{},"123":{},"129":{},"173":{},"177":{},"179":{},"180":{},"181":{},"186":{},"195":{},"239":{},"243":{},"245":{},"246":{},"247":{},"253":{}},"component":{}}],["r/https://shiny.rstudio.com/tutorial/[rshini",{"_index":1757,"title":{},"name":{},"text":{"33":{}},"component":{}}],["r/w",{"_index":3437,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["ram",{"_index":177,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"130":{},"196":{}},"component":{}}],["ran",{"_index":2705,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["random",{"_index":1009,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["rapid",{"_index":1613,"title":{},"name":{},"text":{"31":{},"67":{},"116":{},"178":{},"244":{}},"component":{}}],["raw",{"_index":2487,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["rc.1",{"_index":1876,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["re",{"_index":2132,"title":{},"name":{},"text":{"79":{},"98":{},"132":{},"150":{},"154":{},"198":{},"216":{},"220":{}},"component":{}}],["reach",{"_index":1158,"title":{},"name":{},"text":{"19":{},"55":{},"96":{},"100":{},"151":{},"156":{},"162":{},"163":{},"164":{},"165":{},"166":{},"217":{},"222":{},"228":{},"229":{},"230":{},"231":{},"232":{}},"component":{}}],["react",{"_index":1855,"title":{"37":{},"73":{}},"name":{"37":{},"73":{}},"text":{"37":{},"39":{},"73":{},"75":{},"94":{},"148":{},"214":{}},"component":{}}],["react.j",{"_index":1854,"title":{"37":{},"73":{}},"name":{},"text":{},"component":{}}],["reactiv",{"_index":3045,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["read",{"_index":505,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"20":{},"22":{},"41":{},"45":{},"47":{},"50":{},"56":{},"58":{},"77":{},"88":{},"95":{},"96":{},"98":{},"101":{},"130":{},"141":{},"149":{},"150":{},"151":{},"154":{},"157":{},"196":{},"207":{},"215":{},"216":{},"217":{},"220":{},"223":{}},"component":{}}],["readabl",{"_index":2166,"title":{},"name":{},"text":{"80":{},"133":{},"157":{},"199":{},"223":{}},"component":{}}],["readi",{"_index":834,"title":{},"name":{},"text":{"11":{},"12":{},"32":{},"68":{},"80":{},"81":{},"96":{},"98":{},"112":{},"117":{},"127":{},"133":{},"151":{},"154":{},"173":{},"174":{},"193":{},"199":{},"217":{},"220":{},"239":{},"240":{}},"component":{}}],["readjson",{"_index":2534,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["readm",{"_index":833,"title":{},"name":{},"text":{"11":{},"12":{},"13":{},"33":{},"49":{},"82":{},"100":{},"135":{},"151":{},"156":{},"174":{},"201":{},"217":{},"222":{},"240":{}},"component":{}}],["readme.adoc",{"_index":1957,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["readme.md",{"_index":1461,"title":{},"name":{},"text":{"25":{},"26":{},"28":{},"29":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"61":{},"63":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"74":{},"80":{},"110":{},"112":{},"114":{},"115":{},"119":{},"120":{},"121":{},"122":{},"126":{},"133":{},"171":{},"173":{},"174":{},"176":{},"177":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"199":{},"237":{},"239":{},"240":{},"242":{},"243":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["readonli",{"_index":1325,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["readonlygroup",{"_index":1375,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["real",{"_index":1300,"title":{},"name":{},"text":{"21":{},"57":{},"77":{},"100":{},"101":{},"130":{},"156":{},"157":{},"196":{},"222":{},"223":{}},"component":{}}],["realli",{"_index":1671,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"136":{},"202":{}},"component":{}}],["realm",{"_index":869,"title":{"78-1":{},"78-3":{},"131-1":{},"131-3":{},"197-1":{},"197-3":{}},"name":{},"text":{"12":{},"20":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["reason",{"_index":2336,"title":{},"name":{},"text":{"88":{},"98":{},"100":{},"128":{},"141":{},"154":{},"156":{},"181":{},"194":{},"207":{},"220":{},"222":{},"247":{}},"component":{}}],["rebas",{"_index":2597,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["rebuild",{"_index":1772,"title":{"154-15":{},"220-15":{}},"name":{},"text":{"34":{},"70":{},"83":{},"95":{},"98":{},"119":{},"136":{},"137":{},"149":{},"154":{},"202":{},"203":{},"215":{},"220":{}},"component":{}}],["rebuilt",{"_index":2660,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["rebum",{"_index":818,"title":{},"name":{},"text":{"10":{}},"component":{}}],["receiv",{"_index":1312,"title":{},"name":{},"text":{"22":{},"58":{},"151":{},"217":{}},"component":{}}],["recent",{"_index":1455,"title":{},"name":{},"text":{"24":{},"60":{},"77":{},"130":{},"196":{}},"component":{}}],["recip",{"_index":901,"title":{},"name":{},"text":{"13":{},"49":{},"92":{},"142":{},"146":{},"208":{},"212":{}},"component":{}}],["recipi",{"_index":2326,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["recognis",{"_index":3372,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["recommend",{"_index":189,"title":{"240-11":{}},"name":{},"text":{"2":{},"27":{},"29":{},"32":{},"41":{},"62":{},"63":{},"68":{},"80":{},"93":{},"94":{},"95":{},"96":{},"100":{},"108":{},"111":{},"112":{},"117":{},"127":{},"130":{},"133":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"156":{},"169":{},"172":{},"173":{},"174":{},"180":{},"189":{},"193":{},"196":{},"199":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"222":{},"235":{},"238":{},"239":{},"240":{},"246":{},"255":{}},"component":{}}],["reconcil",{"_index":2498,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["record",{"_index":2851,"title":{},"name":{},"text":{"100":{},"156":{},"181":{},"222":{},"247":{}},"component":{}}],["rectifi",{"_index":1387,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["redeploy",{"_index":483,"title":{},"name":{},"text":{"2":{},"41":{},"60":{},"80":{},"133":{},"199":{}},"component":{}}],["redhat",{"_index":2098,"title":{},"name":{},"text":{"79":{},"108":{},"132":{},"137":{},"169":{},"198":{},"203":{},"235":{}},"component":{}}],["redhat’",{"_index":632,"title":{},"name":{},"text":{"5":{},"44":{},"83":{}},"component":{}}],["redirect",{"_index":376,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["reduc",{"_index":1291,"title":{"95-5":{},"149-5":{},"215-5":{}},"name":{},"text":{"21":{},"37":{},"57":{},"73":{},"94":{},"95":{},"96":{},"148":{},"149":{},"151":{},"214":{},"215":{},"217":{}},"component":{}}],["redux",{"_index":1874,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["reevalu",{"_index":1651,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["ref",{"_index":2051,"title":{},"name":{},"text":{"77":{},"79":{},"80":{},"81":{},"88":{},"99":{},"101":{},"130":{},"132":{},"133":{},"137":{},"141":{},"142":{},"146":{},"155":{},"157":{},"196":{},"198":{},"199":{},"203":{},"207":{},"208":{},"212":{},"221":{},"223":{}},"component":{}}],["refer",{"_index":967,"title":{},"name":{},"text":{"14":{},"50":{},"83":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"108":{},"126":{},"128":{},"134":{},"136":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"169":{},"192":{},"194":{},"200":{},"202":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"235":{},"258":{}},"component":{}}],["referenc",{"_index":2566,"title":{},"name":{},"text":{"96":{},"103":{},"104":{},"105":{},"106":{},"107":{},"128":{},"151":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"194":{},"217":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{}},"component":{}}],["reflect",{"_index":3242,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["refresh",{"_index":1061,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["regard",{"_index":1250,"title":{},"name":{},"text":{"20":{},"32":{},"38":{},"56":{},"60":{},"68":{},"74":{},"78":{},"101":{},"117":{},"131":{},"151":{},"157":{},"197":{},"217":{},"223":{},"240":{}},"component":{}}],["regardless",{"_index":1796,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"153":{},"184":{},"219":{},"250":{}},"component":{}}],["regist",{"_index":202,"title":{},"name":{},"text":{"2":{},"41":{},"87":{},"100":{},"101":{},"108":{},"140":{},"156":{},"157":{},"169":{},"206":{},"222":{},"223":{},"235":{}},"component":{}}],["registerserviceworker.j",{"_index":1867,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["registerserviceworker.t",{"_index":1914,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["registr",{"_index":204,"title":{},"name":{},"text":{"2":{},"20":{},"30":{},"41":{},"56":{},"64":{},"101":{},"157":{},"223":{}},"component":{}}],["registri",{"_index":2093,"title":{},"name":{},"text":{"79":{},"96":{},"128":{},"132":{},"151":{},"194":{},"198":{},"217":{}},"component":{}}],["registry.access.redhat.com",{"_index":3145,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["registry.access.redhat.com/ubi8/python",{"_index":3540,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["registry.redhat.io",{"_index":3146,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["registry/]repo/image[:tag",{"_index":3351,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["registry=registry.example.com",{"_index":3312,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["regress",{"_index":1706,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["regular",{"_index":2671,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["rel",{"_index":976,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"127":{},"128":{},"151":{},"155":{},"193":{},"194":{},"217":{},"221":{}},"component":{}}],["relat",{"_index":873,"title":{},"name":{},"text":{"12":{},"14":{},"18":{},"26":{},"50":{},"54":{},"61":{},"95":{},"96":{},"110":{},"114":{},"128":{},"136":{},"149":{},"151":{},"171":{},"176":{},"181":{},"182":{},"194":{},"202":{},"215":{},"217":{},"237":{},"240":{},"242":{},"247":{},"248":{}},"component":{}}],["relationship",{"_index":748,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["releas",{"_index":470,"title":{"126":{},"192":{},"258":{},"23-1":{},"59-1":{},"80-19":{},"98-20":{},"98-23":{},"133-19":{},"154-23":{},"154-25":{},"154-28":{},"199-19":{},"220-23":{},"220-25":{},"220-28":{}},"name":{"126":{},"192":{},"258":{}},"text":{"2":{},"14":{},"21":{},"27":{},"41":{},"50":{},"57":{},"62":{},"79":{},"80":{},"81":{},"82":{},"83":{},"95":{},"96":{},"97":{},"98":{},"101":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"126":{},"127":{},"132":{},"133":{},"135":{},"136":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"157":{},"160":{},"162":{},"163":{},"164":{},"165":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"192":{},"193":{},"198":{},"199":{},"201":{},"202":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"223":{},"226":{},"228":{},"229":{},"230":{},"231":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["release.nam",{"_index":3338,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["release/$vers",{"_index":2675,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["release/1",{"_index":3235,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["release/1.0.0",{"_index":977,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["relev",{"_index":2237,"title":{},"name":{},"text":{"81":{},"96":{},"151":{},"181":{},"217":{},"247":{}},"component":{}}],["reli",{"_index":2452,"title":{},"name":{},"text":{"95":{},"149":{},"151":{},"153":{},"215":{},"217":{},"219":{}},"component":{}}],["reliabl",{"_index":2588,"title":{},"name":{},"text":{"96":{},"151":{},"174":{},"181":{},"217":{},"240":{},"247":{}},"component":{}}],["reload",{"_index":1930,"title":{},"name":{},"text":{"38":{},"74":{},"174":{},"240":{}},"component":{}}],["remaind",{"_index":902,"title":{},"name":{},"text":{"13":{},"49":{},"92":{},"142":{},"146":{},"208":{},"212":{}},"component":{}}],["rememb",{"_index":2058,"title":{},"name":{},"text":{"77":{},"128":{},"130":{},"194":{},"196":{}},"component":{}}],["remot",{"_index":355,"title":{"32-12":{},"68-12":{},"117-12":{}},"name":{},"text":{"2":{},"14":{},"32":{},"41":{},"50":{},"68":{},"77":{},"80":{},"81":{},"94":{},"98":{},"117":{},"126":{},"130":{},"133":{},"148":{},"154":{},"172":{},"192":{},"196":{},"199":{},"214":{},"217":{},"220":{},"238":{},"258":{}},"component":{}}],["remov",{"_index":1400,"title":{"79-9":{},"80-14":{},"132-9":{},"133-14":{},"198-9":{},"199-14":{}},"name":{},"text":{"23":{},"27":{},"39":{},"59":{},"62":{},"75":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"100":{},"108":{},"111":{},"127":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"156":{},"160":{},"162":{},"163":{},"164":{},"165":{},"169":{},"172":{},"181":{},"184":{},"193":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{},"222":{},"226":{},"228":{},"229":{},"230":{},"231":{},"235":{},"238":{},"247":{},"250":{}},"component":{}}],["renam",{"_index":2306,"title":{"95-4":{},"149-4":{},"150-11":{},"215-4":{},"216-11":{}},"name":{},"text":{"83":{},"95":{},"98":{},"136":{},"149":{},"150":{},"154":{},"202":{},"215":{},"216":{},"220":{}},"component":{}}],["render",{"_index":1965,"title":{},"name":{},"text":{"39":{},"75":{},"99":{},"108":{},"155":{},"169":{},"221":{},"235":{}},"component":{}}],["renderjenkinstemplate.sh",{"_index":1953,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["rendersonarqubetemplate.sh",{"_index":1954,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["rep",{"_index":888,"title":{},"name":{},"text":{"12":{}},"component":{}}],["repeat",{"_index":337,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"82":{},"133":{},"135":{},"199":{},"201":{}},"component":{}}],["replac",{"_index":841,"title":{"80-26":{},"133-26":{},"199-26":{}},"name":{},"text":{"11":{},"12":{},"80":{},"81":{},"83":{},"94":{},"95":{},"98":{},"99":{},"101":{},"133":{},"136":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"199":{},"202":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{}},"component":{}}],["replicaset",{"_index":3231,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["replicationcontrol",{"_index":3230,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["repo",{"_index":900,"title":{},"name":{},"text":{"13":{},"22":{},"39":{},"49":{},"58":{},"75":{},"77":{},"79":{},"83":{},"96":{},"98":{},"101":{},"126":{},"130":{},"132":{},"136":{},"150":{},"151":{},"154":{},"157":{},"192":{},"196":{},"198":{},"202":{},"216":{},"217":{},"220":{},"223":{},"258":{}},"component":{}}],["repo.id",{"_index":2643,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["repo.j",{"_index":1862,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["repo:refs_changed,pr:declined,pr:merged,pr:delet",{"_index":2333,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["repo_bas",{"_index":780,"title":{},"name":{},"text":{"8":{},"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["repo_base=https://bitbucket.example.com/scm",{"_index":2986,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["repo_base}/opendevstack/od",{"_index":2182,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["report",{"_index":719,"title":{},"name":{},"text":{"6":{},"7":{},"13":{},"14":{},"16":{},"17":{},"28":{},"45":{},"46":{},"49":{},"50":{},"52":{},"53":{},"65":{},"85":{},"92":{},"93":{},"96":{},"98":{},"108":{},"112":{},"114":{},"115":{},"123":{},"126":{},"138":{},"146":{},"147":{},"151":{},"154":{},"169":{},"173":{},"174":{},"176":{},"177":{},"180":{},"186":{},"192":{},"204":{},"212":{},"213":{},"217":{},"220":{},"235":{},"239":{},"240":{},"242":{},"243":{},"246":{},"247":{},"253":{},"258":{}},"component":{}}],["reporter.j",{"_index":3807,"title":{},"name":{},"text":{"247":{}},"component":{}}],["reportfil",{"_index":3297,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["repos.sh",{"_index":2043,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["repos=\"od",{"_index":3202,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["repositori",{"_index":134,"title":{"2-60":{},"24-4":{},"39-9":{},"41-60":{},"60-4":{},"75-9":{},"77-3":{},"77-9":{},"79-2":{},"80-1":{},"94-3":{},"98-4":{},"98-5":{},"98-6":{},"98-7":{},"98-8":{},"98-9":{},"98-10":{},"98-11":{},"126-4":{},"126-5":{},"126-6":{},"126-7":{},"126-8":{},"126-9":{},"126-10":{},"126-11":{},"130-3":{},"130-6":{},"132-2":{},"133-1":{},"148-3":{},"154-4":{},"154-5":{},"154-6":{},"154-7":{},"154-8":{},"154-9":{},"154-10":{},"154-11":{},"154-12":{},"154-13":{},"154-14":{},"157-5":{},"192-4":{},"192-5":{},"192-6":{},"192-7":{},"192-8":{},"192-9":{},"192-10":{},"192-11":{},"196-3":{},"196-6":{},"198-2":{},"199-1":{},"214-3":{},"220-4":{},"220-5":{},"220-6":{},"220-7":{},"220-8":{},"220-9":{},"220-10":{},"220-11":{},"220-12":{},"220-13":{},"220-14":{},"223-5":{},"258-4":{},"258-5":{},"258-6":{},"258-7":{},"258-8":{},"258-9":{},"258-10":{},"258-11":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"13":{},"14":{},"17":{},"18":{},"22":{},"24":{},"27":{},"31":{},"32":{},"36":{},"37":{},"39":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"53":{},"54":{},"58":{},"60":{},"62":{},"68":{},"72":{},"73":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"88":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"111":{},"117":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"141":{},"142":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"185":{},"186":{},"190":{},"191":{},"192":{},"194":{},"195":{},"196":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"207":{},"208":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"240":{},"251":{},"253":{},"256":{},"257":{},"258":{}},"component":{}}],["repositories[0].nam",{"_index":2654,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["repositorytyp",{"_index":2616,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["repositorytype=maven2",{"_index":3343,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["repositorytype=raw",{"_index":3346,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["repository’",{"_index":1074,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"126":{},"151":{},"154":{},"192":{},"217":{},"220":{},"258":{}},"component":{}}],["reproduc",{"_index":1645,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["reproduce/retrain",{"_index":1638,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["request",{"_index":736,"title":{},"name":{},"text":{"6":{},"8":{},"19":{},"32":{},"38":{},"45":{},"47":{},"55":{},"68":{},"74":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"96":{},"99":{},"100":{},"109":{},"117":{},"132":{},"133":{},"135":{},"136":{},"141":{},"151":{},"155":{},"156":{},"170":{},"198":{},"199":{},"201":{},"202":{},"207":{},"217":{},"221":{},"222":{},"236":{}},"component":{}}],["requir",{"_index":45,"title":{"3":{},"42":{},"90":{},"144":{},"210":{},"2-2":{},"41-2":{},"94-1":{},"148-1":{},"150-8":{},"214-1":{},"216-8":{}},"name":{"3":{},"42":{},"90":{},"144":{},"210":{}},"text":{"1":{},"2":{},"3":{},"11":{},"22":{},"27":{},"29":{},"31":{},"32":{},"40":{},"41":{},"42":{},"58":{},"62":{},"63":{},"67":{},"68":{},"76":{},"77":{},"79":{},"80":{},"83":{},"90":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"111":{},"112":{},"116":{},"117":{},"126":{},"127":{},"129":{},"130":{},"132":{},"133":{},"136":{},"144":{},"147":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"172":{},"173":{},"174":{},"178":{},"180":{},"192":{},"193":{},"195":{},"196":{},"198":{},"199":{},"202":{},"210":{},"213":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"238":{},"239":{},"240":{},"244":{},"246":{},"258":{}},"component":{}}],["require(\"filt",{"_index":3018,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["require(\"resty.openidc",{"_index":3002,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["require(\"serv",{"_index":3012,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["require(\"your",{"_index":3008,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["requirements.txt",{"_index":1441,"title":{},"name":{},"text":{"24":{},"29":{},"31":{},"32":{},"60":{},"63":{},"67":{},"68":{},"112":{},"116":{},"117":{},"173":{},"178":{},"180":{},"239":{},"244":{},"246":{}},"component":{}}],["requirements.yml",{"_index":2013,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["requirequalitygatepass",{"_index":2554,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["requisit",{"_index":1845,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"122":{},"185":{},"251":{}},"component":{}}],["reqwest",{"_index":3761,"title":{"240-13":{}},"name":{},"text":{"240":{}},"component":{}}],["reqwest’",{"_index":3787,"title":{},"name":{},"text":{"240":{}},"component":{}}],["rersouc",{"_index":1419,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["reset",{"_index":2142,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["resolut",{"_index":2624,"title":{"98-3":{},"98-7":{},"98-10":{},"126-3":{},"126-7":{},"126-10":{},"154-3":{},"154-10":{},"154-13":{},"192-3":{},"192-7":{},"192-10":{},"220-3":{},"220-10":{},"220-13":{},"258-3":{},"258-7":{},"258-10":{}},"name":{},"text":{},"component":{}}],["resolv",{"_index":2625,"title":{"98-8":{},"98-9":{},"126-8":{},"126-9":{},"154-11":{},"154-12":{},"192-8":{},"192-9":{},"220-11":{},"220-12":{},"258-8":{},"258-9":{}},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["resourc",{"_index":465,"title":{"153":{},"219":{},"24-3":{},"60-3":{},"79-6":{},"80-7":{},"84-1":{},"94-5":{},"96-9":{},"127-2":{},"132-6":{},"133-7":{},"148-5":{},"150-4":{},"151-9":{},"193-2":{},"198-6":{},"199-7":{},"214-5":{},"216-4":{},"217-9":{}},"name":{},"text":{"2":{},"19":{},"22":{},"24":{},"31":{},"32":{},"36":{},"39":{},"41":{},"47":{},"55":{},"58":{},"60":{},"67":{},"68":{},"72":{},"75":{},"77":{},"79":{},"80":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"108":{},"116":{},"117":{},"120":{},"122":{},"123":{},"127":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"158":{},"160":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"193":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"224":{},"226":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{}},"component":{}}],["resourcelimitcpu",{"_index":1989,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["resourcelimitmemori",{"_index":1993,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["resourcenam",{"_index":2512,"title":{},"name":{},"text":{"96":{},"150":{},"151":{},"216":{},"217":{}},"component":{}}],["resourcerequestcpu",{"_index":1987,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["resourcerequestmemori",{"_index":1991,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["respect",{"_index":289,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"126":{},"128":{},"151":{},"154":{},"181":{},"192":{},"194":{},"217":{},"220":{},"247":{},"258":{}},"component":{}}],["respond",{"_index":2855,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["respons",{"_index":1967,"title":{"47-5":{},"88-5":{},"100-9":{},"141-5":{},"156-9":{},"207-5":{},"222-9":{}},"name":{},"text":{"47":{},"88":{},"100":{},"109":{},"141":{},"156":{},"170":{},"207":{},"222":{},"236":{}},"component":{}}],["response\").filter_stack_trac",{"_index":3022,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["response.txt",{"_index":2834,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["response_fil",{"_index":2836,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["response_file=response.txt",{"_index":2835,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["respositori",{"_index":3166,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["rest",{"_index":1131,"title":{"19-5":{},"22-5":{},"55-5":{},"58-5":{},"100-6":{},"100-7":{},"156-6":{},"156-7":{},"222-6":{},"222-7":{}},"name":{},"text":{"19":{},"20":{},"22":{},"32":{},"55":{},"56":{},"58":{},"68":{},"81":{},"100":{},"101":{},"108":{},"113":{},"117":{},"156":{},"157":{},"169":{},"175":{},"222":{},"223":{},"235":{},"241":{}},"component":{}}],["rest,data",{"_index":3519,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["rest,restdocs,secur",{"_index":1512,"title":{},"name":{},"text":{"27":{},"62":{},"111":{}},"component":{}}],["restart",{"_index":613,"title":{},"name":{},"text":{"4":{},"32":{},"43":{},"68":{},"79":{},"91":{},"101":{},"117":{},"128":{},"132":{},"145":{},"157":{},"194":{},"198":{},"211":{},"223":{}},"component":{}}],["restclient",{"_index":1207,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["resti",{"_index":3000,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["restrict",{"_index":1659,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"88":{},"96":{},"117":{},"141":{},"153":{},"189":{},"207":{},"219":{},"255":{}},"component":{}}],["resty_image_base=\"alpin",{"_index":875,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_image_tag=\"3.8",{"_index":876,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_openssl_version=\"1.0.2p",{"_index":882,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_pcre_version=\"8.42",{"_index":883,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_version=\"1.13.6.2",{"_index":881,"title":{},"name":{},"text":{"12":{}},"component":{}}],["result",{"_index":630,"title":{"5-7":{},"44-7":{}},"name":{},"text":{"7":{},"14":{},"28":{},"46":{},"50":{},"65":{},"77":{},"79":{},"81":{},"96":{},"98":{},"99":{},"108":{},"114":{},"115":{},"120":{},"130":{},"132":{},"151":{},"154":{},"155":{},"169":{},"176":{},"177":{},"181":{},"183":{},"196":{},"198":{},"217":{},"220":{},"221":{},"235":{},"242":{},"243":{},"247":{},"249":{}},"component":{}}],["results/test",{"_index":2348,"title":{},"name":{},"text":{"93":{},"96":{},"108":{},"115":{},"147":{},"151":{},"169":{},"177":{},"213":{},"217":{},"235":{},"243":{}},"component":{}}],["resum",{"_index":3369,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["retri",{"_index":2610,"title":{"154-26":{},"220-26":{}},"name":{},"text":{"96":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["retriev",{"_index":375,"title":{},"name":{},"text":{"2":{},"14":{},"32":{},"41":{},"47":{},"50":{},"68":{},"88":{},"94":{},"95":{},"98":{},"99":{},"117":{},"136":{},"141":{},"148":{},"149":{},"153":{},"154":{},"155":{},"189":{},"202":{},"207":{},"214":{},"215":{},"219":{},"220":{},"221":{},"255":{}},"component":{}}],["return",{"_index":1730,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"88":{},"96":{},"117":{},"141":{},"150":{},"151":{},"207":{},"216":{},"217":{}},"component":{}}],["returnstatu",{"_index":3471,"title":{},"name":{},"text":{"161":{},"172":{},"181":{},"227":{},"234":{},"238":{},"247":{}},"component":{}}],["reus",{"_index":1013,"title":{},"name":{},"text":{"14":{},"50":{},"82":{},"96":{},"99":{},"101":{},"135":{},"151":{},"155":{},"157":{},"201":{},"217":{},"221":{},"223":{}},"component":{}}],["reusabl",{"_index":3600,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["revers",{"_index":2734,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["revert",{"_index":2499,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["review",{"_index":894,"title":{},"name":{},"text":{"13":{},"14":{},"27":{},"49":{},"50":{},"62":{},"79":{},"80":{},"93":{},"95":{},"96":{},"98":{},"111":{},"132":{},"133":{},"147":{},"149":{},"151":{},"154":{},"172":{},"198":{},"199":{},"213":{},"215":{},"217":{},"220":{},"238":{}},"component":{}}],["revis",{"_index":3206,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"151":{},"153":{},"203":{},"208":{},"212":{},"217":{},"219":{}},"component":{}}],["revisit",{"_index":3119,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["revsison",{"_index":1065,"title":{},"name":{},"text":{"14":{},"50":{},"96":{}},"component":{}}],["rewrit",{"_index":3016,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["rewrite_by_lua_block",{"_index":3015,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["rfc",{"_index":1043,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["right",{"_index":335,"title":{"80-15":{},"94-4":{},"133-15":{},"148-4":{},"199-15":{},"214-4":{}},"name":{},"text":{"2":{},"4":{},"6":{},"22":{},"39":{},"41":{},"43":{},"45":{},"58":{},"60":{},"75":{},"77":{},"80":{},"91":{},"94":{},"98":{},"101":{},"109":{},"130":{},"133":{},"145":{},"148":{},"151":{},"153":{},"154":{},"157":{},"170":{},"178":{},"181":{},"196":{},"199":{},"211":{},"214":{},"217":{},"219":{},"220":{},"223":{},"236":{},"244":{},"247":{}},"component":{}}],["ring",{"_index":3798,"title":{},"name":{},"text":{"240":{}},"component":{}}],["risk",{"_index":3151,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["rm",{"_index":2837,"title":{},"name":{},"text":{"100":{},"156":{},"181":{},"222":{},"247":{}},"component":{}}],["roadmap",{"_index":2273,"title":{"83-8":{},"136-7":{},"202-7":{}},"name":{},"text":{},"component":{}}],["robots.txt",{"_index":1910,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["robust",{"_index":3601,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["role",{"_index":33,"title":{"2-61":{},"4-2":{},"41-61":{},"43-2":{},"76-2":{},"91-2":{},"101-4":{},"101-6":{},"101-7":{},"129-2":{},"145-2":{},"157-7":{},"157-9":{},"157-10":{},"189-8":{},"195-2":{},"211-2":{},"223-7":{},"223-9":{},"223-10":{},"255-8":{}},"name":{},"text":{"1":{},"2":{},"4":{},"20":{},"22":{},"40":{},"41":{},"43":{},"56":{},"58":{},"76":{},"78":{},"80":{},"91":{},"94":{},"101":{},"129":{},"131":{},"133":{},"145":{},"148":{},"153":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"184":{},"189":{},"195":{},"197":{},"199":{},"211":{},"214":{},"219":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"250":{},"255":{}},"component":{}}],["rolebind",{"_index":2710,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["roles_path",{"_index":606,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["roll",{"_index":2296,"title":{},"name":{},"text":{"83":{},"95":{},"96":{},"128":{},"136":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"194":{},"202":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{}},"component":{}}],["rollback",{"_index":1392,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["rollout",{"_index":2138,"title":{"80-16":{},"133-16":{},"199-16":{}},"name":{},"text":{"94":{},"96":{},"128":{},"137":{},"142":{},"146":{},"148":{},"151":{},"153":{},"194":{},"203":{},"208":{},"212":{},"214":{},"217":{},"219":{}},"component":{}}],["root",{"_index":608,"title":{},"name":{},"text":{"4":{},"6":{},"8":{},"19":{},"28":{},"30":{},"31":{},"32":{},"33":{},"39":{},"43":{},"45":{},"47":{},"55":{},"64":{},"65":{},"67":{},"68":{},"69":{},"75":{},"85":{},"88":{},"91":{},"93":{},"98":{},"99":{},"100":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"121":{},"138":{},"141":{},"145":{},"147":{},"154":{},"155":{},"156":{},"172":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"182":{},"184":{},"187":{},"188":{},"204":{},"207":{},"211":{},"213":{},"220":{},"221":{},"222":{},"238":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"248":{},"250":{},"252":{},"254":{}},"component":{}}],["root/src/work",{"_index":2006,"title":{},"name":{},"text":{"67":{},"116":{},"178":{},"244":{}},"component":{}}],["rootepic.j",{"_index":1868,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["rootreducer.j",{"_index":1869,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["roughli",{"_index":2286,"title":{},"name":{},"text":{"83":{},"95":{},"149":{},"215":{}},"component":{}}],["rout",{"_index":708,"title":{"79-9":{},"80-11":{},"109-5":{},"132-9":{},"133-11":{},"170-5":{},"198-9":{},"199-11":{},"236-5":{}},"name":{},"text":{"6":{},"8":{},"21":{},"24":{},"28":{},"30":{},"31":{},"32":{},"33":{},"45":{},"47":{},"57":{},"60":{},"64":{},"65":{},"67":{},"68":{},"69":{},"79":{},"80":{},"87":{},"88":{},"96":{},"98":{},"101":{},"113":{},"116":{},"117":{},"118":{},"132":{},"133":{},"140":{},"141":{},"151":{},"154":{},"157":{},"174":{},"175":{},"178":{},"179":{},"198":{},"199":{},"206":{},"207":{},"217":{},"220":{},"223":{},"240":{},"241":{},"244":{},"245":{}},"component":{}}],["route/proxi",{"_index":2993,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["router",{"_index":1916,"title":{},"name":{},"text":{"38":{},"74":{},"174":{},"240":{}},"component":{}}],["router.j",{"_index":1859,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["router.r",{"_index":3568,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["router.t",{"_index":1915,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["routes/ocp",{"_index":2154,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["routing.module.t",{"_index":3701,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["row",{"_index":3688,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["rsh",{"_index":2124,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["rshini",{"_index":1754,"title":{"33":{}},"name":{"33":{},"69":{},"118":{},"179":{},"245":{}},"text":{"33":{},"69":{},"94":{},"118":{},"136":{},"148":{},"150":{},"179":{},"202":{},"214":{},"216":{},"245":{}},"component":{}}],["rubi",{"_index":3451,"title":{},"name":{},"text":{"160":{},"187":{},"188":{},"226":{},"252":{},"254":{}},"component":{}}],["rule",{"_index":2363,"title":{},"name":{},"text":{"93":{},"98":{},"147":{},"154":{},"213":{},"220":{}},"component":{}}],["ruleset",{"_index":838,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["run",{"_index":29,"title":{"2-14":{},"2-30":{},"2-36":{},"2-46":{},"2-67":{},"41-14":{},"41-30":{},"41-36":{},"41-46":{},"41-67":{},"96-11":{},"100-1":{},"151-11":{},"156-1":{},"217-11":{},"222-1":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"8":{},"13":{},"14":{},"16":{},"19":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"52":{},"55":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"79":{},"80":{},"83":{},"84":{},"88":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"129":{},"130":{},"132":{},"133":{},"136":{},"141":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"158":{},"161":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"189":{},"192":{},"194":{},"195":{},"196":{},"198":{},"199":{},"202":{},"207":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"224":{},"227":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["run.sh",{"_index":1562,"title":{},"name":{},"text":{"29":{},"31":{},"63":{},"67":{},"112":{},"116":{},"173":{},"178":{},"239":{},"244":{}},"component":{}}],["runbook",{"_index":653,"title":{},"name":{},"text":{"5":{},"44":{}},"component":{}}],["rundeck",{"_index":16,"title":{"2-64":{},"41-64":{},"80-14":{},"133-14":{},"199-14":{}},"name":{},"text":{"1":{},"2":{},"3":{},"19":{},"20":{},"21":{},"22":{},"39":{},"40":{},"41":{},"42":{},"55":{},"56":{},"57":{},"58":{},"75":{},"80":{},"83":{},"133":{},"136":{},"199":{},"202":{}},"component":{}}],["rundeck.admin_password",{"_index":1259,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["rundeck.admin_password=rundeck_admin",{"_index":1263,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["rundeck.admin_us",{"_index":1260,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["rundeck.admin_user=rundeck_admin",{"_index":1264,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["runpolici",{"_index":2180,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["runt",{"_index":1572,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["runtim",{"_index":1279,"title":{"98-13":{},"154-16":{},"189-10":{},"220-16":{},"255-10":{}},"name":{},"text":{"21":{},"57":{},"80":{},"102":{},"109":{},"114":{},"133":{},"153":{},"158":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"179":{},"180":{},"184":{},"189":{},"199":{},"219":{},"224":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"245":{},"246":{},"250":{},"255":{}},"component":{}}],["runtimevers",{"_index":3382,"title":{"189-11":{},"255-11":{}},"name":{},"text":{"153":{},"172":{},"173":{},"174":{},"175":{},"176":{},"179":{},"180":{},"184":{},"189":{},"219":{},"238":{},"239":{},"240":{},"241":{},"242":{},"245":{},"246":{},"250":{},"255":{}},"component":{}}],["rust",{"_index":3494,"title":{"167":{},"174":{},"233":{},"240":{}},"name":{"167":{},"174":{},"233":{},"240":{}},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["rust/axum",{"_index":3820,"title":{},"name":{},"text":{"253":{}},"component":{}}],["rustfmt.toml",{"_index":3575,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["rustl",{"_index":3584,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["rustsec",{"_index":3773,"title":{},"name":{},"text":{"240":{}},"component":{}}],["rustup",{"_index":3578,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["s3",{"_index":3690,"title":{},"name":{},"text":{"182":{},"187":{},"248":{},"252":{}},"component":{}}],["sa",{"_index":2703,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["saa",{"_index":3258,"title":{"154-6":{},"220-6":{}},"name":{},"text":{"150":{},"154":{},"216":{},"220":{}},"component":{}}],["sadipsc",{"_index":797,"title":{},"name":{},"text":{"10":{}},"component":{}}],["safari",{"_index":1907,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["safe",{"_index":3547,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["safeti",{"_index":2602,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["same",{"_index":441,"title":{},"name":{},"text":{"2":{},"14":{},"24":{},"41":{},"50":{},"60":{},"79":{},"95":{},"96":{},"98":{},"101":{},"108":{},"109":{},"128":{},"130":{},"132":{},"149":{},"151":{},"153":{},"154":{},"157":{},"169":{},"170":{},"181":{},"189":{},"194":{},"196":{},"198":{},"215":{},"217":{},"219":{},"220":{},"223":{},"235":{},"236":{},"247":{},"255":{}},"component":{}}],["saml",{"_index":3218,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["sampl",{"_index":185,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"77":{},"80":{},"100":{},"114":{},"123":{},"130":{},"133":{},"156":{},"176":{},"186":{},"187":{},"188":{},"196":{},"199":{},"222":{},"242":{},"252":{},"253":{},"254":{}},"component":{}}],["sample.pi",{"_index":3628,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["sample_test.pi",{"_index":3632,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["sanctu",{"_index":825,"title":{},"name":{},"text":{"10":{}},"component":{}}],["sanit",{"_index":2485,"title":{},"name":{},"text":{"96":{},"151":{},"189":{},"217":{},"255":{}},"component":{}}],["sanitis",{"_index":3392,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["sass",{"_index":1830,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["save",{"_index":327,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{},"47":{},"88":{},"100":{},"141":{},"156":{},"207":{},"222":{}},"component":{}}],["sayhello(def",{"_index":2543,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sbom",{"_index":3210,"title":{},"name":{},"text":{"138":{},"151":{},"204":{},"217":{}},"component":{}}],["sbom.json",{"_index":3299,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sbt",{"_index":493,"title":{},"name":{},"text":{"2":{},"30":{},"41":{},"64":{},"107":{},"113":{},"168":{},"175":{},"234":{},"241":{}},"component":{}}],["sbt.org/scalasbt/sbt",{"_index":497,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["scaffold",{"_index":1826,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["scala",{"_index":1591,"title":{"30":{},"64":{},"107":{},"113":{},"168":{},"175":{},"234":{},"241":{}},"name":{"30":{},"64":{},"107":{},"113":{},"168":{},"175":{},"234":{},"241":{}},"text":{"30":{},"64":{},"95":{},"107":{},"113":{},"136":{},"149":{},"168":{},"175":{},"202":{},"215":{},"234":{},"241":{}},"component":{}}],["scala/akka",{"_index":1941,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["scala/play",{"_index":3125,"title":{},"name":{},"text":{"123":{},"186":{},"253":{}},"component":{}}],["scalafmt",{"_index":3061,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["scalafmt.conf",{"_index":3056,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["scalafmtcheckal",{"_index":3749,"title":{},"name":{},"text":{"234":{}},"component":{}}],["scalafmtsbtcheck",{"_index":3748,"title":{},"name":{},"text":{"234":{}},"component":{}}],["scale",{"_index":2117,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["scan",{"_index":752,"title":{"14-11":{},"14-14":{},"14-16":{},"50-11":{},"50-14":{},"50-16":{},"93-2":{},"93-3":{},"93-4":{},"147-2":{},"147-3":{},"147-4":{},"213-2":{},"213-3":{},"213-4":{}},"name":{},"text":{"7":{},"14":{},"16":{},"17":{},"46":{},"50":{},"52":{},"53":{},"85":{},"93":{},"94":{},"96":{},"98":{},"138":{},"147":{},"148":{},"151":{},"154":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"204":{},"213":{},"214":{},"217":{},"220":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"254":{},"258":{}},"component":{}}],["scanner",{"_index":717,"title":{},"name":{},"text":{"6":{},"7":{},"14":{},"17":{},"45":{},"46":{},"50":{},"53":{},"85":{},"96":{},"138":{},"151":{},"161":{},"204":{},"217":{},"227":{},"234":{}},"component":{}}],["scenario",{"_index":1294,"title":{},"name":{},"text":{"21":{},"57":{},"98":{},"100":{},"154":{},"156":{},"220":{},"222":{}},"component":{}}],["schedul",{"_index":1426,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["schema",{"_index":46,"title":{},"name":{},"text":{"1":{},"19":{},"40":{},"47":{},"55":{},"76":{},"88":{},"100":{},"101":{},"129":{},"141":{},"156":{},"157":{},"182":{},"195":{},"207":{},"222":{},"223":{},"248":{}},"component":{}}],["schemas.yml",{"_index":44,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["schemd",{"_index":2919,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["scheme",{"_index":854,"title":{"83-12":{},"83-13":{},"83-14":{},"101-5":{},"101-7":{},"136-12":{},"136-13":{},"136-14":{},"157-8":{},"157-10":{},"202-12":{},"202-13":{},"202-14":{},"223-8":{},"223-10":{}},"name":{},"text":{"11":{},"14":{},"50":{},"95":{},"96":{},"101":{},"149":{},"151":{},"157":{},"215":{},"217":{},"223":{}},"component":{}}],["scienc",{"_index":1609,"title":{"31":{},"32":{},"33":{},"67":{},"68":{},"69":{},"116":{},"117":{},"118":{},"178":{},"179":{},"180":{},"244":{},"245":{},"246":{},"39-4":{},"75-4":{},"123-5":{},"186-5":{},"253-5":{}},"name":{},"text":{"31":{},"39":{},"67":{},"75":{},"98":{},"116":{},"123":{},"126":{},"153":{},"154":{},"178":{},"186":{},"192":{},"219":{},"220":{},"244":{},"253":{},"258":{}},"component":{}}],["scientist",{"_index":1632,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["scikit",{"_index":1707,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["scm",{"_index":140,"title":{"2-65":{},"41-65":{}},"name":{},"text":{},"component":{}}],["scm.global.readablerepos.opendevstack[x",{"_index":2167,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["scope",{"_index":22,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"96":{},"129":{},"130":{},"151":{},"195":{},"196":{},"217":{}},"component":{}}],["scratch",{"_index":1944,"title":{},"name":{},"text":{"39":{},"75":{},"123":{},"186":{},"253":{}},"component":{}}],["screen",{"_index":400,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["screenshot.t",{"_index":3805,"title":{},"name":{},"text":{"247":{}},"component":{}}],["screenshot.types.t",{"_index":3806,"title":{},"name":{},"text":{"247":{}},"component":{}}],["script",{"_index":6,"title":{"6-3":{},"45-3":{},"87-2":{},"140-2":{},"206-2":{}},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"12":{},"14":{},"19":{},"24":{},"27":{},"29":{},"32":{},"35":{},"36":{},"37":{},"39":{},"40":{},"41":{},"45":{},"50":{},"55":{},"60":{},"62":{},"63":{},"68":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"80":{},"87":{},"97":{},"98":{},"100":{},"108":{},"111":{},"112":{},"114":{},"117":{},"121":{},"122":{},"127":{},"129":{},"130":{},"133":{},"137":{},"140":{},"142":{},"146":{},"152":{},"154":{},"156":{},"161":{},"169":{},"172":{},"173":{},"176":{},"181":{},"184":{},"185":{},"193":{},"195":{},"196":{},"199":{},"203":{},"206":{},"208":{},"212":{},"218":{},"220":{},"222":{},"227":{},"234":{},"235":{},"238":{},"239":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["script.sh",{"_index":1115,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["scripting/develop",{"_index":860,"title":{},"name":{},"text":{"12":{}},"component":{}}],["scripts/creat",{"_index":2698,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["scrum",{"_index":1336,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["sea",{"_index":823,"title":{},"name":{},"text":{"10":{}},"component":{}}],["search",{"_index":345,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"91":{},"98":{},"145":{},"154":{},"211":{},"220":{}},"component":{}}],["second",{"_index":1102,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"100":{},"156":{},"222":{}},"component":{}}],["secret",{"_index":712,"title":{},"name":{},"text":{"6":{},"8":{},"13":{},"20":{},"24":{},"45":{},"47":{},"49":{},"56":{},"60":{},"80":{},"88":{},"92":{},"96":{},"98":{},"101":{},"133":{},"141":{},"146":{},"150":{},"151":{},"154":{},"157":{},"188":{},"199":{},"207":{},"212":{},"216":{},"217":{},"220":{},"223":{},"254":{}},"component":{}}],["secret.env",{"_index":551,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["secret.sh",{"_index":2704,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["secret=put",{"_index":1227,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["secretnam",{"_index":3281,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["secrets.json",{"_index":1775,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["section",{"_index":340,"title":{},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"27":{},"39":{},"41":{},"43":{},"45":{},"47":{},"62":{},"75":{},"80":{},"81":{},"88":{},"91":{},"94":{},"95":{},"98":{},"101":{},"111":{},"133":{},"141":{},"145":{},"148":{},"149":{},"151":{},"154":{},"157":{},"172":{},"199":{},"207":{},"211":{},"214":{},"215":{},"217":{},"220":{},"223":{},"238":{}},"component":{}}],["secur",{"_index":439,"title":{"12-4":{},"79-9":{},"80-11":{},"132-9":{},"133-11":{},"198-9":{},"199-11":{}},"name":{},"text":{"2":{},"12":{},"13":{},"14":{},"16":{},"19":{},"22":{},"24":{},"41":{},"49":{},"50":{},"52":{},"55":{},"58":{},"60":{},"79":{},"80":{},"83":{},"88":{},"93":{},"96":{},"100":{},"101":{},"128":{},"132":{},"133":{},"136":{},"141":{},"147":{},"151":{},"156":{},"157":{},"194":{},"198":{},"199":{},"202":{},"207":{},"213":{},"217":{},"222":{},"223":{},"240":{}},"component":{}}],["sed",{"_index":799,"title":{},"name":{},"text":{"10":{}},"component":{}}],["see",{"_index":252,"title":{},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"19":{},"20":{},"22":{},"27":{},"41":{},"43":{},"45":{},"47":{},"49":{},"50":{},"55":{},"56":{},"58":{},"62":{},"77":{},"78":{},"80":{},"81":{},"82":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"120":{},"123":{},"124":{},"125":{},"130":{},"131":{},"133":{},"135":{},"136":{},"141":{},"145":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"166":{},"167":{},"169":{},"170":{},"172":{},"173":{},"174":{},"178":{},"181":{},"183":{},"184":{},"186":{},"190":{},"191":{},"196":{},"197":{},"199":{},"201":{},"202":{},"207":{},"211":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"232":{},"233":{},"235":{},"236":{},"238":{},"239":{},"240":{},"244":{},"247":{},"249":{},"250":{},"253":{},"256":{},"257":{}},"component":{}}],["seed",{"_index":2897,"title":{},"name":{},"text":{"101":{},"113":{},"157":{},"175":{},"223":{},"241":{}},"component":{}}],["seen",{"_index":1134,"title":{},"name":{},"text":{"19":{},"28":{},"55":{},"65":{},"100":{},"114":{},"136":{},"146":{},"151":{},"156":{},"176":{},"202":{},"212":{},"217":{},"222":{},"242":{}},"component":{}}],["seldom",{"_index":3420,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["select",{"_index":226,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"41":{},"44":{},"45":{},"47":{},"50":{},"77":{},"79":{},"80":{},"83":{},"88":{},"96":{},"102":{},"132":{},"133":{},"136":{},"141":{},"151":{},"158":{},"178":{},"198":{},"199":{},"202":{},"207":{},"217":{},"224":{},"244":{}},"component":{}}],["selector",{"_index":2574,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["self",{"_index":2711,"title":{},"name":{},"text":{"98":{}},"component":{}}],["semant",{"_index":3371,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["send",{"_index":689,"title":{"6-4":{},"45-4":{}},"name":{},"text":{"6":{},"13":{},"14":{},"19":{},"45":{},"47":{},"49":{},"50":{},"55":{},"88":{},"92":{},"96":{},"100":{},"141":{},"146":{},"151":{},"156":{},"207":{},"212":{},"217":{},"222":{}},"component":{}}],["sens",{"_index":3402,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["sent",{"_index":2203,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["separ",{"_index":772,"title":{},"name":{},"text":{"8":{},"12":{},"20":{},"29":{},"36":{},"47":{},"56":{},"63":{},"72":{},"82":{},"88":{},"93":{},"96":{},"98":{},"101":{},"112":{},"122":{},"135":{},"137":{},"141":{},"147":{},"150":{},"151":{},"154":{},"157":{},"173":{},"180":{},"185":{},"201":{},"203":{},"207":{},"213":{},"216":{},"217":{},"220":{},"223":{},"239":{},"246":{},"251":{}},"component":{}}],["seper",{"_index":27,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["sequenc",{"_index":2252,"title":{},"name":{},"text":{"81":{},"96":{}},"component":{}}],["sequenti",{"_index":2657,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["seri",{"_index":2873,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["serial",{"_index":2181,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["serv",{"_index":1551,"title":{},"name":{},"text":{"28":{},"32":{},"35":{},"36":{},"38":{},"47":{},"65":{},"68":{},"71":{},"72":{},"74":{},"88":{},"117":{},"121":{},"122":{},"141":{},"153":{},"184":{},"185":{},"189":{},"207":{},"219":{},"250":{},"251":{},"255":{}},"component":{}}],["server",{"_index":211,"title":{"77-1":{},"130-1":{},"196-1":{}},"name":{},"text":{"2":{},"6":{},"11":{},"12":{},"19":{},"24":{},"28":{},"29":{},"30":{},"32":{},"35":{},"36":{},"37":{},"41":{},"45":{},"55":{},"60":{},"63":{},"64":{},"65":{},"68":{},"71":{},"72":{},"73":{},"77":{},"79":{},"80":{},"87":{},"93":{},"96":{},"100":{},"101":{},"109":{},"112":{},"114":{},"117":{},"121":{},"122":{},"130":{},"132":{},"133":{},"138":{},"140":{},"147":{},"151":{},"156":{},"157":{},"170":{},"173":{},"174":{},"176":{},"184":{},"185":{},"196":{},"198":{},"199":{},"204":{},"206":{},"213":{},"217":{},"222":{},"223":{},"236":{},"239":{},"240":{},"242":{},"250":{},"251":{}},"component":{}}],["server_signatur",{"_index":845,"title":{},"name":{},"text":{"11":{}},"component":{}}],["servic",{"_index":547,"title":{"124":{},"190":{},"256":{},"32-2":{},"32-5":{},"68-2":{},"68-5":{},"77-15":{},"94-10":{},"98-5":{},"109-5":{},"117-2":{},"117-5":{},"126-5":{},"130-13":{},"148-10":{},"150-10":{},"154-6":{},"154-7":{},"170-5":{},"192-5":{},"196-13":{},"214-10":{},"216-10":{},"220-6":{},"220-7":{},"236-5":{},"258-5":{}},"name":{"32":{},"68":{},"117":{}},"text":{"2":{},"6":{},"8":{},"11":{},"14":{},"19":{},"22":{},"24":{},"32":{},"36":{},"38":{},"39":{},"41":{},"45":{},"47":{},"50":{},"55":{},"58":{},"60":{},"68":{},"72":{},"74":{},"75":{},"77":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"109":{},"117":{},"122":{},"123":{},"126":{},"127":{},"128":{},"130":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"170":{},"172":{},"174":{},"177":{},"178":{},"179":{},"186":{},"189":{},"192":{},"193":{},"194":{},"196":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"236":{},"238":{},"240":{},"243":{},"244":{},"245":{},"253":{},"255":{},"258":{}},"component":{}}],["service..svc:8080",{"_index":1722,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["service.yaml",{"_index":3564,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["service.yml",{"_index":3558,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["service/airflow",{"_index":1412,"title":{},"name":{},"text":{"24":{}},"component":{}}],["serviceaccount",{"_index":1019,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["serviceregistry.instance.get(bitbucketservic",{"_index":2546,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["services.infrastructure.remote.dvc.data_sync",{"_index":1695,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["services.openshift.enabled=tru",{"_index":3447,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["session",{"_index":109,"title":{"2-24":{},"41-24":{}},"name":{},"text":{"2":{},"41":{},"79":{},"132":{},"178":{},"198":{},"244":{}},"component":{}}],["set",{"_index":17,"title":{"2-39":{},"2-40":{},"2-47":{},"41-39":{},"41-40":{},"41-47":{},"178-5":{},"244-5":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"17":{},"20":{},"22":{},"25":{},"27":{},"29":{},"31":{},"32":{},"33":{},"35":{},"36":{},"37":{},"40":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"53":{},"56":{},"58":{},"62":{},"63":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"85":{},"87":{},"88":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"112":{},"115":{},"116":{},"117":{},"118":{},"121":{},"122":{},"123":{},"126":{},"129":{},"130":{},"132":{},"133":{},"136":{},"138":{},"140":{},"141":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"172":{},"173":{},"174":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"186":{},"189":{},"192":{},"195":{},"196":{},"198":{},"199":{},"202":{},"204":{},"206":{},"207":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"238":{},"239":{},"240":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"253":{},"255":{},"258":{}},"component":{}}],["settings.gradlew",{"_index":1497,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["settings.r",{"_index":3569,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["setup",{"_index":3,"title":{"1":{},"40":{},"76":{},"77":{},"129":{},"130":{},"195":{},"196":{},"2-9":{},"2-37":{},"6-8":{},"8-2":{},"13-1":{},"24-1":{},"32-1":{},"41-9":{},"41-37":{},"45-8":{},"49-1":{},"60-1":{},"68-1":{},"77-2":{},"80-11":{},"117-1":{},"130-2":{},"133-11":{},"196-2":{},"199-11":{}},"name":{"1":{},"40":{},"76":{},"129":{},"195":{}},"text":{"1":{},"2":{},"6":{},"8":{},"13":{},"14":{},"21":{},"22":{},"24":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"40":{},"41":{},"45":{},"49":{},"50":{},"57":{},"58":{},"60":{},"63":{},"64":{},"65":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"92":{},"94":{},"96":{},"98":{},"100":{},"101":{},"108":{},"112":{},"113":{},"114":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"142":{},"146":{},"148":{},"151":{},"154":{},"156":{},"157":{},"169":{},"173":{},"174":{},"175":{},"176":{},"178":{},"181":{},"183":{},"184":{},"185":{},"186":{},"192":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"208":{},"212":{},"214":{},"217":{},"220":{},"222":{},"223":{},"235":{},"239":{},"240":{},"241":{},"242":{},"244":{},"247":{},"249":{},"250":{},"251":{},"253":{},"258":{}},"component":{}}],["setup.conf",{"_index":843,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["setup.pi",{"_index":1430,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["setup/ansible/rol",{"_index":2008,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["setup/repos.sh",{"_index":2049,"title":{},"name":{},"text":{"77":{}},"component":{}}],["setup/script",{"_index":449,"title":{},"name":{},"text":{"2":{}},"component":{}}],["sever",{"_index":179,"title":{},"name":{},"text":{"2":{},"6":{},"19":{},"22":{},"24":{},"41":{},"45":{},"55":{},"58":{},"60":{},"84":{},"86":{},"96":{},"100":{},"102":{},"139":{},"151":{},"156":{},"158":{},"205":{},"217":{},"222":{},"224":{}},"component":{}}],["severitythreshold",{"_index":2560,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sh",{"_index":1114,"title":{},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"99":{},"115":{},"155":{},"174":{},"177":{},"221":{},"240":{},"243":{}},"component":{}}],["sh(\"oc",{"_index":2529,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sh(script",{"_index":3466,"title":{},"name":{},"text":{"161":{},"172":{},"181":{},"227":{},"234":{},"238":{},"247":{}},"component":{}}],["sha",{"_index":1022,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"96":{},"98":{},"100":{},"151":{},"154":{},"156":{},"217":{},"220":{},"222":{}},"component":{}}],["shall",{"_index":159,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["share",{"_index":144,"title":{"10":{},"14":{},"50":{},"97":{},"152":{},"218":{},"2-68":{},"41-68":{},"80-13":{},"94-10":{},"95-3":{},"133-13":{},"148-10":{},"149-3":{},"150-2":{},"199-13":{},"214-10":{},"215-3":{},"216-2":{}},"name":{},"text":{"2":{},"4":{},"5":{},"7":{},"12":{},"14":{},"21":{},"24":{},"25":{},"26":{},"27":{},"31":{},"36":{},"37":{},"39":{},"41":{},"43":{},"44":{},"46":{},"50":{},"57":{},"60":{},"61":{},"62":{},"66":{},"67":{},"72":{},"73":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"87":{},"91":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"108":{},"109":{},"110":{},"111":{},"115":{},"116":{},"122":{},"123":{},"124":{},"125":{},"130":{},"133":{},"135":{},"136":{},"140":{},"145":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"169":{},"170":{},"171":{},"172":{},"177":{},"178":{},"185":{},"186":{},"190":{},"191":{},"196":{},"199":{},"201":{},"202":{},"206":{},"211":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"235":{},"236":{},"237":{},"238":{},"240":{},"243":{},"244":{},"251":{},"253":{},"256":{},"257":{}},"component":{}}],["shared_library_ref",{"_index":3434,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["sharedlibraryref",{"_index":3433,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["sharedlibraryrepositori",{"_index":939,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"148":{},"214":{}},"component":{}}],["shell",{"_index":273,"title":{},"name":{},"text":{"2":{},"30":{},"41":{},"64":{},"80":{},"113":{},"133":{},"175":{},"199":{},"241":{}},"component":{}}],["shi",{"_index":626,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["shift",{"_index":2459,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["shim",{"_index":1917,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["shini",{"_index":1755,"title":{"69":{},"118":{},"179":{},"245":{}},"name":{},"text":{"33":{},"39":{},"69":{},"75":{},"118":{},"123":{},"179":{},"186":{},"245":{},"253":{}},"component":{}}],["ship",{"_index":931,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"97":{},"123":{},"149":{},"151":{},"152":{},"184":{},"186":{},"215":{},"217":{},"218":{},"240":{},"250":{},"253":{}},"component":{}}],["shop",{"_index":3380,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["short",{"_index":2484,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["shorten",{"_index":1112,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"95":{},"96":{},"98":{},"149":{},"151":{},"154":{},"215":{},"217":{},"220":{}},"component":{}}],["shortgitcommit",{"_index":2483,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["show",{"_index":352,"title":{},"name":{},"text":{"2":{},"29":{},"41":{},"63":{},"81":{},"96":{},"120":{},"130":{},"151":{},"157":{},"161":{},"183":{},"196":{},"217":{},"223":{},"227":{},"234":{},"249":{}},"component":{}}],["showcas",{"_index":1596,"title":{},"name":{},"text":{"30":{},"32":{},"64":{},"68":{},"117":{},"187":{},"188":{},"252":{},"254":{}},"component":{}}],["shown",{"_index":374,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"93":{},"95":{},"98":{},"126":{},"133":{},"147":{},"149":{},"154":{},"192":{},"199":{},"213":{},"215":{},"220":{},"258":{}},"component":{}}],["siad",{"_index":3277,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["side",{"_index":1597,"title":{},"name":{},"text":{"30":{},"64":{},"95":{},"149":{},"215":{}},"component":{}}],["sidecar",{"_index":3634,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["sieg",{"_index":886,"title":{},"name":{},"text":{"12":{}},"component":{}}],["sign",{"_index":396,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["similar",{"_index":1933,"title":{},"name":{},"text":{"38":{},"47":{},"74":{},"88":{},"128":{},"141":{},"174":{},"194":{},"207":{},"240":{}},"component":{}}],["similarli",{"_index":3426,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["simmpl",{"_index":1560,"title":{},"name":{},"text":{"29":{},"63":{},"112":{}},"component":{}}],["simpl",{"_index":1123,"title":{},"name":{},"text":{"14":{},"24":{},"32":{},"50":{},"60":{},"68":{},"97":{},"109":{},"117":{},"142":{},"152":{},"170":{},"173":{},"174":{},"208":{},"218":{},"236":{},"239":{},"240":{}},"component":{}}],["simpli",{"_index":788,"title":{},"name":{},"text":{"8":{},"26":{},"36":{},"37":{},"47":{},"61":{},"72":{},"73":{},"80":{},"88":{},"96":{},"98":{},"109":{},"110":{},"114":{},"122":{},"126":{},"128":{},"133":{},"136":{},"137":{},"141":{},"151":{},"154":{},"170":{},"171":{},"176":{},"184":{},"185":{},"192":{},"194":{},"199":{},"202":{},"203":{},"207":{},"217":{},"220":{},"236":{},"237":{},"242":{},"250":{},"251":{},"258":{}},"component":{}}],["simultan",{"_index":3150,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["singl",{"_index":2076,"title":{},"name":{},"text":{"78":{},"79":{},"83":{},"98":{},"100":{},"101":{},"131":{},"132":{},"136":{},"153":{},"154":{},"156":{},"157":{},"185":{},"189":{},"197":{},"198":{},"202":{},"219":{},"220":{},"222":{},"223":{},"251":{},"255":{}},"component":{}}],["sit",{"_index":794,"title":{},"name":{},"text":{"10":{},"136":{},"202":{}},"component":{}}],["site",{"_index":436,"title":{"82-3":{},"135-3":{},"201-3":{}},"name":{},"text":{"2":{},"41":{},"82":{},"135":{},"201":{}},"component":{}}],["situat",{"_index":2872,"title":{},"name":{},"text":{"100":{},"127":{},"156":{},"193":{},"222":{}},"component":{}}],["six",{"_index":1481,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["size",{"_index":1652,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["skeleton",{"_index":769,"title":{},"name":{},"text":{"8":{},"189":{},"255":{}},"component":{}}],["sketch",{"_index":1309,"title":{},"name":{},"text":{"22":{},"58":{},"102":{}},"component":{}}],["skip",{"_index":287,"title":{"96-11":{},"151-11":{},"217-11":{}},"name":{},"text":{"2":{},"14":{},"38":{},"41":{},"50":{},"74":{},"76":{},"96":{},"98":{},"129":{},"151":{},"154":{},"195":{},"217":{},"220":{},"240":{}},"component":{}}],["skiplibcheck",{"_index":3066,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["sklingel",{"_index":1636,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["skopeo",{"_index":2313,"title":{"94-13":{},"148-13":{},"214-13":{}},"name":{},"text":{"85":{},"94":{},"138":{},"148":{},"204":{},"214":{}},"component":{}}],["slash",{"_index":969,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["slate",{"_index":2410,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["slave",{"_index":137,"title":{"7":{},"46":{},"2-63":{},"4-6":{},"6-5":{},"14-8":{},"25-6":{},"26-6":{},"27-12":{},"28-6":{},"29-6":{},"30-6":{},"31-6":{},"32-19":{},"33-6":{},"34-6":{},"35-6":{},"36-6":{},"37-6":{},"38-6":{},"41-63":{},"43-6":{},"45-5":{},"50-8":{},"61-6":{},"62-12":{},"63-6":{},"64-6":{},"65-6":{},"66-6":{},"67-6":{},"68-19":{},"69-6":{},"70-6":{},"71-6":{},"72-6":{},"73-6":{},"74-6":{},"94-8":{},"148-8":{},"214-8":{}},"name":{"7":{},"46":{}},"text":{"2":{},"4":{},"6":{},"7":{},"14":{},"21":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"45":{},"46":{},"50":{},"57":{},"61":{},"62":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["slightli",{"_index":1955,"title":{},"name":{},"text":{"39":{},"75":{},"95":{},"149":{},"215":{}},"component":{}}],["slim",{"_index":2429,"title":{},"name":{},"text":{"95":{},"149":{},"174":{},"215":{},"240":{}},"component":{}}],["slow",{"_index":611,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["small",{"_index":660,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"154":{},"220":{}},"component":{}}],["smell",{"_index":899,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"213":{}},"component":{}}],["smtp",{"_index":2324,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["snapshot",{"_index":1504,"title":{},"name":{},"text":{"27":{},"30":{},"62":{},"64":{},"111":{},"172":{},"238":{}},"component":{}}],["snip",{"_index":2998,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["snyk",{"_index":762,"title":{"14-11":{},"14-14":{},"50-11":{},"50-14":{}},"name":{},"text":{"7":{},"14":{},"16":{},"46":{},"50":{},"52":{},"85":{},"96":{},"138":{},"151":{},"204":{},"217":{}},"component":{}}],["snyk.io",{"_index":1080,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["snyk_authentication_cod",{"_index":1084,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{}},"component":{}}],["snyk_distribution_url",{"_index":2314,"title":{},"name":{},"text":{"85":{},"138":{},"204":{}},"component":{}}],["snykauthenticationcod",{"_index":955,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["softwar",{"_index":215,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"98":{},"101":{},"136":{},"138":{},"153":{},"154":{},"157":{},"177":{},"189":{},"202":{},"204":{},"219":{},"220":{},"223":{},"243":{},"255":{}},"component":{}}],["solut",{"_index":1783,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"128":{},"136":{},"150":{},"174":{},"181":{},"194":{},"202":{},"216":{},"217":{},"240":{},"247":{}},"component":{}}],["solv",{"_index":1563,"title":{},"name":{},"text":{"29":{},"63":{},"112":{},"173":{},"239":{}},"component":{}}],["someon",{"_index":2598,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["someth",{"_index":1295,"title":{},"name":{},"text":{"21":{},"57":{},"96":{},"98":{},"100":{},"101":{},"151":{},"154":{},"156":{},"157":{},"217":{},"220":{},"222":{},"223":{}},"component":{}}],["sometim",{"_index":610,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["sonar",{"_index":1106,"title":{"93-1":{},"147-1":{},"213-1":{}},"name":{},"text":{"14":{},"17":{},"24":{},"25":{},"26":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"39":{},"50":{},"53":{},"60":{},"61":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"75":{},"96":{},"99":{},"108":{},"110":{},"112":{},"113":{},"114":{},"115":{},"120":{},"121":{},"122":{},"146":{},"151":{},"155":{},"161":{},"169":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"183":{},"184":{},"185":{},"212":{},"217":{},"221":{},"227":{},"234":{},"235":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"249":{},"250":{},"251":{}},"component":{}}],["sonar.java.binaries=build/class",{"_index":2345,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.java.libraries=build/lib",{"_index":2346,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.junit.reportpaths=build/test",{"_index":2347,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.language=java",{"_index":2341,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.projectkey=test",{"_index":2338,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.projectname=test",{"_index":2339,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.projectvers",{"_index":1111,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"96":{},"151":{},"217":{}},"component":{}}],["sonar.sourceencoding=utf",{"_index":2344,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.sources=src",{"_index":2340,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar:2.6.1",{"_index":703,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonar_auth_token",{"_index":714,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonar_edit",{"_index":2482,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sonar_server_url",{"_index":713,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonar_vers",{"_index":3219,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["sonarj",{"_index":916,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["sonarjava",{"_index":915,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["sonarlint",{"_index":2337,"title":{"93-3":{},"147-3":{},"213-3":{}},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonarqub",{"_index":135,"title":{"13":{},"49":{},"92":{},"93":{},"146":{},"147":{},"212":{},"213":{},"2-62":{},"14-16":{},"41-62":{},"50-16":{},"77-13":{},"79-8":{},"92-1":{},"93-4":{},"94-12":{},"130-11":{},"132-8":{},"146-2":{},"147-4":{},"148-12":{},"196-11":{},"198-8":{},"212-2":{},"213-4":{},"214-12":{}},"name":{},"text":{"2":{},"6":{},"7":{},"13":{},"14":{},"17":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"45":{},"46":{},"49":{},"50":{},"53":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"83":{},"85":{},"87":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"108":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"128":{},"130":{},"132":{},"136":{},"138":{},"140":{},"146":{},"147":{},"148":{},"149":{},"151":{},"154":{},"169":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"181":{},"183":{},"184":{},"185":{},"186":{},"194":{},"196":{},"198":{},"202":{},"204":{},"206":{},"212":{},"213":{},"214":{},"215":{},"217":{},"220":{},"235":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"247":{},"249":{},"250":{},"251":{},"253":{}},"component":{}}],["sonarqube.groovi",{"_index":709,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonarqube/sonarqube.sql",{"_index":2122,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["sonarqubebranch",{"_index":1045,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["sonarqubeedit",{"_index":2481,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sonarserv",{"_index":710,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["sonarsourc",{"_index":891,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"213":{}},"component":{}}],["soon",{"_index":511,"title":{},"name":{},"text":{"2":{},"41":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["sops.yaml",{"_index":3336,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sort",{"_index":1453,"title":{},"name":{},"text":{"24":{},"60":{},"121":{},"184":{},"250":{}},"component":{}}],["sound",{"_index":3149,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["sourc",{"_index":593,"title":{"96-9":{},"98-19":{},"127-4":{},"151-9":{},"154-22":{},"193-4":{},"217-9":{},"220-22":{}},"name":{},"text":{"4":{},"6":{},"13":{},"14":{},"17":{},"24":{},"29":{},"32":{},"34":{},"39":{},"43":{},"45":{},"49":{},"50":{},"53":{},"60":{},"63":{},"68":{},"70":{},"75":{},"77":{},"78":{},"80":{},"91":{},"93":{},"96":{},"98":{},"99":{},"100":{},"108":{},"112":{},"113":{},"115":{},"117":{},"119":{},"121":{},"126":{},"130":{},"131":{},"133":{},"136":{},"137":{},"142":{},"145":{},"146":{},"147":{},"151":{},"154":{},"155":{},"156":{},"169":{},"172":{},"173":{},"174":{},"175":{},"177":{},"180":{},"184":{},"185":{},"192":{},"196":{},"197":{},"199":{},"202":{},"203":{},"208":{},"211":{},"212":{},"213":{},"217":{},"220":{},"221":{},"222":{},"235":{},"238":{},"239":{},"240":{},"241":{},"243":{},"246":{},"250":{},"251":{},"258":{}},"component":{}}],["source_featur",{"_index":1670,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["sourcecompat",{"_index":3523,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["sourcecredenti",{"_index":3349,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sourcedir",{"_index":2780,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["sourceenvironmenttoclon",{"_index":3128,"title":{},"name":{},"text":{"126":{},"192":{},"258":{}},"component":{}}],["sourceimageurlincludingregistri",{"_index":3350,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sourceproject",{"_index":2583,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sourcesecret",{"_index":2184,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["sourcetag",{"_index":2584,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["space",{"_index":438,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"77":{},"81":{},"100":{},"101":{},"102":{},"130":{},"136":{},"156":{},"157":{},"158":{},"196":{},"202":{},"222":{},"223":{},"224":{}},"component":{}}],["speak",{"_index":2687,"title":{},"name":{},"text":{"98":{},"108":{},"154":{},"169":{},"220":{},"235":{}},"component":{}}],["spec",{"_index":1924,"title":{},"name":{},"text":{"38":{},"74":{},"80":{},"133":{},"199":{},"240":{}},"component":{}}],["spec.t",{"_index":1543,"title":{},"name":{},"text":{"28":{},"35":{},"65":{},"71":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["spec/output/imagelabel",{"_index":2218,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["spechelper.groovi",{"_index":3102,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["special",{"_index":65,"title":{},"name":{},"text":{"1":{},"22":{},"27":{},"40":{},"58":{},"62":{},"76":{},"98":{},"101":{},"103":{},"106":{},"111":{},"129":{},"154":{},"157":{},"159":{},"166":{},"167":{},"172":{},"195":{},"220":{},"223":{},"225":{},"232":{},"233":{},"238":{}},"component":{}}],["specialpermissionschemeid",{"_index":2922,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["specialpermissionset",{"_index":2867,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["specif",{"_index":972,"title":{"80-12":{},"133-12":{},"199-12":{}},"name":{},"text":{"14":{},"19":{},"20":{},"21":{},"27":{},"32":{},"50":{},"55":{},"56":{},"57":{},"62":{},"68":{},"78":{},"80":{},"81":{},"83":{},"93":{},"96":{},"98":{},"100":{},"101":{},"102":{},"111":{},"117":{},"123":{},"126":{},"127":{},"128":{},"130":{},"131":{},"133":{},"136":{},"137":{},"147":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"158":{},"172":{},"178":{},"182":{},"186":{},"189":{},"192":{},"193":{},"194":{},"196":{},"197":{},"199":{},"202":{},"203":{},"213":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"224":{},"238":{},"244":{},"248":{},"253":{},"255":{},"258":{}},"component":{}}],["specifi",{"_index":121,"title":{"2-38":{},"41-38":{}},"name":{},"text":{"6":{},"14":{},"17":{},"22":{},"29":{},"31":{},"32":{},"35":{},"45":{},"50":{},"53":{},"58":{},"63":{},"67":{},"68":{},"71":{},"76":{},"87":{},"88":{},"96":{},"98":{},"101":{},"116":{},"117":{},"121":{},"128":{},"129":{},"130":{},"140":{},"141":{},"150":{},"151":{},"153":{},"154":{},"157":{},"178":{},"184":{},"189":{},"194":{},"195":{},"196":{},"206":{},"207":{},"216":{},"217":{},"219":{},"220":{},"223":{},"244":{},"250":{},"255":{}},"component":{}}],["specs.t",{"_index":1832,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["spin",{"_index":1644,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"130":{},"196":{}},"component":{}}],["split",{"_index":1113,"title":{},"name":{},"text":{"14":{},"50":{},"151":{},"217":{}},"component":{}}],["spock",{"_index":3092,"title":{"120":{},"183":{},"249":{}},"name":{"120":{},"183":{},"249":{}},"text":{"120":{},"123":{},"183":{},"186":{},"249":{},"253":{}},"component":{}}],["spock/geb",{"_index":3104,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["spread",{"_index":2267,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["spring",{"_index":1133,"title":{"27":{},"62":{},"111":{},"172":{},"238":{}},"name":{},"text":{"19":{},"20":{},"27":{},"55":{},"56":{},"62":{},"93":{},"100":{},"101":{},"111":{},"136":{},"147":{},"153":{},"156":{},"157":{},"172":{},"189":{},"202":{},"213":{},"219":{},"222":{},"223":{},"238":{},"255":{}},"component":{}}],["spring.profiles.active=crowd",{"_index":1217,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.profiles.active=odsbox,odsbox_quickstart",{"_index":2811,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.author",{"_index":1233,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.jwk",{"_index":1243,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.token",{"_index":1237,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.us",{"_index":1240,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.azure.cli",{"_index":2938,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.author",{"_index":1229,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.cli",{"_index":1225,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.clientname=od",{"_index":1228,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.redirecturi={baseurl}/login/oauth2/code/{registrationid",{"_index":1231,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.scope=openid",{"_index":1232,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["springboot",{"_index":1484,"title":{},"name":{"27":{},"62":{},"111":{},"172":{},"238":{}},"text":{"101":{},"115":{},"123":{},"157":{},"161":{},"177":{},"186":{},"223":{},"227":{},"243":{},"253":{}},"component":{}}],["springboot.desc=backend",{"_index":2901,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["springboot.repo=od",{"_index":2902,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["springboot/java",{"_index":1938,"title":{},"name":{},"text":{"39":{},"75":{},"101":{},"157":{},"223":{}},"component":{}}],["spring’",{"_index":1175,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["sq",{"_index":750,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["sqlx",{"_index":3544,"title":{"240-12":{}},"name":{},"text":{"174":{},"240":{}},"component":{}}],["sqlx’",{"_index":3785,"title":{},"name":{},"text":{"240":{}},"component":{}}],["src",{"_index":1434,"title":{"32-5":{},"68-5":{},"117-5":{}},"name":{},"text":{"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"35":{},"36":{},"37":{},"38":{},"60":{},"62":{},"63":{},"64":{},"65":{},"68":{},"71":{},"72":{},"73":{},"74":{},"76":{},"111":{},"112":{},"114":{},"117":{},"120":{},"121":{},"122":{},"129":{},"172":{},"173":{},"174":{},"176":{},"180":{},"183":{},"184":{},"185":{},"195":{},"238":{},"239":{},"240":{},"242":{},"246":{},"249":{},"250":{},"251":{}},"component":{}}],["src/environ",{"_index":3118,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["src/main.pi",{"_index":3025,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["src/main/resources/application.properti",{"_index":1332,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["src/main/resources/permiss",{"_index":1327,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["src/model",{"_index":1655,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/model/data_clean",{"_index":1657,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/model/feature_prep",{"_index":1658,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/model/model_wrapper.pi",{"_index":1662,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/requirements.txt",{"_index":1656,"title":{},"name":{},"text":{"32":{},"68":{},"112":{},"117":{}},"component":{}}],["src/servic",{"_index":1654,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/services/remote/dvc/data_sync.pi",{"_index":1694,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/trainer.pi",{"_index":1678,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["ssf",{"_index":3582,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["ssh",{"_index":119,"title":{"2-34":{},"4-1":{},"4-3":{},"41-34":{},"43-1":{},"43-3":{},"91-1":{},"91-3":{},"145-1":{},"145-3":{},"211-1":{},"211-3":{}},"name":{},"text":{"2":{},"4":{},"32":{},"41":{},"43":{},"68":{},"91":{},"117":{},"145":{},"211":{}},"component":{}}],["sso",{"_index":50,"title":{},"name":{},"text":{"1":{},"2":{},"40":{},"41":{},"76":{},"129":{},"195":{}},"component":{}}],["stabl",{"_index":1012,"title":{},"name":{},"text":{"14":{},"50":{},"77":{},"96":{},"99":{},"128":{},"151":{},"155":{},"174":{},"181":{},"194":{},"217":{},"221":{},"240":{},"247":{}},"component":{}}],["stack",{"_index":232,"title":{},"name":{},"text":{"2":{},"3":{},"41":{},"42":{},"90":{},"109":{},"144":{},"170":{},"210":{},"236":{}},"component":{}}],["stacktrac",{"_index":3468,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["stage",{"_index":754,"title":{"14-2":{},"14-7":{},"14-12":{},"14-14":{},"14-15":{},"14-16":{},"50-2":{},"50-7":{},"50-12":{},"50-14":{},"50-15":{},"50-16":{},"95-4":{},"96-14":{},"99-6":{},"149-4":{},"150-6":{},"151-12":{},"155-6":{},"215-4":{},"216-6":{},"217-12":{},"221-6":{}},"name":{},"text":{"7":{},"14":{},"16":{},"17":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"46":{},"50":{},"52":{},"53":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"77":{},"81":{},"93":{},"95":{},"96":{},"98":{},"99":{},"108":{},"109":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"130":{},"147":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"169":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"196":{},"213":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"235":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"254":{}},"component":{}}],["stage('build",{"_index":950,"title":{},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"96":{},"115":{},"151":{},"177":{},"217":{},"243":{}},"component":{}}],["stage('cleanup",{"_index":2521,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["stage('say",{"_index":2544,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["stage('unit",{"_index":1471,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["stage('writ",{"_index":2772,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["stagebuild",{"_index":1517,"title":{},"name":{},"text":{"27":{},"30":{},"35":{},"38":{},"62":{},"64":{},"71":{},"74":{},"111":{},"113":{},"121":{},"172":{},"175":{},"184":{},"238":{},"241":{},"250":{}},"component":{}}],["stagebuild(context",{"_index":1999,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["stagebuild(def",{"_index":1466,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["stagecreateopenshiftenviron",{"_index":2209,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["stagedeploytoopenshift",{"_index":1521,"title":{},"name":{},"text":{"27":{},"62":{},"95":{},"111":{},"149":{},"172":{},"215":{},"238":{}},"component":{}}],["stagedeploytoopenshift(context",{"_index":959,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"149":{},"215":{}},"component":{}}],["stagelint",{"_index":1817,"title":{},"name":{},"text":{"35":{},"38":{},"71":{},"74":{},"121":{}},"component":{}}],["stageowaspdependencycheck(context",{"_index":953,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["stagescanforsnyk",{"_index":1086,"title":{},"name":{"16":{},"52":{}},"text":{"14":{},"50":{},"95":{},"149":{},"215":{}},"component":{}}],["stagescanforsnyk(context",{"_index":954,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["stagescanforsonarqub",{"_index":755,"title":{},"name":{"17":{},"53":{}},"text":{"7":{},"27":{},"46":{},"62":{},"95":{},"111":{},"149":{},"172":{},"215":{},"238":{}},"component":{}}],["stagescanforsonarqube(context",{"_index":951,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["stagestartopenshiftbuild",{"_index":1096,"title":{},"name":{"18":{},"54":{}},"text":{"14":{},"18":{},"27":{},"50":{},"54":{},"62":{},"80":{},"95":{},"111":{},"133":{},"149":{},"172":{},"199":{},"215":{},"238":{}},"component":{}}],["stagestartopenshiftbuild(context",{"_index":958,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"95":{},"149":{},"215":{}},"component":{}}],["stagetest",{"_index":1780,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"120":{},"181":{},"183":{},"247":{},"249":{}},"component":{}}],["stagetriggerallbuild",{"_index":2210,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["stageunittest",{"_index":1465,"title":{},"name":{},"text":{"25":{},"35":{},"38":{},"66":{},"71":{},"74":{},"115":{},"121":{},"177":{},"184":{},"243":{},"250":{}},"component":{}}],["stageunittest(def",{"_index":1470,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["stageupdateopenshiftbuild",{"_index":2208,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["stageuploadtonexu",{"_index":1518,"title":{},"name":{},"text":{"27":{},"62":{},"95":{},"111":{},"149":{},"172":{},"215":{},"238":{}},"component":{}}],["stageuploadtonexus(context",{"_index":957,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["standar",{"_index":3006,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["standard",{"_index":646,"title":{},"name":{},"text":{"5":{},"44":{},"81":{},"83":{},"136":{},"202":{}},"component":{}}],["start",{"_index":148,"title":{"2":{},"41":{},"4-5":{},"14-15":{},"25-4":{},"26-4":{},"27-10":{},"28-4":{},"29-4":{},"30-4":{},"31-4":{},"33-4":{},"34-4":{},"35-4":{},"36-4":{},"37-4":{},"38-4":{},"43-5":{},"50-15":{},"61-4":{},"62-10":{},"63-4":{},"64-4":{},"65-4":{},"66-4":{},"67-4":{},"69-4":{},"70-4":{},"71-4":{},"72-4":{},"73-4":{},"74-4":{},"91-5":{},"109-4":{},"110-4":{},"111-10":{},"112-4":{},"113-4":{},"114-6":{},"115-4":{},"116-4":{},"118-4":{},"119-4":{},"120-7":{},"120-8":{},"121-4":{},"122-4":{},"124-4":{},"125-4":{},"145-5":{},"170-4":{},"171-4":{},"172-10":{},"173-4":{},"174-4":{},"175-4":{},"176-6":{},"177-4":{},"178-4":{},"179-4":{},"180-4":{},"181-4":{},"182-4":{},"183-7":{},"183-8":{},"184-4":{},"185-4":{},"187-4":{},"188-4":{},"190-4":{},"191-4":{},"211-5":{},"236-4":{},"237-4":{},"238-10":{},"239-4":{},"240-4":{},"241-4":{},"242-6":{},"243-4":{},"244-4":{},"245-4":{},"246-4":{},"247-4":{},"248-4":{},"249-7":{},"249-8":{},"250-4":{},"251-4":{},"252-4":{},"254-4":{},"256-4":{},"257-4":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"13":{},"14":{},"15":{},"17":{},"19":{},"22":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"47":{},"49":{},"50":{},"51":{},"53":{},"55":{},"58":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"72":{},"73":{},"74":{},"75":{},"76":{},"78":{},"79":{},"80":{},"81":{},"83":{},"84":{},"88":{},"91":{},"92":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"131":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"145":{},"146":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"185":{},"186":{},"192":{},"193":{},"194":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"211":{},"212":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"251":{},"253":{},"258":{}},"component":{}}],["started/instal",{"_index":3656,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["starter",{"_index":1527,"title":{"32-11":{},"68-11":{},"117-11":{}},"name":{},"text":{"28":{},"29":{},"35":{},"38":{},"63":{},"65":{},"71":{},"74":{},"112":{},"173":{},"174":{},"180":{},"187":{},"239":{},"240":{},"246":{},"252":{}},"component":{}}],["startup",{"_index":540,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["stash",{"_index":3116,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["state",{"_index":619,"title":{},"name":{},"text":{"4":{},"13":{},"22":{},"43":{},"49":{},"58":{},"77":{},"80":{},"81":{},"91":{},"96":{},"98":{},"101":{},"130":{},"133":{},"145":{},"151":{},"154":{},"157":{},"196":{},"199":{},"211":{},"217":{},"220":{},"223":{}},"component":{}}],["statement",{"_index":864,"title":{},"name":{},"text":{"12":{},"115":{},"173":{},"177":{},"239":{},"243":{}},"component":{}}],["static",{"_index":895,"title":{},"name":{},"text":{"13":{},"29":{},"38":{},"49":{},"63":{},"74":{},"82":{},"93":{},"135":{},"136":{},"147":{},"201":{},"202":{},"213":{},"240":{}},"component":{}}],["statist",{"_index":1588,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["statu",{"_index":907,"title":{},"name":{},"text":{"13":{},"22":{},"49":{},"58":{},"96":{},"151":{},"161":{},"172":{},"174":{},"178":{},"181":{},"217":{},"227":{},"234":{},"238":{},"240":{},"244":{},"247":{}},"component":{}}],["status.r",{"_index":3567,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["status_test.r",{"_index":3572,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["stay",{"_index":1343,"title":{},"name":{},"text":{"22":{},"58":{},"83":{},"101":{},"136":{},"157":{},"202":{},"223":{}},"component":{}}],["step",{"_index":90,"title":{"2-15":{},"2-16":{},"2-17":{},"2-18":{},"2-19":{},"2-20":{},"2-21":{},"2-22":{},"2-37":{},"2-38":{},"2-39":{},"2-40":{},"2-41":{},"2-47":{},"2-48":{},"2-49":{},"2-50":{},"2-51":{},"2-52":{},"2-53":{},"2-54":{},"13-4":{},"41-15":{},"41-16":{},"41-17":{},"41-18":{},"41-19":{},"41-20":{},"41-21":{},"41-22":{},"41-37":{},"41-38":{},"41-39":{},"41-40":{},"41-41":{},"41-47":{},"41-48":{},"41-49":{},"41-50":{},"41-51":{},"41-52":{},"41-53":{},"41-54":{},"49-4":{},"94-1":{},"148-1":{},"214-1":{}},"name":{},"text":{"2":{},"14":{},"18":{},"24":{},"26":{},"27":{},"32":{},"39":{},"41":{},"50":{},"54":{},"60":{},"61":{},"62":{},"68":{},"75":{},"79":{},"80":{},"81":{},"83":{},"94":{},"96":{},"109":{},"110":{},"111":{},"115":{},"117":{},"130":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"148":{},"151":{},"153":{},"170":{},"171":{},"172":{},"173":{},"177":{},"180":{},"181":{},"196":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"214":{},"217":{},"219":{},"236":{},"237":{},"238":{},"239":{},"243":{},"246":{},"247":{}},"component":{}}],["step:2.28",{"_index":2321,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["stet",{"_index":819,"title":{},"name":{},"text":{"10":{}},"component":{}}],["still",{"_index":1945,"title":{},"name":{},"text":{"39":{},"75":{},"76":{},"78":{},"79":{},"83":{},"95":{},"123":{},"129":{},"131":{},"132":{},"136":{},"149":{},"150":{},"153":{},"154":{},"161":{},"186":{},"195":{},"197":{},"198":{},"202":{},"215":{},"216":{},"219":{},"220":{},"227":{},"234":{},"253":{}},"component":{}}],["storag",{"_index":478,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"2":{},"19":{},"41":{},"55":{},"100":{},"156":{},"188":{},"222":{},"254":{}},"component":{}}],["storageadapt",{"_index":1167,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["store",{"_index":133,"title":{"2-59":{},"41-59":{}},"name":{},"text":{"2":{},"6":{},"24":{},"32":{},"41":{},"45":{},"60":{},"68":{},"77":{},"82":{},"85":{},"96":{},"98":{},"108":{},"117":{},"130":{},"135":{},"136":{},"138":{},"151":{},"153":{},"154":{},"169":{},"174":{},"181":{},"189":{},"196":{},"201":{},"202":{},"204":{},"217":{},"219":{},"220":{},"235":{},"240":{},"247":{},"255":{}},"component":{}}],["store.j",{"_index":1870,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["straight",{"_index":3194,"title":{},"name":{},"text":{"136":{},"179":{},"202":{},"245":{}},"component":{}}],["strategi",{"_index":1447,"title":{},"name":{},"text":{"24":{},"60":{},"80":{},"96":{},"133":{},"151":{},"199":{},"217":{}},"component":{}}],["stream",{"_index":1413,"title":{},"name":{},"text":{"24":{},"30":{},"60":{},"64":{},"77":{},"79":{},"130":{},"132":{},"196":{},"198":{}},"component":{}}],["streamlit",{"_index":3623,"title":{"180":{},"246":{}},"name":{"180":{},"246":{}},"text":{"180":{},"186":{},"246":{},"253":{}},"component":{}}],["stress",{"_index":1753,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["strict",{"_index":479,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["strictli",{"_index":2379,"title":{},"name":{},"text":{"94":{},"98":{},"126":{},"148":{},"154":{},"192":{},"214":{},"220":{},"258":{}},"component":{}}],["string",{"_index":432,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"60":{},"68":{},"96":{},"98":{},"117":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["strongli",{"_index":3527,"title":{},"name":{},"text":{"173":{},"180":{},"189":{},"239":{},"246":{},"255":{}},"component":{}}],["structur",{"_index":694,"title":{"24-4":{},"27-3":{},"32-11":{},"60-4":{},"62-3":{},"68-11":{},"111-3":{},"117-11":{},"126-1":{},"172-3":{},"192-1":{},"238-3":{},"258-1":{}},"name":{},"text":{"6":{},"24":{},"27":{},"32":{},"38":{},"45":{},"60":{},"62":{},"68":{},"74":{},"82":{},"98":{},"111":{},"117":{},"126":{},"135":{},"154":{},"172":{},"174":{},"180":{},"192":{},"201":{},"220":{},"238":{},"240":{},"246":{},"258":{}},"component":{}}],["stuck",{"_index":614,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["studio",{"_index":2360,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["style",{"_index":1660,"title":{},"name":{},"text":{"32":{},"68":{},"81":{},"117":{}},"component":{}}],["styles.scss",{"_index":1810,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["stylesheet",{"_index":3054,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["sub",{"_index":3303,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["subject",{"_index":1288,"title":{},"name":{},"text":{"21":{},"57":{},"83":{},"151":{},"217":{}},"component":{}}],["submit",{"_index":1450,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["submodul",{"_index":3237,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["subscript",{"_index":426,"title":{},"name":{},"text":{"2":{},"41":{},"188":{},"254":{}},"component":{}}],["subsect",{"_index":3438,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["subsequ",{"_index":461,"title":{},"name":{},"text":{"2":{},"35":{},"41":{},"71":{},"98":{},"121":{},"154":{},"184":{},"220":{},"250":{}},"component":{}}],["substitut",{"_index":2735,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["subsystem",{"_index":3395,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["succesfulli",{"_index":2886,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["success",{"_index":1024,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"96":{},"100":{},"117":{},"151":{},"156":{},"172":{},"217":{},"222":{},"238":{}},"component":{}}],["successfulbuildshistorylimit",{"_index":2193,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["successfulli",{"_index":2029,"title":{},"name":{},"text":{"76":{},"100":{},"129":{},"156":{},"195":{},"222":{}},"component":{}}],["such",{"_index":865,"title":{},"name":{},"text":{"12":{},"14":{},"22":{},"35":{},"50":{},"58":{},"71":{},"77":{},"79":{},"80":{},"81":{},"83":{},"95":{},"96":{},"98":{},"99":{},"102":{},"108":{},"109":{},"115":{},"121":{},"123":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"170":{},"177":{},"184":{},"186":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"236":{},"243":{},"250":{},"253":{},"255":{},"258":{}},"component":{}}],["sudo",{"_index":2035,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["suffici",{"_index":1623,"title":{},"name":{},"text":{"31":{},"67":{},"77":{},"116":{},"130":{},"178":{},"196":{},"244":{}},"component":{}}],["suffix",{"_index":2528,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["suffixedcompon",{"_index":2510,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["suggest",{"_index":1849,"title":{},"name":{},"text":{"36":{},"72":{},"81":{},"95":{},"101":{},"122":{},"149":{},"157":{},"185":{},"215":{},"223":{},"251":{}},"component":{}}],["suit",{"_index":654,"title":{"130-5":{},"196-5":{}},"name":{},"text":{"5":{},"26":{},"44":{},"61":{},"77":{},"83":{},"110":{},"112":{},"130":{},"136":{},"171":{},"173":{},"180":{},"196":{},"202":{},"237":{},"239":{},"246":{}},"component":{}}],["suitabl",{"_index":2468,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"153":{},"155":{},"189":{},"217":{},"219":{},"221":{},"255":{}},"component":{}}],["sum.spec.t",{"_index":3071,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["sum.t",{"_index":3069,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["summari",{"_index":2601,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["supersed",{"_index":3254,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["supervis",{"_index":1677,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["suppli",{"_index":2673,"title":{},"name":{},"text":{"98":{},"101":{},"123":{},"136":{},"151":{},"154":{},"157":{},"186":{},"202":{},"217":{},"220":{},"223":{},"253":{}},"component":{}}],["supplier",{"_index":3087,"title":{"189-5":{},"255-5":{}},"name":{},"text":{"115":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"189":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"255":{}},"component":{}}],["support",{"_index":1483,"title":{"27-4":{},"62-4":{},"95-11":{},"111-4":{},"120-3":{},"149-11":{},"150-7":{},"150-10":{},"161-3":{},"172-4":{},"173-8":{},"183-3":{},"215-11":{},"216-7":{},"216-10":{},"227-3":{},"234-3":{},"238-4":{},"239-8":{},"249-3":{}},"name":{},"text":{"29":{},"32":{},"34":{},"35":{},"36":{},"38":{},"63":{},"68":{},"70":{},"71":{},"72":{},"74":{},"83":{},"85":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"108":{},"112":{},"117":{},"119":{},"121":{},"122":{},"126":{},"136":{},"138":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"156":{},"157":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"169":{},"173":{},"174":{},"181":{},"184":{},"185":{},"187":{},"188":{},"189":{},"192":{},"202":{},"204":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"222":{},"223":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"239":{},"240":{},"247":{},"250":{},"251":{},"252":{},"254":{},"255":{},"258":{}},"component":{}}],["supris",{"_index":2095,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["sure",{"_index":225,"title":{},"name":{},"text":{"2":{},"19":{},"32":{},"41":{},"55":{},"68":{},"100":{},"108":{},"117":{},"151":{},"156":{},"169":{},"180":{},"217":{},"222":{},"235":{},"246":{}},"component":{}}],["surfac",{"_index":1346,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["svc",{"_index":2199,"title":{"124":{},"190":{},"256":{}},"name":{"124":{},"190":{},"256":{}},"text":{"80":{},"124":{},"125":{},"133":{},"190":{},"191":{},"199":{},"256":{},"257":{}},"component":{}}],["svc.git",{"_index":2183,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["switch",{"_index":1174,"title":{},"name":{},"text":{"19":{},"23":{},"55":{},"59":{},"94":{},"100":{},"142":{},"148":{},"150":{},"156":{},"161":{},"162":{},"163":{},"164":{},"165":{},"173":{},"208":{},"214":{},"216":{},"222":{},"227":{},"228":{},"229":{},"230":{},"231":{},"234":{},"239":{}},"component":{}}],["sync",{"_index":250,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"77":{},"79":{},"80":{},"88":{},"96":{},"98":{},"130":{},"132":{},"133":{},"141":{},"151":{},"154":{},"196":{},"198":{},"199":{},"207":{},"217":{},"220":{}},"component":{}}],["sync:1.0.44",{"_index":2322,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["syncer",{"_index":1697,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["syncer.pull_data_dependency(file_nam",{"_index":1701,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["synchor",{"_index":1454,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["synchron",{"_index":383,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["syntax",{"_index":1118,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"127":{},"152":{},"193":{},"218":{}},"component":{}}],["sysctl",{"_index":2036,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["sysenv",{"_index":559,"title":{},"name":{"3":{},"42":{},"90":{},"144":{},"210":{}},"text":{},"component":{}}],["system",{"_index":130,"title":{"3":{},"42":{},"90":{},"144":{},"210":{},"2-54":{},"41-54":{}},"name":{},"text":{"2":{},"22":{},"32":{},"35":{},"41":{},"58":{},"68":{},"71":{},"79":{},"82":{},"87":{},"100":{},"101":{},"117":{},"121":{},"132":{},"135":{},"140":{},"151":{},"153":{},"156":{},"157":{},"182":{},"184":{},"198":{},"201":{},"206":{},"217":{},"219":{},"222":{},"223":{},"248":{},"250":{}},"component":{}}],["system:authent",{"_index":623,"title":{},"name":{},"text":{"4":{},"43":{},"80":{},"91":{},"133":{},"145":{},"199":{},"211":{}},"component":{}}],["system:imag",{"_index":2161,"title":{},"name":{},"text":{"80":{},"94":{},"133":{},"148":{},"199":{},"214":{}},"component":{}}],["system:serviceaccounts:$project_id",{"_index":2380,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["systemat",{"_index":3401,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["system’",{"_index":3529,"title":{},"name":{},"text":{"173":{},"180":{},"239":{},"246":{}},"component":{}}],["tab",{"_index":336,"title":{},"name":{},"text":{"2":{},"36":{},"41":{},"72":{},"122":{}},"component":{}}],["tab.svg",{"_index":1909,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tabl",{"_index":77,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"19":{},"20":{},"22":{},"39":{},"40":{},"41":{},"42":{},"45":{},"55":{},"56":{},"58":{},"75":{},"76":{},"78":{},"87":{},"90":{},"94":{},"95":{},"100":{},"101":{},"102":{},"123":{},"129":{},"131":{},"140":{},"144":{},"148":{},"149":{},"150":{},"156":{},"157":{},"182":{},"186":{},"189":{},"195":{},"197":{},"206":{},"210":{},"214":{},"215":{},"216":{},"222":{},"223":{},"248":{},"253":{},"255":{}},"component":{}}],["tag",{"_index":1066,"title":{"94-2":{},"95-2":{},"95-8":{},"148-2":{},"149-2":{},"149-8":{},"150-1":{},"214-2":{},"215-2":{},"215-8":{},"216-1":{}},"name":{},"text":{"14":{},"50":{},"80":{},"81":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"128":{},"133":{},"136":{},"137":{},"141":{},"142":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"181":{},"187":{},"188":{},"189":{},"194":{},"199":{},"202":{},"203":{},"207":{},"208":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"247":{},"252":{},"254":{},"255":{}},"component":{}}],["tagintotargetenv",{"_index":3352,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["tags.tf",{"_index":3722,"title":{},"name":{},"text":{"187":{},"188":{},"252":{},"254":{}},"component":{}}],["tagvers",{"_index":1020,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["tagversion}.tar.gz",{"_index":2618,"title":{},"name":{},"text":{"96":{}},"component":{}}],["tailor",{"_index":86,"title":{"127":{},"153":{},"193":{},"219":{},"2-10":{},"41-10":{},"77-5":{},"79-4":{},"80-5":{},"94-9":{},"130-8":{},"132-4":{},"133-5":{},"148-9":{},"151-27":{},"151-29":{},"153-1":{},"196-8":{},"198-4":{},"199-5":{},"214-9":{},"217-27":{},"217-29":{},"219-1":{}},"name":{},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"13":{},"41":{},"44":{},"45":{},"46":{},"49":{},"77":{},"79":{},"80":{},"85":{},"94":{},"96":{},"98":{},"99":{},"108":{},"127":{},"130":{},"132":{},"133":{},"138":{},"142":{},"146":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"169":{},"193":{},"196":{},"198":{},"199":{},"204":{},"208":{},"212":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"235":{}},"component":{}}],["tailorexclud",{"_index":2612,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorfil",{"_index":696,"title":{},"name":{},"text":{"6":{},"45":{},"96":{},"98":{},"108":{},"151":{},"154":{},"169":{},"217":{},"220":{},"235":{}},"component":{}}],["tailorfile.foo",{"_index":2738,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["tailorinclud",{"_index":2576,"title":{},"name":{},"text":{"96":{}},"component":{}}],["tailorparam",{"_index":2515,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorparamfil",{"_index":2578,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorpreserv",{"_index":2579,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorprivatekeycredentialsid",{"_index":2573,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorselector",{"_index":2513,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorverifi",{"_index":2575,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailor’",{"_index":2737,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["take",{"_index":68,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"15":{},"18":{},"32":{},"40":{},"41":{},"45":{},"50":{},"51":{},"54":{},"68":{},"76":{},"79":{},"80":{},"85":{},"95":{},"96":{},"98":{},"99":{},"117":{},"128":{},"129":{},"132":{},"133":{},"138":{},"149":{},"150":{},"151":{},"154":{},"155":{},"194":{},"195":{},"198":{},"199":{},"204":{},"215":{},"216":{},"217":{},"220":{},"221":{}},"component":{}}],["taken",{"_index":1053,"title":{},"name":{},"text":{"14":{},"50":{},"83":{},"96":{},"98":{},"99":{},"136":{},"137":{},"142":{},"146":{},"151":{},"153":{},"154":{},"155":{},"189":{},"202":{},"203":{},"208":{},"212":{},"217":{},"219":{},"220":{},"221":{},"255":{}},"component":{}}],["takimata",{"_index":824,"title":{},"name":{},"text":{"10":{}},"component":{}}],["target",{"_index":790,"title":{"83-9":{},"136-8":{},"202-8":{}},"name":{},"text":{"8":{},"14":{},"24":{},"32":{},"39":{},"47":{},"50":{},"60":{},"68":{},"75":{},"77":{},"81":{},"84":{},"88":{},"96":{},"97":{},"98":{},"99":{},"100":{},"114":{},"117":{},"126":{},"130":{},"136":{},"137":{},"141":{},"142":{},"146":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"174":{},"176":{},"192":{},"196":{},"202":{},"203":{},"207":{},"208":{},"212":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"240":{},"242":{},"258":{}},"component":{}}],["target_vari",{"_index":1676,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["targetdir",{"_index":2781,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["targetdirectori",{"_index":2622,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["targetenviron",{"_index":3353,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["targetproject",{"_index":1032,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["targettag",{"_index":2585,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["task",{"_index":1092,"title":{},"name":{},"text":{"14":{},"16":{},"22":{},"24":{},"27":{},"32":{},"50":{},"52":{},"58":{},"60":{},"62":{},"68":{},"87":{},"96":{},"101":{},"102":{},"111":{},"117":{},"137":{},"140":{},"151":{},"157":{},"158":{},"172":{},"203":{},"206":{},"217":{},"223":{},"224":{},"238":{}},"component":{}}],["tcp/udp",{"_index":3507,"title":{},"name":{},"text":{"170":{},"236":{}},"component":{}}],["team",{"_index":1284,"title":{},"name":{},"text":{"21":{},"57":{},"93":{},"98":{},"102":{},"147":{},"154":{},"158":{},"213":{},"220":{},"224":{},"240":{}},"component":{}}],["technic",{"_index":1213,"title":{"20-4":{},"56-4":{},"101-14":{},"157-17":{},"223-17":{}},"name":{},"text":{"20":{},"32":{},"56":{},"68":{},"83":{},"98":{},"101":{},"108":{},"117":{},"136":{},"154":{},"157":{},"169":{},"202":{},"220":{},"223":{},"235":{}},"component":{}}],["technolog",{"_index":647,"title":{"174-8":{},"240-8":{}},"name":{},"text":{"5":{},"19":{},"36":{},"39":{},"44":{},"55":{},"72":{},"75":{},"77":{},"83":{},"100":{},"122":{},"123":{},"130":{},"136":{},"137":{},"156":{},"170":{},"174":{},"182":{},"185":{},"186":{},"187":{},"188":{},"196":{},"202":{},"203":{},"222":{},"236":{},"240":{},"248":{},"251":{},"252":{},"253":{},"254":{}},"component":{}}],["tell",{"_index":591,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"98":{},"145":{},"154":{},"211":{},"220":{}},"component":{}}],["templat",{"_index":248,"title":{"22-4":{},"58-4":{},"101-3":{},"127-1":{},"157-6":{},"193-1":{},"223-6":{}},"name":{},"text":{"2":{},"6":{},"8":{},"13":{},"22":{},"29":{},"30":{},"38":{},"39":{},"41":{},"45":{},"47":{},"49":{},"58":{},"63":{},"64":{},"74":{},"75":{},"77":{},"80":{},"88":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"113":{},"123":{},"126":{},"127":{},"128":{},"130":{},"133":{},"136":{},"141":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"169":{},"174":{},"175":{},"186":{},"188":{},"189":{},"192":{},"193":{},"194":{},"196":{},"199":{},"202":{},"207":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"235":{},"240":{},"241":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["template.=/api/2/project/%project_key%/properties/webhook_proxy.url",{"_index":2930,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["template.={\\\"webhook_proxy.url",{"_index":2933,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["template.openshift.io/v1",{"_index":3174,"title":{},"name":{},"text":{"133":{},"199":{}},"component":{}}],["template.yml",{"_index":2718,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["templates..name=utest",{"_index":2917,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["templates..permiss",{"_index":2918,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["templates..rol",{"_index":3443,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["templates/confluence.permiss",{"_index":1329,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["templates/jira.permission.all.txt",{"_index":1328,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["templates/templ",{"_index":2206,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["tempor",{"_index":803,"title":{},"name":{},"text":{"10":{}},"component":{}}],["temporari",{"_index":2370,"title":{},"name":{},"text":{"93":{},"98":{},"130":{},"147":{},"154":{},"196":{},"213":{},"220":{}},"component":{}}],["tenant",{"_index":2958,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["teplat",{"_index":1569,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["term",{"_index":3041,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["termin",{"_index":569,"title":{"4-1":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"77":{},"130":{},"178":{},"196":{},"244":{}},"component":{}}],["terraform",{"_index":3450,"title":{"160":{},"187":{},"188":{},"226":{},"252":{},"254":{},"186-7":{},"253-7":{}},"name":{"160":{},"187":{},"188":{},"226":{},"252":{},"254":{}},"text":{"160":{},"182":{},"186":{},"187":{},"188":{},"226":{},"248":{},"252":{},"253":{},"254":{}},"component":{}}],["terraform:latest",{"_index":3456,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["test",{"_index":161,"title":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{},"12-4":{},"32-6":{},"68-6":{},"98-6":{},"117-6":{},"120-8":{},"123-6":{},"126-6":{},"128-4":{},"154-8":{},"183-8":{},"186-6":{},"192-6":{},"194-4":{},"220-8":{},"249-8":{},"253-6":{},"258-6":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"21":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"44":{},"47":{},"50":{},"55":{},"57":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"132":{},"133":{},"141":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"160":{},"169":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"194":{},"198":{},"199":{},"207":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"226":{},"234":{},"235":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["test.192.168.56.101.nip.io",{"_index":527,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["test.dev",{"_index":2726,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["test.e2",{"_index":1831,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["test.env",{"_index":2740,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["test.j",{"_index":1925,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["test.json",{"_index":3693,"title":{},"name":{},"text":{"182":{},"187":{},"188":{},"248":{},"252":{},"254":{}},"component":{}}],["test.t",{"_index":1811,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["test.tfbackend.config",{"_index":3727,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["test.yml",{"_index":3731,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["test/:/opt/provision/histori",{"_index":2111,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["test_all.sh",{"_index":1445,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_crazy_python.pi",{"_index":1442,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_dag_integrity.pi",{"_index":1443,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_dag_integrity.sh",{"_index":1446,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_requirements.txt",{"_index":1571,"title":{},"name":{},"text":{"29":{},"63":{},"180":{},"246":{}},"component":{}}],["testpaths=test",{"_index":3534,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["testresult",{"_index":2476,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tests.pi",{"_index":1573,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["tests/requirements.txt",{"_index":3036,"title":{},"name":{},"text":{"112":{}},"component":{}}],["tests_requirements.txt",{"_index":3526,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["testusernam",{"_index":1776,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["testuserpassword",{"_index":1777,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["test→prod",{"_index":2471,"title":{},"name":{},"text":{"96":{}},"component":{}}],["text",{"_index":2752,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["textbox",{"_index":295,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["tfenv",{"_index":3458,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["thank",{"_index":3033,"title":{},"name":{},"text":{"112":{},"173":{},"174":{},"180":{},"182":{},"187":{},"188":{},"239":{},"240":{},"246":{},"248":{},"252":{},"254":{}},"component":{}}],["that’",{"_index":2520,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["theinstal",{"_index":213,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["theme",{"_index":1838,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["theme.j",{"_index":1871,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["therefor",{"_index":195,"title":{},"name":{},"text":{"2":{},"8":{},"12":{},"41":{},"47":{},"79":{},"80":{},"83":{},"88":{},"93":{},"95":{},"98":{},"127":{},"128":{},"132":{},"133":{},"136":{},"141":{},"147":{},"149":{},"150":{},"153":{},"154":{},"181":{},"193":{},"194":{},"198":{},"199":{},"202":{},"207":{},"213":{},"215":{},"216":{},"219":{},"220":{},"247":{}},"component":{}}],["therein",{"_index":2666,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["there’",{"_index":2130,"title":{},"name":{},"text":{"79":{},"93":{},"132":{},"147":{},"198":{},"213":{}},"component":{}}],["thing",{"_index":983,"title":{},"name":{},"text":{"14":{},"26":{},"39":{},"50":{},"61":{},"75":{},"96":{},"98":{},"110":{},"130":{},"151":{},"154":{},"171":{},"196":{},"217":{},"220":{},"237":{}},"component":{}}],["third",{"_index":765,"title":{"20-4":{},"56-4":{},"101-14":{},"157-17":{},"223-17":{}},"name":{},"text":{"7":{},"20":{},"27":{},"46":{},"56":{},"62":{},"85":{},"101":{},"111":{},"138":{},"157":{},"172":{},"204":{},"223":{},"238":{}},"component":{}}],["those",{"_index":1942,"title":{},"name":{},"text":{"39":{},"75":{},"77":{},"79":{},"81":{},"83":{},"94":{},"95":{},"98":{},"102":{},"123":{},"128":{},"130":{},"132":{},"136":{},"137":{},"148":{},"149":{},"150":{},"154":{},"181":{},"186":{},"189":{},"194":{},"196":{},"198":{},"202":{},"203":{},"214":{},"215":{},"216":{},"220":{},"247":{},"253":{},"255":{}},"component":{}}],["though",{"_index":2097,"title":{},"name":{},"text":{"79":{},"94":{},"108":{},"128":{},"132":{},"148":{},"153":{},"169":{},"194":{},"198":{},"214":{},"219":{},"235":{}},"component":{}}],["three",{"_index":966,"title":{},"name":{},"text":{"14":{},"21":{},"22":{},"50":{},"57":{},"58":{},"95":{},"96":{},"98":{},"101":{},"102":{},"128":{},"149":{},"150":{},"151":{},"152":{},"154":{},"157":{},"158":{},"194":{},"215":{},"216":{},"217":{},"218":{},"220":{},"223":{},"224":{}},"component":{}}],["threshold",{"_index":2561,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["through",{"_index":460,"title":{"25-5":{},"26-5":{},"29-5":{},"30-5":{},"31-5":{},"32-18":{},"33-5":{},"34-5":{},"35-5":{},"38-5":{},"61-5":{},"63-5":{},"64-5":{},"66-5":{},"67-5":{},"68-18":{},"69-5":{},"70-5":{},"71-5":{},"74-5":{},"109-8":{},"110-5":{},"112-5":{},"113-5":{},"114-7":{},"115-5":{},"116-5":{},"117-18":{},"118-5":{},"119-5":{},"120-9":{},"121-5":{},"124-5":{},"125-5":{},"170-9":{},"171-6":{},"173-6":{},"174-6":{},"175-6":{},"176-8":{},"177-6":{},"178-7":{},"179-6":{},"180-6":{},"181-5":{},"183-9":{},"184-6":{},"187-5":{},"188-5":{},"190-5":{},"191-5":{},"236-9":{},"237-6":{},"239-6":{},"240-6":{},"241-6":{},"242-8":{},"243-6":{},"244-7":{},"245-6":{},"246-6":{},"247-5":{},"249-9":{},"250-6":{},"252-5":{},"254-5":{},"256-5":{},"257-5":{}},"name":{},"text":{"2":{},"5":{},"11":{},"12":{},"31":{},"33":{},"41":{},"44":{},"67":{},"69":{},"77":{},"83":{},"98":{},"104":{},"105":{},"107":{},"108":{},"109":{},"116":{},"118":{},"120":{},"128":{},"130":{},"136":{},"137":{},"142":{},"146":{},"153":{},"154":{},"158":{},"162":{},"163":{},"164":{},"165":{},"168":{},"169":{},"170":{},"178":{},"179":{},"183":{},"194":{},"196":{},"202":{},"203":{},"208":{},"212":{},"219":{},"220":{},"224":{},"228":{},"229":{},"230":{},"231":{},"234":{},"235":{},"236":{},"244":{},"245":{},"249":{}},"component":{}}],["thru",{"_index":666,"title":{"22-5":{},"27-11":{},"28-5":{},"36-5":{},"37-5":{},"58-5":{},"62-11":{},"65-5":{},"72-5":{},"73-5":{},"111-11":{},"122-5":{},"172-12":{},"185-6":{},"238-12":{},"251-6":{}},"name":{},"text":{"5":{},"7":{},"8":{},"19":{},"21":{},"22":{},"27":{},"39":{},"44":{},"46":{},"55":{},"57":{},"58":{},"62":{},"75":{},"100":{},"101":{},"111":{},"156":{},"157":{},"172":{},"222":{},"223":{},"238":{}},"component":{}}],["thu",{"_index":2261,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["thymeleaf",{"_index":1160,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["ticket",{"_index":625,"title":{},"name":{},"text":{"4":{},"14":{},"43":{},"50":{},"81":{},"91":{},"96":{},"145":{},"151":{},"211":{},"217":{}},"component":{}}],["tight",{"_index":1330,"title":{},"name":{},"text":{"22":{},"58":{},"101":{}},"component":{}}],["tighten",{"_index":1322,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["till",{"_index":3747,"title":{},"name":{},"text":{"234":{}},"component":{}}],["tiller",{"_index":3130,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["time",{"_index":292,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"27":{},"29":{},"41":{},"44":{},"50":{},"62":{},"63":{},"77":{},"79":{},"94":{},"95":{},"96":{},"98":{},"99":{},"101":{},"102":{},"108":{},"111":{},"112":{},"126":{},"130":{},"132":{},"137":{},"142":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"172":{},"173":{},"180":{},"192":{},"196":{},"198":{},"203":{},"208":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"238":{},"239":{},"246":{},"258":{}},"component":{}}],["timeout",{"_index":581,"title":{"4-4":{},"43-4":{},"91-4":{},"145-4":{},"154-26":{},"211-4":{},"220-26":{}},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["timeout=10m",{"_index":3294,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["timeoutsecond",{"_index":2604,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["titl",{"_index":309,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{},"151":{},"217":{}},"component":{}}],["tl",{"_index":3781,"title":{},"name":{},"text":{"240":{}},"component":{}}],["tlsv1.2",{"_index":3581,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["tmp",{"_index":1961,"title":{},"name":{},"text":{"39":{},"50":{},"75":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["togeth",{"_index":2493,"title":{},"name":{},"text":{"96":{},"150":{},"151":{},"182":{},"216":{},"217":{},"248":{}},"component":{}}],["token",{"_index":509,"title":{},"name":{},"text":{"2":{},"6":{},"13":{},"14":{},"20":{},"41":{},"45":{},"49":{},"50":{},"56":{},"77":{},"78":{},"80":{},"87":{},"96":{},"98":{},"99":{},"101":{},"130":{},"131":{},"133":{},"140":{},"151":{},"154":{},"155":{},"157":{},"196":{},"197":{},"199":{},"206":{},"217":{},"220":{},"221":{},"223":{}},"component":{}}],["tokio",{"_index":3598,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["toml",{"_index":3768,"title":{},"name":{},"text":{"240":{}},"component":{}}],["tool",{"_index":12,"title":{"2-6":{},"2-12":{},"41-6":{},"41-12":{},"77-7":{}},"name":{},"text":{"1":{},"2":{},"6":{},"19":{},"20":{},"26":{},"27":{},"40":{},"41":{},"45":{},"55":{},"56":{},"61":{},"62":{},"76":{},"77":{},"78":{},"85":{},"100":{},"101":{},"107":{},"110":{},"111":{},"120":{},"127":{},"128":{},"129":{},"130":{},"131":{},"136":{},"138":{},"153":{},"156":{},"157":{},"160":{},"167":{},"168":{},"171":{},"172":{},"174":{},"183":{},"186":{},"187":{},"188":{},"193":{},"194":{},"195":{},"196":{},"197":{},"202":{},"204":{},"219":{},"222":{},"223":{},"226":{},"233":{},"234":{},"237":{},"238":{},"240":{},"249":{},"252":{},"253":{},"254":{}},"component":{}}],["toolchain",{"_index":3579,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["toolkit",{"_index":3713,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["toolstack",{"_index":156,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["top",{"_index":760,"title":{},"name":{},"text":{"7":{},"14":{},"25":{},"46":{},"50":{},"66":{},"96":{},"98":{},"114":{},"115":{},"126":{},"151":{},"154":{},"176":{},"177":{},"178":{},"192":{},"217":{},"220":{},"242":{},"243":{},"244":{},"258":{}},"component":{}}],["topic",{"_index":849,"title":{},"name":{},"text":{"11":{}},"component":{}}],["toref",{"_index":3272,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["total",{"_index":3430,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["touch",{"_index":1893,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tower",{"_index":3599,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["trace",{"_index":3021,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["traceabl",{"_index":2741,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["tracebl",{"_index":2491,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["track",{"_index":1073,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"81":{},"83":{},"96":{},"117":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["train",{"_index":1627,"title":{"32-12":{},"32-14":{},"32-16":{},"68-12":{},"68-14":{},"68-16":{},"117-12":{},"117-14":{},"117-16":{}},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["trainin",{"_index":1736,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["trane",{"_index":1731,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["transfer",{"_index":1726,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["transform",{"_index":3687,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["transpil",{"_index":1552,"title":{},"name":{},"text":{"28":{},"34":{},"65":{},"70":{},"114":{},"119":{},"176":{},"242":{}},"component":{}}],["travi",{"_index":2271,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["travis.yml",{"_index":2272,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["tree",{"_index":1795,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"174":{},"184":{},"240":{},"250":{}},"component":{}}],["trend",{"_index":2754,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["tri",{"_index":145,"title":{"2-69":{},"41-69":{}},"name":{},"text":{"4":{},"14":{},"22":{},"43":{},"50":{},"58":{},"77":{},"81":{},"91":{},"96":{},"97":{},"101":{},"108":{},"130":{},"145":{},"151":{},"152":{},"153":{},"157":{},"169":{},"196":{},"211":{},"217":{},"218":{},"219":{},"223":{},"235":{}},"component":{}}],["trick",{"_index":2065,"title":{},"name":{},"text":{"77":{}},"component":{}}],["trigger",{"_index":665,"title":{},"name":{},"text":{"5":{},"6":{},"8":{},"14":{},"15":{},"18":{},"21":{},"22":{},"32":{},"39":{},"44":{},"45":{},"47":{},"50":{},"51":{},"54":{},"57":{},"58":{},"68":{},"75":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"102":{},"108":{},"117":{},"121":{},"122":{},"123":{},"128":{},"133":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"158":{},"169":{},"182":{},"184":{},"185":{},"186":{},"194":{},"199":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"224":{},"235":{},"248":{},"250":{},"251":{},"253":{}},"component":{}}],["trigger_secret",{"_index":781,"title":{},"name":{},"text":{"8":{},"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["trivi",{"_index":3208,"title":{},"name":{},"text":{"138":{},"151":{},"204":{},"217":{}},"component":{}}],["trivial",{"_index":2492,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["troubleshoot",{"_index":587,"title":{"4":{},"43":{},"91":{},"145":{},"211":{}},"name":{"4":{},"43":{},"91":{},"145":{},"211":{}},"text":{},"component":{}}],["true",{"_index":580,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"5":{},"14":{},"22":{},"32":{},"44":{},"50":{},"58":{},"68":{},"80":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"117":{},"133":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"172":{},"181":{},"199":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"238":{},"247":{}},"component":{}}],["trust",{"_index":747,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["tsc",{"_index":3065,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["tsconfig",{"_index":3064,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["tsconfig.app.json",{"_index":1812,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["tsconfig.json",{"_index":1544,"title":{},"name":{},"text":{"28":{},"34":{},"35":{},"36":{},"38":{},"65":{},"70":{},"71":{},"72":{},"74":{},"114":{},"119":{},"121":{},"122":{},"176":{},"181":{},"184":{},"185":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["tsconfig.spec.json",{"_index":1813,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["tslint",{"_index":3648,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["tslint.json",{"_index":1545,"title":{},"name":{},"text":{"28":{},"34":{},"35":{},"36":{},"65":{},"70":{},"71":{},"72":{},"114":{},"119":{},"121":{},"122":{},"176":{},"242":{}},"component":{}}],["tsx",{"_index":1919,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tsx.d.t",{"_index":1918,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tui",{"_index":3585,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["turn",{"_index":1308,"title":{},"name":{},"text":{"22":{},"58":{},"96":{},"98":{},"101":{},"102":{},"108":{},"151":{},"154":{},"157":{},"169":{},"217":{},"220":{},"223":{},"235":{}},"component":{}}],["two",{"_index":963,"title":{},"name":{},"text":{"14":{},"18":{},"19":{},"21":{},"22":{},"31":{},"32":{},"33":{},"50":{},"54":{},"55":{},"57":{},"58":{},"67":{},"68":{},"69":{},"76":{},"78":{},"80":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"109":{},"116":{},"117":{},"118":{},"127":{},"129":{},"131":{},"133":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"160":{},"170":{},"178":{},"179":{},"180":{},"182":{},"193":{},"195":{},"197":{},"199":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"226":{},"236":{},"244":{},"245":{},"246":{},"248":{}},"component":{}}],["type",{"_index":361,"title":{"22-4":{},"58-4":{},"98-4":{},"98-5":{},"98-6":{},"101-3":{},"101-5":{},"101-6":{},"101-8":{},"126-4":{},"126-5":{},"126-6":{},"154-4":{},"154-5":{},"154-6":{},"154-7":{},"154-8":{},"154-9":{},"157-6":{},"157-8":{},"157-9":{},"157-11":{},"189-7":{},"192-4":{},"192-5":{},"192-6":{},"220-4":{},"220-5":{},"220-6":{},"220-7":{},"220-8":{},"220-9":{},"223-6":{},"223-8":{},"223-9":{},"223-11":{},"255-7":{},"258-4":{},"258-5":{},"258-6":{}},"name":{},"text":{"2":{},"22":{},"39":{},"41":{},"58":{},"75":{},"76":{},"80":{},"94":{},"98":{},"100":{},"101":{},"126":{},"129":{},"133":{},"148":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"189":{},"192":{},"195":{},"199":{},"214":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["type=authorization_cod",{"_index":1230,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["types/nod",{"_index":3077,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["typesaf",{"_index":498,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["typescript",{"_index":1528,"title":{},"name":{"65":{},"114":{},"176":{},"242":{}},"text":{"28":{},"34":{},"35":{},"36":{},"38":{},"65":{},"70":{},"71":{},"72":{},"74":{},"114":{},"119":{},"121":{},"122":{},"176":{},"181":{},"184":{},"185":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["typescript/express",{"_index":3124,"title":{},"name":{},"text":{"123":{},"186":{},"253":{}},"component":{}}],["typic",{"_index":1477,"title":{},"name":{},"text":{"26":{},"39":{},"61":{},"75":{},"77":{},"81":{},"98":{},"108":{},"110":{},"123":{},"128":{},"130":{},"136":{},"151":{},"153":{},"154":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"184":{},"185":{},"186":{},"189":{},"194":{},"196":{},"202":{},"217":{},"219":{},"220":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"250":{},"251":{},"253":{},"255":{}},"component":{}}],["typo",{"_index":2227,"title":{},"name":{},"text":{"81":{}},"component":{}}],["t’",{"_index":1278,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["u",{"_index":2066,"title":{},"name":{},"text":{"77":{},"94":{},"130":{},"148":{},"196":{},"214":{}},"component":{}}],["uat",{"_index":988,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["ug=rx",{"_index":3673,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["ui",{"_index":1139,"title":{},"name":{},"text":{"19":{},"22":{},"37":{},"55":{},"58":{},"73":{},"79":{},"82":{},"83":{},"100":{},"101":{},"102":{},"132":{},"135":{},"153":{},"156":{},"157":{},"185":{},"189":{},"198":{},"201":{},"219":{},"222":{},"223":{},"251":{},"255":{}},"component":{}}],["umbrella",{"_index":3165,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["umbrella_dir",{"_index":3170,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["umbrella_dir=~/opendevstack",{"_index":3168,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["unavail",{"_index":2876,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["unawar",{"_index":2442,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["uncheck",{"_index":323,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["under",{"_index":38,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"8":{},"13":{},"14":{},"19":{},"24":{},"27":{},"32":{},"40":{},"41":{},"45":{},"47":{},"49":{},"50":{},"55":{},"60":{},"62":{},"68":{},"76":{},"78":{},"79":{},"80":{},"87":{},"88":{},"96":{},"98":{},"100":{},"111":{},"113":{},"114":{},"117":{},"129":{},"131":{},"132":{},"133":{},"140":{},"141":{},"151":{},"154":{},"156":{},"175":{},"176":{},"195":{},"197":{},"198":{},"199":{},"206":{},"207":{},"217":{},"220":{},"222":{},"241":{},"242":{}},"component":{}}],["underscor",{"_index":3390,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["understand",{"_index":850,"title":{},"name":{},"text":{"11":{},"14":{},"27":{},"38":{},"50":{},"62":{},"74":{},"81":{},"96":{},"98":{},"111":{},"126":{},"150":{},"154":{},"172":{},"192":{},"216":{},"220":{},"238":{},"258":{}},"component":{}}],["unexpect",{"_index":3368,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["unfortun",{"_index":2695,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["uniqu",{"_index":2756,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"219":{},"220":{}},"component":{}}],["unirest",{"_index":3094,"title":{"120":{},"183":{},"249":{}},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["unit",{"_index":1390,"title":{},"name":{},"text":{"22":{},"25":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"58":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"101":{},"112":{},"114":{},"115":{},"121":{},"122":{},"157":{},"172":{},"173":{},"174":{},"176":{},"177":{},"184":{},"185":{},"223":{},"238":{},"239":{},"240":{},"242":{},"243":{},"250":{},"251":{}},"component":{}}],["unittest",{"_index":1642,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["unknown",{"_index":715,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["unless",{"_index":241,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"81":{},"128":{},"133":{},"155":{},"194":{},"199":{},"221":{}},"component":{}}],["unlik",{"_index":2430,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["unnecessari",{"_index":1709,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["unreach",{"_index":574,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["unrel",{"_index":2242,"title":{},"name":{},"text":{"81":{}},"component":{}}],["unsur",{"_index":2384,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["until",{"_index":434,"title":{},"name":{},"text":{"2":{},"41":{},"128":{},"194":{},"217":{}},"component":{}}],["unwant",{"_index":2753,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["unzip",{"_index":3670,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["up",{"_index":18,"title":{"2-39":{},"2-40":{},"2-47":{},"41-39":{},"41-40":{},"41-47":{},"178-5":{},"244-5":{}},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"8":{},"14":{},"18":{},"19":{},"22":{},"31":{},"32":{},"33":{},"36":{},"37":{},"40":{},"41":{},"43":{},"45":{},"47":{},"50":{},"54":{},"55":{},"58":{},"67":{},"68":{},"69":{},"72":{},"73":{},"76":{},"77":{},"79":{},"81":{},"85":{},"88":{},"91":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"108":{},"114":{},"116":{},"117":{},"118":{},"122":{},"123":{},"126":{},"128":{},"129":{},"130":{},"132":{},"136":{},"137":{},"138":{},"141":{},"142":{},"145":{},"146":{},"149":{},"151":{},"152":{},"154":{},"156":{},"157":{},"169":{},"176":{},"178":{},"179":{},"180":{},"184":{},"185":{},"186":{},"192":{},"194":{},"195":{},"196":{},"198":{},"202":{},"203":{},"204":{},"207":{},"208":{},"211":{},"212":{},"215":{},"217":{},"218":{},"220":{},"222":{},"223":{},"235":{},"242":{},"244":{},"245":{},"246":{},"250":{},"251":{},"253":{},"258":{}},"component":{}}],["upcom",{"_index":2171,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["updat",{"_index":552,"title":{"80":{},"94":{},"95":{},"133":{},"148":{},"149":{},"150":{},"199":{},"214":{},"215":{},"216":{},"76-2":{},"79-2":{},"80-1":{},"80-2":{},"80-3":{},"80-22":{},"80-23":{},"80-24":{},"94-2":{},"94-3":{},"95-2":{},"129-2":{},"132-2":{},"133-1":{},"133-2":{},"133-3":{},"133-22":{},"133-23":{},"133-24":{},"137-1":{},"142-1":{},"146-2":{},"148-2":{},"148-3":{},"149-2":{},"150-1":{},"195-2":{},"198-2":{},"199-1":{},"199-2":{},"199-3":{},"199-22":{},"199-23":{},"199-24":{},"203-1":{},"208-1":{},"212-2":{},"214-2":{},"214-3":{},"215-2":{},"216-1":{}},"name":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"text":{"2":{},"5":{},"6":{},"8":{},"13":{},"14":{},"22":{},"28":{},"35":{},"36":{},"37":{},"38":{},"41":{},"44":{},"45":{},"49":{},"50":{},"58":{},"65":{},"71":{},"72":{},"73":{},"74":{},"76":{},"77":{},"79":{},"80":{},"82":{},"83":{},"94":{},"95":{},"96":{},"97":{},"100":{},"101":{},"102":{},"108":{},"114":{},"121":{},"122":{},"128":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"152":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"176":{},"184":{},"185":{},"194":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"218":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"242":{},"250":{},"251":{}},"component":{}}],["update/add/remov",{"_index":2146,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["updated/added/remov",{"_index":2105,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["upfront",{"_index":3249,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["upgrad",{"_index":871,"title":{"23":{},"59":{},"39-9":{},"75-9":{},"95-10":{},"149-10":{},"215-10":{}},"name":{},"text":{"12":{},"39":{},"75":{},"77":{},"95":{},"128":{},"130":{},"149":{},"151":{},"172":{},"178":{},"194":{},"196":{},"215":{},"217":{},"238":{},"244":{}},"component":{}}],["upgrade_not",{"_index":1395,"title":{},"name":{"23":{},"59":{}},"text":{},"component":{}}],["upload",{"_index":1090,"title":{"27-7":{},"62-7":{},"111-7":{},"172-7":{},"238-7":{}},"name":{},"text":{"14":{},"15":{},"16":{},"27":{},"50":{},"51":{},"52":{},"62":{},"79":{},"80":{},"96":{},"111":{},"132":{},"133":{},"151":{},"172":{},"198":{},"199":{},"217":{},"238":{}},"component":{}}],["upsid",{"_index":2594,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["upstream",{"_index":2223,"title":{"81-2":{}},"name":{},"text":{"81":{},"137":{},"203":{}},"component":{}}],["uri",{"_index":1256,"title":{},"name":{},"text":{"20":{},"23":{},"56":{},"59":{},"80":{},"101":{},"133":{},"157":{},"199":{},"223":{}},"component":{}}],["uri=${idmanager.url}/auth/realms/${idmanager.realm",{"_index":1234,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid",{"_index":1238,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["uri=userinfo",{"_index":2937,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["url",{"_index":171,"title":{"98-7":{},"98-8":{},"98-9":{},"101-8":{},"126-7":{},"126-8":{},"126-9":{},"154-10":{},"154-11":{},"154-12":{},"157-11":{},"192-7":{},"192-8":{},"192-9":{},"220-10":{},"220-11":{},"220-12":{},"223-11":{},"258-7":{},"258-8":{},"258-9":{}},"name":{},"text":{"2":{},"6":{},"8":{},"11":{},"14":{},"20":{},"21":{},"22":{},"27":{},"32":{},"34":{},"39":{},"41":{},"45":{},"47":{},"50":{},"56":{},"57":{},"58":{},"62":{},"68":{},"70":{},"75":{},"77":{},"79":{},"80":{},"87":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"117":{},"119":{},"120":{},"126":{},"130":{},"132":{},"133":{},"140":{},"141":{},"147":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"172":{},"183":{},"192":{},"196":{},"198":{},"199":{},"206":{},"207":{},"213":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"238":{},"249":{},"258":{}},"component":{}}],["url.groovi",{"_index":707,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["urlencod",{"_index":1353,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["us",{"_index":8,"title":{"4-1":{},"5-4":{},"22-5":{},"25-3":{},"25-6":{},"26-3":{},"26-6":{},"27-8":{},"27-12":{},"28-1":{},"28-3":{},"28-6":{},"29-3":{},"29-6":{},"30-3":{},"30-6":{},"31-3":{},"31-6":{},"32-19":{},"32-20":{},"33-3":{},"33-6":{},"34-3":{},"34-6":{},"35-3":{},"35-6":{},"36-3":{},"36-6":{},"37-3":{},"37-6":{},"38-3":{},"38-6":{},"43-1":{},"44-4":{},"58-5":{},"61-3":{},"61-6":{},"62-8":{},"62-12":{},"63-3":{},"63-6":{},"64-3":{},"64-6":{},"65-1":{},"65-3":{},"65-6":{},"66-3":{},"66-6":{},"67-3":{},"67-6":{},"68-19":{},"68-20":{},"69-3":{},"69-6":{},"70-3":{},"70-6":{},"71-3":{},"71-6":{},"72-3":{},"72-6":{},"73-3":{},"73-6":{},"74-3":{},"74-6":{},"83-2":{},"83-4":{},"83-12":{},"83-13":{},"83-14":{},"91-1":{},"109-3":{},"109-7":{},"109-9":{},"110-3":{},"110-6":{},"111-8":{},"111-12":{},"112-3":{},"112-6":{},"113-3":{},"113-6":{},"114-1":{},"114-3":{},"114-8":{},"115-3":{},"115-6":{},"116-3":{},"116-6":{},"117-19":{},"117-20":{},"118-3":{},"118-6":{},"119-3":{},"119-6":{},"120-6":{},"120-10":{},"121-3":{},"121-6":{},"122-3":{},"122-6":{},"124-3":{},"124-6":{},"125-3":{},"125-6":{},"128-2":{},"128-3":{},"128-4":{},"136-12":{},"136-13":{},"136-14":{},"145-1":{},"158-2":{},"170-3":{},"170-7":{},"170-10":{},"171-3":{},"171-7":{},"172-8":{},"172-13":{},"173-3":{},"173-7":{},"174-3":{},"174-7":{},"174-8":{},"175-3":{},"175-7":{},"176-1":{},"176-3":{},"176-9":{},"177-3":{},"177-7":{},"178-3":{},"178-8":{},"179-3":{},"179-7":{},"180-3":{},"180-7":{},"181-3":{},"181-8":{},"182-3":{},"182-5":{},"183-6":{},"183-10":{},"184-3":{},"184-7":{},"185-3":{},"185-7":{},"187-3":{},"187-6":{},"188-3":{},"188-6":{},"190-3":{},"190-6":{},"191-3":{},"191-6":{},"194-2":{},"194-3":{},"194-4":{},"202-12":{},"202-13":{},"202-14":{},"211-1":{},"224-2":{},"236-3":{},"236-7":{},"236-10":{},"237-3":{},"237-7":{},"238-8":{},"238-13":{},"239-3":{},"239-7":{},"240-3":{},"240-7":{},"240-8":{},"240-10":{},"240-14":{},"241-3":{},"241-7":{},"242-1":{},"242-3":{},"242-9":{},"243-3":{},"243-7":{},"244-3":{},"244-8":{},"245-3":{},"245-7":{},"246-3":{},"246-7":{},"247-3":{},"247-8":{},"248-3":{},"248-5":{},"249-6":{},"249-10":{},"250-3":{},"250-7":{},"251-3":{},"251-7":{},"252-3":{},"252-6":{},"254-3":{},"254-6":{},"256-3":{},"256-6":{},"257-3":{},"257-6":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"6":{},"7":{},"8":{},"11":{},"12":{},"13":{},"14":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"141":{},"142":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"207":{},"208":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["usag",{"_index":236,"title":{"6-7":{},"14-1":{},"22-1":{},"25-4":{},"26-4":{},"27-10":{},"28-4":{},"29-4":{},"30-4":{},"31-4":{},"33-4":{},"34-4":{},"35-4":{},"36-4":{},"37-4":{},"38-4":{},"39-6":{},"45-7":{},"50-1":{},"58-1":{},"61-4":{},"62-10":{},"63-4":{},"64-4":{},"65-4":{},"66-4":{},"67-4":{},"69-4":{},"70-4":{},"71-4":{},"72-4":{},"73-4":{},"74-4":{},"75-6":{},"96-1":{},"98-1":{},"99-1":{},"102-1":{},"109-4":{},"110-4":{},"111-10":{},"112-4":{},"113-4":{},"114-6":{},"115-4":{},"116-4":{},"118-4":{},"119-4":{},"120-7":{},"121-4":{},"122-4":{},"124-4":{},"125-4":{},"151-1":{},"153-2":{},"154-1":{},"155-1":{},"170-4":{},"171-4":{},"172-10":{},"173-4":{},"174-4":{},"175-4":{},"176-6":{},"177-4":{},"178-4":{},"179-4":{},"180-4":{},"181-4":{},"182-4":{},"183-7":{},"184-4":{},"185-4":{},"187-4":{},"188-4":{},"190-4":{},"191-4":{},"217-1":{},"219-2":{},"220-1":{},"221-1":{},"236-4":{},"237-4":{},"238-10":{},"239-4":{},"240-4":{},"241-4":{},"242-6":{},"243-4":{},"244-4":{},"245-4":{},"246-4":{},"247-4":{},"248-4":{},"249-7":{},"250-4":{},"251-4":{},"252-4":{},"254-4":{},"256-4":{},"257-4":{}},"name":{},"text":{"2":{},"12":{},"19":{},"22":{},"39":{},"41":{},"55":{},"58":{},"75":{},"78":{},"94":{},"100":{},"102":{},"108":{},"131":{},"148":{},"156":{},"169":{},"174":{},"181":{},"197":{},"214":{},"222":{},"235":{},"247":{}},"component":{}}],["usage.md",{"_index":905,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["usecas",{"_index":1459,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["useful",{"_index":2893,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["user",{"_index":113,"title":{"94":{},"95":{},"148":{},"149":{},"150":{},"214":{},"215":{},"216":{},"2-26":{},"2-34":{},"2-42":{},"2-53":{},"2-55":{},"2-61":{},"20-4":{},"41-26":{},"41-34":{},"41-42":{},"41-53":{},"41-55":{},"41-61":{},"56-4":{},"78-2":{},"78-5":{},"80-12":{},"80-23":{},"101-14":{},"131-2":{},"131-5":{},"133-12":{},"133-23":{},"157-17":{},"197-2":{},"197-5":{},"199-12":{},"199-23":{},"223-17":{}},"name":{},"text":{"2":{},"4":{},"6":{},"13":{},"14":{},"20":{},"22":{},"25":{},"29":{},"30":{},"32":{},"34":{},"35":{},"39":{},"41":{},"43":{},"45":{},"49":{},"50":{},"56":{},"58":{},"63":{},"64":{},"66":{},"68":{},"70":{},"71":{},"75":{},"77":{},"78":{},"79":{},"80":{},"83":{},"91":{},"92":{},"94":{},"95":{},"97":{},"98":{},"101":{},"102":{},"112":{},"115":{},"117":{},"119":{},"121":{},"128":{},"130":{},"131":{},"132":{},"133":{},"136":{},"145":{},"146":{},"148":{},"149":{},"151":{},"152":{},"153":{},"154":{},"157":{},"158":{},"173":{},"177":{},"178":{},"181":{},"184":{},"189":{},"194":{},"196":{},"197":{},"198":{},"199":{},"202":{},"211":{},"212":{},"214":{},"215":{},"217":{},"218":{},"219":{},"220":{},"223":{},"224":{},"239":{},"243":{},"244":{},"247":{},"250":{},"255":{}},"component":{}}],["user1",{"_index":2078,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["usergroup",{"_index":1374,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["userinterfac",{"_index":1324,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["usernam",{"_index":304,"title":{},"name":{},"text":{"2":{},"14":{},"22":{},"32":{},"41":{},"50":{},"58":{},"68":{},"80":{},"96":{},"101":{},"117":{},"133":{},"151":{},"157":{},"199":{},"217":{},"223":{}},"component":{}}],["username=tru",{"_index":2952,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["userregistryactor.scala",{"_index":1605,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["userrepos.j",{"_index":1863,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["userroutes.scala",{"_index":1606,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["userroutesspec.scala",{"_index":1607,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["users.sh",{"_index":3217,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["user’",{"_index":344,"title":{},"name":{},"text":{"2":{},"20":{},"41":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["usr/bin/env",{"_index":2820,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["usual",{"_index":779,"title":{},"name":{},"text":{"8":{},"29":{},"32":{},"39":{},"47":{},"63":{},"68":{},"75":{},"81":{},"88":{},"98":{},"108":{},"112":{},"117":{},"121":{},"122":{},"141":{},"151":{},"153":{},"154":{},"169":{},"173":{},"180":{},"184":{},"185":{},"189":{},"207":{},"217":{},"219":{},"220":{},"235":{},"239":{},"246":{},"250":{},"251":{},"255":{}},"component":{}}],["usus",{"_index":3421,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["ut",{"_index":805,"title":{},"name":{},"text":{"10":{}},"component":{}}],["util",{"_index":3571,"title":{},"name":{},"text":{"174":{},"186":{},"187":{},"188":{},"240":{},"252":{},"253":{},"254":{}},"component":{}}],["uuid",{"_index":3782,"title":{},"name":{},"text":{"240":{}},"component":{}}],["v",{"_index":1381,"title":{},"name":{},"text":{"22":{},"27":{},"29":{},"58":{},"62":{},"63":{},"111":{},"120":{},"172":{},"183":{},"234":{},"238":{},"249":{}},"component":{}}],["v1",{"_index":1399,"title":{},"name":{},"text":{"23":{},"59":{},"80":{},"98":{},"154":{},"220":{}},"component":{}}],["v1.0.9",{"_index":2019,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["v1.1.x",{"_index":1383,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["v10",{"_index":3063,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["v2",{"_index":1397,"title":{},"name":{},"text":{"23":{},"59":{},"101":{},"157":{},"223":{}},"component":{}}],["v2.0",{"_index":2164,"title":{},"name":{},"text":{"80":{},"81":{},"83":{},"96":{},"133":{},"151":{},"199":{},"217":{}},"component":{}}],["v2.0.0",{"_index":3196,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["v20",{"_index":3603,"title":{},"name":{},"text":{"176":{}},"component":{}}],["v22",{"_index":3800,"title":{},"name":{},"text":{"242":{}},"component":{}}],["v3.0",{"_index":2290,"title":{},"name":{},"text":{"83":{}},"component":{}}],["v3.0.0",{"_index":3197,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["v4.0.0",{"_index":3167,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["v6",{"_index":1525,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["vagrant",{"_index":80,"title":{"2-4":{},"4-1":{},"41-4":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"2":{},"4":{},"20":{},"41":{},"43":{},"56":{},"78":{},"91":{},"101":{},"131":{},"145":{},"157":{},"197":{},"211":{},"223":{}},"component":{}}],["vagrant/ansible/playbooks/rol",{"_index":571,"title":{"4-2":{},"43-2":{},"91-2":{},"145-2":{},"211-2":{}},"name":{},"text":{},"component":{}}],["vagrant/ansible/rol",{"_index":607,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["vagrant/ansible/roles/geerlingguy.git",{"_index":2028,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["vagrant_prefer_system_bin=1",{"_index":589,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["valid",{"_index":206,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"100":{},"126":{},"151":{},"153":{},"154":{},"156":{},"178":{},"189":{},"192":{},"217":{},"219":{},"220":{},"222":{},"244":{},"255":{},"258":{}},"component":{}}],["valu",{"_index":277,"title":{},"name":{},"text":{"2":{},"8":{},"12":{},"14":{},"20":{},"32":{},"41":{},"47":{},"50":{},"56":{},"60":{},"68":{},"77":{},"79":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"117":{},"126":{},"128":{},"130":{},"132":{},"141":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"182":{},"184":{},"185":{},"188":{},"189":{},"192":{},"194":{},"196":{},"198":{},"207":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"248":{},"250":{},"251":{},"254":{},"255":{},"258":{}},"component":{}}],["values.dev.yaml",{"_index":3330,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.env.yaml",{"_index":3327,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.prod.yaml",{"_index":3332,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.test.yaml",{"_index":3331,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.yaml",{"_index":3311,"title":{},"name":{},"text":{"151":{},"174":{},"217":{},"240":{}},"component":{}}],["vanilla",{"_index":3142,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["var",{"_index":952,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["var/lib/jenkins/init.groovy.d/url.groovi",{"_index":2217,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["var/lib/pgsql",{"_index":2123,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["variabl",{"_index":35,"title":{"11-1":{},"32-16":{},"32-17":{},"68-16":{},"68-17":{},"117-16":{},"117-17":{}},"name":{},"text":{"1":{},"6":{},"8":{},"11":{},"12":{},"14":{},"16":{},"19":{},"27":{},"32":{},"40":{},"45":{},"47":{},"50":{},"52":{},"55":{},"62":{},"68":{},"76":{},"80":{},"87":{},"88":{},"95":{},"96":{},"98":{},"100":{},"107":{},"109":{},"111":{},"117":{},"129":{},"133":{},"140":{},"141":{},"149":{},"151":{},"154":{},"156":{},"168":{},"170":{},"172":{},"181":{},"195":{},"199":{},"206":{},"207":{},"215":{},"217":{},"220":{},"222":{},"234":{},"236":{},"238":{},"247":{}},"component":{}}],["variables.scss",{"_index":3707,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["variou",{"_index":464,"title":{},"name":{},"text":{"2":{},"19":{},"29":{},"30":{},"35":{},"38":{},"41":{},"55":{},"63":{},"64":{},"71":{},"74":{},"98":{},"100":{},"112":{},"113":{},"136":{},"154":{},"156":{},"173":{},"174":{},"175":{},"180":{},"187":{},"188":{},"202":{},"220":{},"222":{},"239":{},"240":{},"241":{},"246":{},"252":{},"254":{}},"component":{}}],["vars/odspipeline.groovi",{"_index":992,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["vault",{"_index":237,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["vendor",{"_index":3417,"title":{},"name":{},"text":{"154":{},"220":{},"240":{}},"component":{}}],["venv",{"_index":1581,"title":{},"name":{},"text":{"29":{},"63":{},"173":{},"178":{},"180":{},"239":{},"244":{},"246":{}},"component":{}}],["venv/bin/activ",{"_index":1582,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["verbatim",{"_index":3320,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["verbos",{"_index":2212,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["veri",{"_index":1210,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"128":{},"156":{},"194":{},"222":{}},"component":{}}],["verifi",{"_index":315,"title":{},"name":{},"text":{"2":{},"5":{},"27":{},"41":{},"44":{},"47":{},"62":{},"79":{},"88":{},"96":{},"100":{},"111":{},"120":{},"132":{},"141":{},"151":{},"156":{},"157":{},"172":{},"183":{},"198":{},"207":{},"217":{},"222":{},"223":{},"238":{},"249":{}},"component":{}}],["verifytl",{"_index":3354,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["vero",{"_index":812,"title":{},"name":{},"text":{"10":{}},"component":{}}],["versa",{"_index":3134,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["version",{"_index":191,"title":{"94":{},"95":{},"148":{},"149":{},"150":{},"214":{},"215":{},"216":{},"12-3":{},"14-9":{},"32-9":{},"50-9":{},"68-9":{},"83-7":{},"83-12":{},"83-13":{},"83-14":{},"94-9":{},"114-5":{},"117-9":{},"136-6":{},"136-12":{},"136-13":{},"136-14":{},"137-1":{},"142-1":{},"146-2":{},"148-9":{},"153-11":{},"153-16":{},"161-3":{},"173-8":{},"176-5":{},"189-6":{},"202-6":{},"202-12":{},"202-13":{},"202-14":{},"203-1":{},"208-1":{},"212-2":{},"214-9":{},"219-11":{},"219-16":{},"227-3":{},"234-3":{},"239-8":{},"242-5":{},"255-6":{}},"name":{},"text":{"2":{},"3":{},"12":{},"14":{},"16":{},"21":{},"27":{},"30":{},"32":{},"34":{},"38":{},"41":{},"42":{},"50":{},"52":{},"57":{},"62":{},"64":{},"68":{},"70":{},"74":{},"76":{},"77":{},"79":{},"80":{},"82":{},"83":{},"90":{},"94":{},"96":{},"98":{},"101":{},"111":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"128":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"144":{},"146":{},"148":{},"150":{},"151":{},"153":{},"154":{},"157":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"189":{},"194":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"210":{},"212":{},"214":{},"216":{},"217":{},"219":{},"220":{},"223":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"255":{}},"component":{}}],["version=1",{"_index":2688,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["version=wip",{"_index":2708,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["version=x",{"_index":2709,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["versioneddevenv",{"_index":2713,"title":{},"name":{},"text":{"98":{},"150":{},"154":{},"216":{},"220":{}},"component":{}}],["via",{"_index":525,"title":{"4-3":{},"20-4":{},"22-5":{},"27-7":{},"43-3":{},"56-4":{},"58-5":{},"62-7":{},"91-3":{},"100-7":{},"101-14":{},"111-7":{},"145-3":{},"156-7":{},"157-17":{},"172-7":{},"211-3":{},"222-7":{},"223-17":{},"238-7":{}},"name":{},"text":{"2":{},"5":{},"14":{},"17":{},"19":{},"20":{},"22":{},"27":{},"30":{},"34":{},"39":{},"41":{},"44":{},"47":{},"50":{},"53":{},"55":{},"56":{},"58":{},"62":{},"64":{},"70":{},"75":{},"77":{},"79":{},"80":{},"82":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"113":{},"115":{},"119":{},"120":{},"121":{},"130":{},"132":{},"133":{},"135":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"172":{},"175":{},"177":{},"183":{},"184":{},"188":{},"196":{},"198":{},"199":{},"201":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"238":{},"240":{},"241":{},"243":{},"249":{},"250":{},"254":{}},"component":{}}],["vice",{"_index":3133,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["view",{"_index":506,"title":{},"name":{},"text":{"2":{},"22":{},"29":{},"38":{},"41":{},"58":{},"63":{},"74":{},"80":{},"101":{},"113":{},"133":{},"157":{},"175":{},"199":{},"223":{},"241":{}},"component":{}}],["virtual",{"_index":863,"title":{},"name":{},"text":{"12":{},"29":{},"63":{},"112":{},"173":{},"178":{},"180":{},"239":{},"244":{},"246":{}},"component":{}}],["virtualbox",{"_index":81,"title":{"2-5":{},"41-5":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["virtualenv",{"_index":1580,"title":{},"name":{},"text":{"29":{},"63":{},"106":{},"112":{},"166":{},"232":{}},"component":{}}],["virutalenv",{"_index":2456,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["visual",{"_index":2359,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["vm",{"_index":187,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["vm.max_map_count",{"_index":3162,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["vm.max_map_count=262144",{"_index":2034,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["void",{"_index":2536,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["volum",{"_index":1015,"title":{},"name":{},"text":{"14":{},"31":{},"50":{},"67":{},"96":{},"99":{},"116":{},"151":{},"155":{},"178":{},"217":{},"221":{},"244":{}},"component":{}}],["voluptua",{"_index":811,"title":{},"name":{},"text":{"10":{}},"component":{}}],["vs",{"_index":2361,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["vue",{"_index":1878,"title":{"38":{},"74":{}},"name":{"38":{},"74":{}},"text":{"38":{},"39":{},"74":{},"75":{}},"component":{}}],["vue.d.t",{"_index":1920,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["vue.j",{"_index":1883,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["vuln,config,secret,licens",{"_index":3300,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["vulner",{"_index":764,"title":{"128-5":{},"194-5":{}},"name":{},"text":{"7":{},"13":{},"14":{},"16":{},"46":{},"49":{},"50":{},"52":{},"85":{},"93":{},"96":{},"128":{},"138":{},"147":{},"151":{},"194":{},"204":{},"213":{},"217":{}},"component":{}}],["vulnerabilti",{"_index":3161,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["vultyp",{"_index":3301,"title":{},"name":{},"text":{"151":{}},"component":{}}],["vvv",{"_index":2848,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["w",{"_index":2037,"title":{},"name":{},"text":{"77":{},"100":{},"130":{},"156":{},"196":{},"222":{}},"component":{}}],["w/o",{"_index":657,"title":{},"name":{},"text":{"5":{},"25":{},"44":{},"66":{},"83":{}},"component":{}}],["waf",{"_index":847,"title":{"12":{},"12-4":{}},"name":{},"text":{"11":{},"12":{}},"component":{}}],["waf_modsecur",{"_index":839,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["wait",{"_index":2611,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["walkthrough",{"_index":2632,"title":{"98-22":{},"154-27":{},"220-27":{}},"name":{},"text":{},"component":{}}],["want",{"_index":280,"title":{"28-1":{},"65-1":{},"114-1":{},"176-1":{},"242-1":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"21":{},"22":{},"25":{},"26":{},"27":{},"30":{},"32":{},"35":{},"36":{},"41":{},"44":{},"47":{},"50":{},"55":{},"57":{},"58":{},"61":{},"62":{},"64":{},"66":{},"68":{},"71":{},"72":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"110":{},"111":{},"113":{},"115":{},"117":{},"120":{},"121":{},"122":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"147":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"175":{},"177":{},"183":{},"184":{},"185":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"213":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"241":{},"243":{},"249":{},"250":{},"251":{},"258":{}},"component":{}}],["warrant",{"_index":3375,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["wasm",{"_index":3553,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["watch",{"_index":1771,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"174":{},"240":{}},"component":{}}],["way",{"_index":523,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"34":{},"41":{},"44":{},"50":{},"70":{},"80":{},"81":{},"83":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"108":{},"119":{},"133":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"156":{},"157":{},"169":{},"189":{},"199":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"222":{},"223":{},"235":{},"255":{}},"component":{}}],["weather.t",{"_index":1541,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["web",{"_index":557,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"24":{},"29":{},"36":{},"41":{},"44":{},"45":{},"60":{},"63":{},"72":{},"83":{},"85":{},"96":{},"98":{},"108":{},"109":{},"112":{},"113":{},"122":{},"138":{},"151":{},"154":{},"158":{},"169":{},"170":{},"174":{},"175":{},"178":{},"179":{},"185":{},"189":{},"204":{},"217":{},"220":{},"224":{},"235":{},"236":{},"240":{},"241":{},"244":{},"245":{},"251":{},"255":{}},"component":{}}],["webhook",{"_index":680,"title":{"8":{},"47":{},"88":{},"141":{},"207":{},"6-6":{},"8-1":{},"8-2":{},"8-3":{},"22-2":{},"45-6":{},"47-6":{},"47-7":{},"58-2":{},"80-16":{},"84-4":{},"88-6":{},"88-7":{},"101-8":{},"133-16":{},"141-6":{},"141-7":{},"157-11":{},"199-16":{},"207-6":{},"207-7":{},"223-11":{}},"name":{"8":{},"47":{},"88":{},"141":{},"207":{}},"text":{"5":{},"6":{},"8":{},"21":{},"22":{},"44":{},"45":{},"47":{},"57":{},"58":{},"77":{},"79":{},"80":{},"83":{},"84":{},"88":{},"94":{},"95":{},"101":{},"102":{},"123":{},"128":{},"130":{},"132":{},"133":{},"141":{},"148":{},"149":{},"150":{},"157":{},"158":{},"186":{},"194":{},"196":{},"198":{},"199":{},"207":{},"214":{},"215":{},"216":{},"223":{},"224":{},"253":{}},"component":{}}],["webhook.setevents(ev",{"_index":1318,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["webjar",{"_index":1209,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["webpack",{"_index":1829,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["webpag",{"_index":1856,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["websecurityconfigureradapt",{"_index":1188,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["webserv",{"_index":1425,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["websit",{"_index":2268,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["web—al",{"_index":3714,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["welcom",{"_index":149,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["well",{"_index":446,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"19":{},"20":{},"22":{},"26":{},"28":{},"32":{},"38":{},"41":{},"45":{},"47":{},"50":{},"55":{},"56":{},"58":{},"61":{},"65":{},"68":{},"74":{},"79":{},"80":{},"81":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"110":{},"114":{},"117":{},"126":{},"127":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"171":{},"176":{},"189":{},"192":{},"193":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"237":{},"242":{},"255":{},"258":{}},"component":{}}],["went",{"_index":1296,"title":{},"name":{},"text":{"21":{},"57":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["whatev",{"_index":1463,"title":{},"name":{},"text":{"25":{},"66":{},"98":{},"115":{},"154":{},"177":{},"220":{},"243":{}},"component":{}}],["what’",{"_index":3225,"title":{"150-3":{},"216-3":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["whenev",{"_index":3400,"title":{},"name":{},"text":{"153":{},"157":{},"189":{},"219":{},"223":{},"255":{}},"component":{}}],["whether",{"_index":961,"title":{},"name":{},"text":{"14":{},"50":{},"77":{},"79":{},"96":{},"99":{},"101":{},"130":{},"132":{},"151":{},"153":{},"155":{},"157":{},"196":{},"198":{},"217":{},"219":{},"221":{},"223":{}},"component":{}}],["whole",{"_index":1449,"title":{},"name":{},"text":{"24":{},"60":{},"79":{},"132":{},"198":{}},"component":{}}],["whose",{"_index":2645,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["wide",{"_index":1319,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["wikipedia",{"_index":1713,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["wikipedia.org/wiki/iris_flower_data_set",{"_index":1717,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["wildcard",{"_index":727,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"150":{},"204":{},"216":{}},"component":{}}],["window",{"_index":222,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"77":{},"91":{},"130":{},"145":{},"196":{},"211":{}},"component":{}}],["windows’",{"_index":592,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["wip",{"_index":2674,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["withenv",{"_index":2453,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["within",{"_index":168,"title":{"83-4":{},"158-2":{},"224-2":{}},"name":{},"text":{"2":{},"7":{},"8":{},"14":{},"19":{},"21":{},"22":{},"31":{},"32":{},"33":{},"39":{},"41":{},"46":{},"50":{},"55":{},"57":{},"58":{},"67":{},"68":{},"69":{},"75":{},"80":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"109":{},"116":{},"117":{},"118":{},"121":{},"128":{},"133":{},"136":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"170":{},"174":{},"178":{},"179":{},"181":{},"182":{},"184":{},"194":{},"199":{},"202":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"236":{},"240":{},"244":{},"245":{},"247":{},"248":{},"250":{}},"component":{}}],["without",{"_index":333,"title":{"181-6":{},"240-12":{},"240-13":{},"247-6":{}},"name":{},"text":{"2":{},"6":{},"14":{},"19":{},"27":{},"41":{},"45":{},"50":{},"55":{},"62":{},"78":{},"83":{},"95":{},"98":{},"100":{},"108":{},"111":{},"115":{},"120":{},"131":{},"136":{},"149":{},"151":{},"154":{},"156":{},"169":{},"172":{},"177":{},"183":{},"197":{},"202":{},"215":{},"217":{},"220":{},"222":{},"235":{},"238":{},"243":{},"249":{}},"component":{}}],["wizard",{"_index":89,"title":{"2-14":{},"2-30":{},"2-36":{},"2-46":{},"41-14":{},"41-30":{},"41-36":{},"41-46":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["work",{"_index":160,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"14":{},"22":{},"27":{},"29":{},"39":{},"41":{},"44":{},"45":{},"50":{},"58":{},"62":{},"63":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"85":{},"94":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"123":{},"127":{},"130":{},"132":{},"133":{},"136":{},"138":{},"148":{},"149":{},"151":{},"153":{},"154":{},"157":{},"169":{},"172":{},"186":{},"193":{},"196":{},"198":{},"199":{},"202":{},"204":{},"214":{},"215":{},"217":{},"219":{},"220":{},"223":{},"235":{},"238":{},"253":{}},"component":{}}],["worker",{"_index":1407,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["worker.j",{"_index":1840,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["workflow",{"_index":917,"title":{"14-3":{},"50-3":{},"96-4":{},"151-4":{},"217-4":{}},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"87":{},"96":{},"117":{},"140":{},"151":{},"206":{},"217":{}},"component":{}}],["workingdir",{"_index":1986,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["world",{"_index":2548,"title":{},"name":{},"text":{"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["worri",{"_index":658,"title":{},"name":{},"text":{"5":{},"44":{},"79":{},"83":{},"132":{},"198":{}},"component":{}}],["wrap",{"_index":1639,"title":{},"name":{},"text":{"32":{},"68":{},"109":{},"117":{},"170":{},"236":{}},"component":{}}],["wrapper",{"_index":1488,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"161":{},"172":{},"183":{},"227":{},"238":{},"249":{}},"component":{}}],["wrapper.jar",{"_index":1495,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["wrapper.properti",{"_index":3103,"title":{},"name":{},"text":{"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["write",{"_index":394,"title":{"14-7":{},"50-7":{}},"name":{},"text":{"2":{},"14":{},"22":{},"26":{},"41":{},"50":{},"58":{},"61":{},"77":{},"96":{},"98":{},"99":{},"101":{},"108":{},"110":{},"151":{},"154":{},"155":{},"157":{},"169":{},"171":{},"174":{},"217":{},"220":{},"221":{},"223":{},"235":{},"237":{},"240":{}},"component":{}}],["written",{"_index":1561,"title":{},"name":{},"text":{"29":{},"63":{},"77":{},"82":{},"95":{},"112":{},"130":{},"135":{},"149":{},"173":{},"174":{},"196":{},"201":{},"215":{},"239":{},"240":{}},"component":{}}],["wrong",{"_index":602,"title":{},"name":{},"text":{"4":{},"14":{},"21":{},"43":{},"50":{},"57":{},"91":{},"96":{},"100":{},"101":{},"145":{},"156":{},"157":{},"211":{},"222":{},"223":{}},"component":{}}],["wsl",{"_index":2057,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["www",{"_index":1352,"title":{},"name":{},"text":{"22":{},"36":{},"58":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["x",{"_index":1110,"title":{},"name":{},"text":{"14":{},"17":{},"22":{},"50":{},"53":{},"58":{},"77":{},"96":{},"98":{},"130":{},"137":{},"142":{},"146":{},"151":{},"154":{},"170":{},"174":{},"196":{},"203":{},"208":{},"212":{},"217":{},"220":{},"236":{},"240":{}},"component":{}}],["x.foo",{"_index":2723,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["x.x",{"_index":2714,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["x_route=x.foo",{"_index":2733,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["xml",{"_index":2646,"title":{},"name":{},"text":{"98":{},"108":{},"112":{},"115":{},"154":{},"169":{},"173":{},"177":{},"220":{},"235":{},"239":{},"243":{}},"component":{}}],["xunit",{"_index":2477,"title":{},"name":{},"text":{"96":{},"112":{},"115":{},"123":{},"151":{},"173":{},"174":{},"177":{},"180":{},"186":{},"217":{},"239":{},"240":{},"243":{},"246":{},"253":{}},"component":{}}],["xx",{"_index":3422,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["xxxx",{"_index":1778,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["xyz",{"_index":616,"title":{"80-22":{},"133-22":{},"199-22":{}},"name":{},"text":{"4":{},"43":{},"80":{},"91":{},"133":{},"145":{},"199":{},"211":{}},"component":{}}],["y",{"_index":516,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"114":{},"154":{},"176":{},"220":{},"242":{}},"component":{}}],["y2rfdxnlcg",{"_index":2157,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["yaml",{"_index":1157,"title":{},"name":{},"text":{"19":{},"22":{},"55":{},"58":{},"80":{},"100":{},"102":{},"133":{},"156":{},"199":{},"222":{}},"component":{}}],["yarn",{"_index":1816,"title":{},"name":{},"text":{"35":{},"36":{},"37":{},"71":{},"72":{},"73":{},"105":{},"122":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["ye",{"_index":1738,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["year",{"_index":2288,"title":{},"name":{},"text":{"83":{}},"component":{}}],["yeoman",{"_index":1535,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["yml",{"_index":1949,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["yourself",{"_index":1499,"title":{},"name":{},"text":{"27":{},"62":{},"82":{},"95":{},"98":{},"108":{},"111":{},"120":{},"135":{},"149":{},"154":{},"169":{},"172":{},"183":{},"201":{},"215":{},"220":{},"235":{},"238":{},"249":{}},"component":{}}],["you´ll",{"_index":1491,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["you’d",{"_index":1478,"title":{},"name":{},"text":{"26":{},"47":{},"61":{},"88":{},"110":{},"141":{},"171":{},"207":{},"237":{}},"component":{}}],["you’ll",{"_index":1125,"title":{},"name":{},"text":{"14":{},"36":{},"37":{},"50":{},"72":{},"73":{},"83":{},"95":{},"97":{},"98":{},"108":{},"122":{},"130":{},"149":{},"150":{},"152":{},"154":{},"158":{},"169":{},"185":{},"196":{},"215":{},"216":{},"218":{},"220":{},"224":{},"235":{},"251":{}},"component":{}}],["you’r",{"_index":739,"title":{},"name":{},"text":{"6":{},"8":{},"45":{}},"component":{}}],["z",{"_index":2847,"title":{},"name":{},"text":{"100":{},"153":{},"156":{},"189":{},"219":{},"222":{},"255":{}},"component":{}}],["z0",{"_index":3388,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["zephyr",{"_index":2631,"title":{"98-16":{},"154-19":{},"220-19":{}},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["zmartzone/lua",{"_index":2999,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["zone",{"_index":3709,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app (including Rundeck. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools and Rundeck. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables.","title":"Infrastructure Setup","component":"opendevstack","version":"1.x","name":"infrastructure-setup","url":"/opendevstack/1.x/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1}]},"2":{"id":2,"text":"Welcome to the OpenDevStack. The OpenDevStack is a framework to help in setting up a project infrastructure and continuous delivery processes on OpenShift and Atlassian toolstack with one click. This guide shall help you to setup the OpenDevStack, so you can work with it and test it in a local environment setup. The steps for the setup can also be adapted for running the OpenDevstack with an existing OpenShift installation or to connect it with your Atlassian tools, if you use Atlassian Crowd as SSO provider. Important: The credentials provided in the guide are only meant to be used within the local test installation. For use in production you will have to customize paths, URLs and credentials! The following requirements have to be met to setup a local environment. You should have a computer with at least 32 GB of RAM, because we are going to install several Atlassian tools and a local OpenShift environment. Important: We assume, you will have a full functional internet connection We use Git as code repository, so you have to be familiar to work with Git. The OpenDevStack uses Vagrant to provide a sample infrastructure for the Atlassian tools, Rundeck and a so called Ansible controller, a VM, where you can run Ansible scripts against the Atlassian VM. It is recommended to use the latest Vagrant version available from the HashiCorp Vagrant page. Vagrant uses Virtualbox for running the provisioned VMs. Therefore you must have Virtualbox installed. To use the Atlassian tools you need a license to run them. For testing and evaluation Atlassian provides evalutation licenses, which you can get on the My Atlassian license page. Here you have to keep in mind, that you have to register, if you don’t have an Atlassian account. The registration is for free. You need licenses for the following products: Bitbucket Jira Confluence Crowd The evaluation licenses are valid for 30 days from the date of purchase. If you need a server id, this will be provided by the tools within the installation, so you are able to inlcude the licenses within theinstallation wizards of the tools, after the base setup provided by the Ansible scripts. The base setup uses the following versions: Software Version Bitbucket 5.16.3 Jira 7.13.3 Confluence 6.14.3 Crowd 3.4.4 You must have the possibility to run bash scripts to install the OpenDevStack. On Linux systems you can use these scripts out-of-the box, on Windows systems you will have to install either a bash port for Windows like Cygwin. For Windows, our recommendation is to use Cygwin for configuration. Make sure to select the curl package under the \"net\" category when installing cygwin. The OpenDevStack uses Ansible to install and configure the necessary software for the enabling stack, so it’s recommended to get familiar with its core concepts and usage. Credentials are stored within an Ansible vault, so even if you commit them in a public repository they are not available unless you know the vault password. Nevertheless, it is recommended to take care with handling credentials, even if they are encrypted. From now on we assume, you work from a Bash (Cygwin / Linux). We use tailor to handle our versioned OpenShift templates and keep our cluster in sync. Please see its installation instructions for your platform. The following lists the version requirements: OpenDevStack version Tailor version 0.1.x = 0.8 1.0.x >= 0.9.1 1.1.x >= 0.9.3 First create a base directory for the OpenDevStack repositories, e.g. ods. This will be your base directory for all following operations. This path will also be mounted to the VMs provisioned by Vagrant. Then you have to clone the ods-core repository into the created directory. git clone https://github.com/opendevstack/ods-core.git Navigate to the folder ods ods-core infrastructure-setup. There you will find the setup and configuration shell scripts. You can start the infrastructure provisioning and setup by using ./setup-local-environment.sh This script allows you to set the necessary installation pathes, clones the necessary OpenDevStack repositories and prepares the vagrant infrastructure, including the base installation of the Atlassian tools, Rundeck and datatbase preparing. For a local test environment it is recommended to keep the default values. During script execution you will have the possibility to choose, if you want to confirm the Atlassian and Rundeck installation for every tool or to run a complete setup. After the base installation, you will have to configure the Atlassian tools, before you are able to proceed. The following steps explain the Atlassian tools configuration i the local test environment. If you have already installed the Atlassian tools, you can skip the Configuration Wizard chapter for the respective tool Access http://192.168.56.31:8095/crowd/console Be patient. First time accessing this page will take some time. Here you can see the server id you need for the license you can get from the My Atlassian page. Use the link to get an evaluation license (Crowd Server) or enter a valid license key into the textbox. Here choose the New installation option. The next step is the database configuration. Choose the JDBC Connection option and configure the database with the following settings Option Value Database PostgreSQL Driver class name org.postgresql.Driver JDBC URL jdbc:postgresql://localhost:5432/crowd?reWriteBatchedInserts=true&prepareThreshold=0 Username crowd Password crowd Hibernate dialect org.hibernate.dialect.PostgreSQLDialect Choose a deployment title, e.g. OpenDevStack and set the Base URL to http://192.168.56.31:8095/crowd Enter the name for the internal crowd directory, e.g. OpenDevStack Enter the data for the default administrator, so you are able to login to crowd. For the test installation, we will choose the username opendevstack.admin with the password admin. Enable the OpenID Server. Now you can verify the installation and log in with the credentials defined in the previous step. You will have to configure crowd to enable the Atlassian tools and Rundeck to login with crowd credentials. The following paragraphs assume, that you are logged in to the Crowd console. You will have to change the default session configuration. Open the Administration menu and choose the Session configuration entry. Uncheck the Require consistent client IP address checkbox. Click save and login again. You will have to add additional groups Crowd’s internal directory. The groups are listed in the table below. Group Description opendevstack-users Group for normal users without adminstration rights opendevstack-administrators Group for administration users To add a group, open the Groups tab and choose Add group Enter the name and the description for the group, choose the OpenDevStack directory and click Create. The group has been created. Repeat the steps of group creation for all necessary groups. After creating the groups you have to create a user, that is used by continuous integration mechanisms of the OpenDevStack. Go to the Users section in Crowd and click Add user. Enter the details for the CD user and click Create. For the provided scripts we assume, that the username cd_user with the password cd_user is used. In the following overview choose the user’s group tab and click Add groups Now search for all groups by leaving the Search fields empty, check the opendevstack-users group and click Add selected groups. The group has been added to the user. Now you have to add all groups to the administrator. Go to the Users section in Crowd, choose your administration user and open the Groups tab. Click Add groups, search for all by leaving the Search fields empty and add all groups. You will have to add the applications you want to access with your Crowd credentials in the Crowd console. Access the Crowd console at http://192.168.56.31:8095/crowd/console/ The following example shows, how to add Jira to the application section. The steps for the other applications are equal. Choose the Applications menu point and click Add application You enter the Add application-Wizard. Enter your application details and proceed with Next. Enter the URL and Remote IP address and click Next. Check the OpenDevStack user directory checkbox. Then proceed with Next. Check the Allow all users to authenticate checkbox. Click Next. Confirm the application information by clicking Add application In the following overview choose the Remote addresses tab. Now enter the CIDR 0.0.0.0/0 in the input field and click Add. You will have to add all applications listed in the table below. The provided data is meant to be used in the local test environment. Application type Name Password URL IP address Directories Authorisation Additional Remote Adresses Jira jira jira http://192.168.56.31:8080 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Confluence confluence confluence http://192.168.56.31:8090 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Bitbucket Server bitbucket bitbucket http://192.168.56.31:7990 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application rundeck rundeck http://192.168.56.31:4440 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application provision provision http://192.168.56.1:8088 192.168.56.1 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application sonarqube sonarqube https://sonarqube-cd.192.168.56.101.nip.io 192.168.56.101 Internal directory with OpenDevStack groups all users 0.0.0.0/0 After adding all applications they should shown at the applications overview in Crowd. Access http://192.168.56.31:7990 Be patient. First time accessing this page takes some time. On the configuration page you have the possibility to define the application name, the base URL and to get an evaluation license or enter a valid license. If you choose to get an evaluation license you can retrieve it from the my atlassian page. You will be redirected automatically. After adding the license you have to create a local Bitbucket administrator account. Don’t integrate Bitbucket with Jira, but proceed with going to Bitbucket. Go to the Bitbucket start page at http://192.168.56.31:7990/ Open the administration settings and navigate to the User directories menu. Here you have to add a directory of type Atlassian Crowd. In the following form add the Crowd server URL http://192.168.56.31:8095/crowd, the application name and the password you have defined for Bitbucket in crowd. For the local test environment this is bitbucket bitbucket Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Bitbucket. Now you have to configure the permissions for the OpenDevStack groups. Go to the Global permissions menu. In the Group access section add the opendevstack-administrators group with System Admin rights. Add the opendevstack-users group with Project Creator rights. The local checked out OpenDevStack repositories will be mirrored into the Bitbucket instance. Therefore, we need to create a new project within Bitbucket. Go to the Projects page in Bitbucket and click the Create project button. Now enter the Project name: OpenDevStack with the Project key OPENDEVSTACK and hit Create Project. Now open the project settings. In the Project permissions section, allow the opendevstack-users group write access. After you have adjusted the project permissions, you will have to create the repositories for the OpenDevStack. Go to the OpenDevStack project overview and choose the Create repository option, either with the '+' sign on the left menu bar or with the Create repository button in the middle of the screen, if you have an empty project. Enter the name for the repository and click Create repository. You will have to create the repositories listed in the table below. Repositories ods-core ods-configuration ods-configuration-sample ods-jenkins-shared-library ods-project-quickstarters ods-provisioning-app You will have to add a SSH key to the cd_user in Bitbucket, so Rundeck will be able to communicate with Bitbucket. First got to the Users section in the Bitbucket administration. Choose the cd_user and select the SSH keys tab. Click Add key The key has been auto generated during the setup script execution. Navigate to the base directory you created at the beginning of the setup process. There you will find a file named id_rsa_bitbucket.pub Copy the content of the file Paste the key to the input field in Bitbucket and click Add key Access http://192.168.56.31:8080 Be patient. First time accessing this page takes time. Here you have to choose the application title and the base URL. You can leave the data as is for the test environment. Here you have to enter the license key for the Jira instance (Jira Software (Server)). With the provided link in the dialogue you are able to generate an evaluation license at Atlassian. Now you have to set up a Jira administrator account. Unless you have configured a mail server, leave this for later. To finish this part of the Jira installation, you will have to provide some informations to your prefered language, your avatar and you will have to create an empty or a sample project. After these basic configurations, you have access to the Jira board. Open the User management in the Jira administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Jira in crowd. For the local test environment this is jira jira. Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Jira. The next step is to configure the permissions for the OpenDevStack user groups. Go to the Global Permissions menu beneath the System tab. There you will have to add the OpenDevStack groups according to the Jira user groups. For this choose the permission and the user group in the Add Permission section of the page and click Add. See the table below for the permission mapping. Permission User group Jira System Administrators opendevstack-administrators Jira Administrators opendevstack-administrators Browse Users opendevstack-(administrators|users) Create Shared Objects opendevstack-(administrators|users) Manage Group Filter Subscriptions opendevstack-(administrators|users) Bulk Change opendevstack-(administrators|users) The last step is to grant the created OpenDevStack groups application access. Go to the Application access menu beneath the Applications tab. There you will have to add the OpenDevStack groups according to the Jira user groups. Click on the group selection and choose the group you want to add to Jira. Access http://192.168.56.31:8090 Here you have to choose Production Installation, because we want to configure an external database. Ensure the add-ons are unchecked and proceed. Here you are able to get an evaluation license from atlassian or to enter a valid license key. Here you have to choose My own database. Choose By connection string as Setup type and configure the database with the following values: Option Value Database Type PostgreSQL Database URL jdbc:postgresql://localhost:5432/confluence User Name confluence Password confluence Click Next to proceed. Be patient. This step takes some time until next page appears. Here you have to choose Empty Site or Example Site Choose Manage users and groups within Confluence. Crowd will be configured later. Here you have to configure a local administrator account. After this step, you are able to work with Confluence. Just press Start and create a space. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left in the USERS & SECURITY section. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Now enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Confluence in crowd. For the local test environment this is confluence confluence Activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position and synchronize the directory. The last step is to configure the permissions for the OpenDevStack groups. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the Global Permissions entry at the left in the USERS & SECURITY section. Now choose Edit Permissions and add the OpenDevStack groups with the Input field in the groups section. Check the checkboxes, so the OpenDevStack groups have the same permissions the local confluence groups have. Click Save all to persist the permissions. After the configuration of the Atlassian tools has been done, it’s time to continue with the preparation oft the OpenDevStack environment. In this step the basic configuration for the OpenShift cluster takes place, as well as the installation of Sonarqube, Nexus3 and the Provisioning application. In addition Rundeck will be prepared automatically as far as possible. Navigate to the ods-core/infrastructure-setup/scripts directory on your local machine and execute the script prepare-local-environment.sh Now you will have to decide, which configuration should be done. In a first time installation you will have to keep the defaults. For further customization there will be an additional guide. Important; The preparation script also activates SSO in Confluence and Jira. After the activation has been done a login with the local administrator credentials is no longer possible! During the mirroring of the local repositories to your Bitbucket instance, it is possible, that you will be asked for credentials. Here you have to enter the credentials for your loacl Crowd administrator or the cd_user credentials. After the repository mirroring you may setup project branch permissions in Bitbucket, if the production branch should be guarded against direct merges except through admins. The subsequent paragraphs explain the installation and configuration content for Nexus3, Sonarqube, Rundeck and the Provisioning application. Nexus3 will be installed automatically, if you have confirmed the installation in the prepare script. After the installation Nexus3 will be accessible at http://nexus-cd.192.168.56.101.nip.io/ You are able to login with the default credentials for Nexus3 admin admin123. During installation various resources will be created automatically. You will find their description in the subsequent paragraphs. In the automated installation the following blob stores will be created Type Name Path File candidates /nexus-data/blobs/candidates File releases /nexus-data/blobs/releases File atlassian_public /nexus-data/blobs/atlassian_public This table lists the repositories created automatically. Name Format Type Online Version policy Layout policy Storage Strict Content Type Validation Deployment policy Remote Storage belongs to group candidates maven2 hosted checked Release Strict candidates checked Disable-redeploy none releases maven2 hosted checked Release Strict releases checked Disable-redeploy none npmjs npm proxy checked default checked https://registry.npmjs.org atlassian_public maven2 proxy checked Release Strict atlassian_public checked Disable-redeploy https://maven.atlassian.com/content/repositories/atlassian-public/ jcenter maven2 proxy checked Release Strict default checked Disable-redeploy https://jcenter.bintray.com maven-public sbt-plugins maven2 proxy checked Release permissive default unchecked Disable-redeploy http://dl.bintray.com/sbt/sbt-plugin-releases/ ivy-releases sbt-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases ivy-releases typesafe-ivy-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://dl.bintray.com/typesafe/ivy-releases ivy-releases ivy-releases maven2 group checked Release permissive default unchecked Disable-redeploy pypi-all pypi group checked default pypi-proxy pypi-proxy pypi proxy checked default https://pypi.org/ During installation the following user will be created. Name Password developer developer The user will get the opendevstack-developer role listed below. Role ID Role name Role description opendevstack-developer OpenDevStack-Developer Role for access from OpenDevStack This role has the following privileges: Privilege nx-repository-admin-maven2-candidates-browse nx-repository-admin-maven2-candidates-edit nx-repository-admin-maven2-candidates-read nx-repository-view-maven2-- nx-repository-view-maven2-candidates-* nx-repository-view-npm-- The account created is used to authenticate against Nexus3, anonymous access is disabled. By default Sonarqube will be installed with the preparation script. You will have to pass a valid authentication token for Sonarqube to the OpenShift templates, so the script will pause as soon as Sonarqube is available. Go to https://sonarqube-cd.192.168.56.101.nip.io . Login with your Crowd credentials. Now open your personal account settings. Generate a token in the Security section. Copy the token value to the input of the preparation script and follow the instructions. The token will be processed and integrated in the templates for future builds. In additon to the base Jenkins images you have the option to build additional Jenkins slave images. To do so, just type y instead of typing n or pressing Enter, if you are asked, if you want to install the additional slave images. After the preparation script execution, you will have to configure some values in Rundeck. Access Rundeck at http://192.168.56.31:4440/ Login with your Crowd credentials. Now choose the Quickstarters project. Open the Job Actions button on the right and Import Remote Changes Click Import Now you should see the imported jobs. Choose the verify global rundeck settings job and execute it to verify that Rundeck has all necessary data. If you use the Github repository, and use as is this step isn’t necessary! If you use your own repository, configure the export plugin in same way as the import plugin, except the file path template - set to rundeck-jobs/${job.group}${job.name}.${config.format} ##Run from OpenShift The Provisioning application has been installed with the environment preparation script and is accessible via https://prov-app-test.192.168.56.101.nip.io There is no further configuration needed. If the application is not available, you will have to proof in OpenShift, if there have been any errors during the installation. Open the cloned provision application in your favorite IDE If you run the application from your IDE, you will have to provide some addional informations. In case you want to use your local Nexus, you will have to create a gradle.properties file in the ods-provisioning-app project to provide the Nexus credentials, because we disabled anonymous access. nexus_url=http://nexus-cd.192.168.56.101.nip.io nexus_user=developer nexus_pw=developer You also have to ensure the Nexus certificate is integrated in the keystore of the JDK the IDE uses. If you don’t want to use the internal Nexus and run the application from your IDE, you will have to provide a gradle.properties file with the following content: no_nexus=true After startup via the IDE the application is available at http://localhost:8080/ You can login in with the Crowd admin user you set up earlier. OpenDevStack provides shared images used accross the stack - like the authproxy based on NGINX and lua for crowd In order to install, create a new project called shared-services Make the required customizations in the ods-configuration under ods-core shared-images nginx-authproxy-crowd ocp-config bc.env and secret.env and run tailor update inside ods-core\\shared-images\\nginx-authproxy-crowd: and start the build: oc start-build -n shared-services nginx-authproxy. After you have set up your local environment it’s time to test the OpenDevStack and see it working. Open the Provisioning application in your web browser and login with your crowd credentials. Provision your first project and have a look at your project in the Atlassian tools and OpenShift.","title":"Getting started","component":"opendevstack","version":"1.x","name":"local-installation","url":"/opendevstack/1.x/local-installation.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Requirements","hash":"_requirements","id":2},{"text":"Git","hash":"_git","id":3},{"text":"Vagrant","hash":"_vagrant","id":4},{"text":"Virtualbox","hash":"_virtualbox","id":5},{"text":"Atlassian tools licenses","hash":"_atlassian_tools_licenses","id":6},{"text":"Cygwin / Linux","hash":"_cygwin_linux","id":7},{"text":"Ansible","hash":"_ansible","id":8},{"text":"Setup your local environment","hash":"_setup_your_local_environment","id":9},{"text":"Tailor","hash":"_tailor","id":10},{"text":"Prepare infrastructure","hash":"_prepare_infrastructure","id":11},{"text":"Configure Atlassian Tools","hash":"_configure_atlassian_tools","id":12},{"text":"Atlassian Crowd","hash":"_atlassian_crowd","id":13},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard","id":14},{"text":"Step 1: License key","hash":"_step_1_license_key","id":15},{"text":"Step 2: Crowd installation","hash":"_step_2_crowd_installation","id":16},{"text":"Step 3: Database Configuration","hash":"_step_3_database_configuration","id":17},{"text":"Step 4: Options","hash":"_step_4_options","id":18},{"text":"Step 5: Internal directory","hash":"_step_5_internal_directory","id":19},{"text":"Step 6: Default administrator","hash":"_step_6_default_administrator","id":20},{"text":"Step 7: Integrated applications","hash":"_step_7_integrated_applications","id":21},{"text":"Step 8: Log in to Crowd console","hash":"_step_8_log_in_to_crowd_console","id":22},{"text":"Configure Crowd","hash":"_configure_crowd","id":23},{"text":"Session configuration","hash":"_session_configuration","id":24},{"text":"Add OpenDevStack groups","hash":"_add_opendevstack_groups","id":25},{"text":"Add CD user","hash":"_add_cd_user","id":26},{"text":"Add groups to administrator","hash":"_add_groups_to_administrator","id":27},{"text":"Add applications to crowd","hash":"_add_applications_to_crowd","id":28},{"text":"Attlassian Bitbucket","hash":"_attlassian_bitbucket","id":29},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_2","id":30},{"text":"Configure Crowd access","hash":"_configure_crowd_access","id":31},{"text":"Add permissions","hash":"_add_permissions","id":32},{"text":"Create OpenDevStack project in Bitbucket","hash":"_create_opendevstack_project_in_bitbucket","id":33},{"text":"Add SSH Key for CD user to Bitbucket","hash":"_add_ssh_key_for_cd_user_to_bitbucket","id":34},{"text":"Atlassian Jira","hash":"_atlassian_jira","id":35},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_3","id":36},{"text":"Step 1: Setup application properties","hash":"_step_1_setup_application_properties","id":37},{"text":"Step 2: Specify your license key","hash":"_step_2_specify_your_license_key","id":38},{"text":"Step 3: Set up administrator account","hash":"_step_3_set_up_administrator_account","id":39},{"text":"Step 4: Set up email notifications","hash":"_step_4_set_up_email_notifications","id":40},{"text":"Step 5: Basic configuration","hash":"_step_5_basic_configuration","id":41},{"text":"Configure user directory","hash":"_configure_user_directory","id":42},{"text":"Add permissions","hash":"_add_permissions_2","id":43},{"text":"Add application access","hash":"_add_application_access","id":44},{"text":"Atlassian Confluence","hash":"_atlassian_confluence","id":45},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_4","id":46},{"text":"Step 1: Set up Confluence","hash":"_step_1_set_up_confluence","id":47},{"text":"Step 2: Get add-ons","hash":"_step_2_get_add_ons","id":48},{"text":"Step 3: License key","hash":"_step_3_license_key","id":49},{"text":"Step 4: Choose a Database Configuration","hash":"_step_4_choose_a_database_configuration","id":50},{"text":"Step 5: Configure Database","hash":"_step_5_configure_database","id":51},{"text":"Step 6: Load Content","hash":"_step_6_load_content","id":52},{"text":"Step 7: Configure User Management","hash":"_step_7_configure_user_management","id":53},{"text":"Step 8: Configure System Administrator account","hash":"_step_8_configure_system_administrator_account","id":54},{"text":"Configure user directory","hash":"_configure_user_directory_2","id":55},{"text":"Add permissions","hash":"_add_permissions_3","id":56},{"text":"Prepare local OpenDevStack environment","hash":"_prepare_local_opendevstack_environment","id":57},{"text":"Nexus3","hash":"_nexus3","id":58},{"text":"Blob stores","hash":"_blob_stores","id":59},{"text":"Repositories","hash":"_repositories","id":60},{"text":"User and roles","hash":"_user_and_roles","id":61},{"text":"Sonarqube","hash":"_sonarqube","id":62},{"text":"Prepare Jenkins slave docker images","hash":"_prepare_jenkins_slave_docker_images","id":63},{"text":"Rundeck configuration","hash":"_rundeck_configuration","id":64},{"text":"Configure SCM Export plugin","hash":"_configure_scm_export_plugin","id":65},{"text":"Provisioning application","hash":"_provisioning_application","id":66},{"text":"Run from IDE","hash":"_run_from_ide","id":67},{"text":"Add shared images","hash":"_add_shared_images","id":68},{"text":"Try out the OpenDevStack","hash":"_try_out_the_opendevstack","id":69}]},"3":{"id":3,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 Rundeck 2.8.2-1.31.GA OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"1.x","name":"sysenv-requirements","url":"/opendevstack/1.x/sysenv-requirements.html","titles":[]},"4":{"id":4,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a slave pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"1.x","name":"troubleshooting","url":"/opendevstack/1.x/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins slave - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_slave_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"5":{"id":5,"text":"When we started with Redhat’s OpenShift we were blown away by the 100s of possibilities to use it, while there was not anything along \"This is how you make it work for your org\". Its catalog provides items for almost everything - yet what we wanted is to enable people to quickly introduce Continous delivery and standardized technology archetypes. We call this lean, empowered governance. So what does OpenDevStack now provide? A set of images to get the CI infrastructure running, called ods-core. It also contains ansible runbooks to get the atlassian suite going. A shared jenkins library that harmonizes the way you build, test, govern and deploy. A set of technology quickstarters that already provide the complete CI/CD integration, w/o anything to worry about for the engineer A small provision application that gives you one place to start, no matter if you want to start a new initiative, or enhance and existing one. Trigger project creation thru the provisioning application to get a new project. The web GUI of the provisioning app is located at https://prov-app-test.;. When openshiftproject == true, this will also create OpenShift projects, namely -dev and -test. A Jenkins deployment will be created in the -cd project to allow each project full freedom of build management. This deployment is based on common jenkins images from the CD namespace. Open the web GUI of the provisioning app https://prov-app-test.;. This time, rather than new initiative, pick modify and select your project. Pick a matching quickstarter. If no framework fits to your needs, choose the be-plain-docker quickstarter. Now you got the boilerplate of the picked quickstarter in your BitBucket project in its own repository, which the provisioning app created. Also, CI/CD is already working - you can verify this as the boilerplate application runs in the -test project. This was deployed through a Jenkins pipeline, which is triggered via webhooks from BitBucket. Create a branch in the newly created repository - once pushed this will deploy your application to the -dev project. After merging your branch to master, the update is avilable in the -test project. The branch-to-environment mapping is defined in the Jenkinsfile, used by the jenkins shared library, and can be tailored to your needs.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":2},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":3},{"text":"Using OpenDevStack","hash":"_using_opendevstack","id":4},{"text":"Create an integrated OpenDevStack project","hash":"_create_an_integrated_opendevstack_project","id":5},{"text":"Pull a quickstarter into your project","hash":"_pull_a_quickstarter_into_your_project","id":6},{"text":"Result after quickstarted","hash":"_result_after_quickstarted","id":7},{"text":"Checking in my app code","hash":"_checking_in_my_app_code","id":8}]},"6":{"id":6,"text":"OpenDevStack provides several customized Jenkins Docker Images based on the official OpenShift images. The idea is, that you do not need to configure anything on Jenkings before you can start using it. In ods-core/jenkins, you find the following directory structure: Table 1. Table Directories Directory Description master Dockerfile for Jenkins Master ocp-config OpenShift templates and Tailorfile slave-base Dockerfile and customization for Jenkins Slave Images webhook-proxy Dockerfile and source code for Bitbucket webhook proxy The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.12 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 Jira offers to deploy post-initialization scripts. Table 2. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins Location based on the OpenShift route sonarqube.groovy Sets the sonarserver url and auth token based on the configured secrets and config maps The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the sonarqube server. SONAR_AUTH_TOKEN this is the sonarqube auth token that is generated when deploying and configuring sonarqube We enable (in Dockerfile) the sending of mails to unknown users and users without read rights. We have a base image for different jenkins slaves. The concrete slave images are then configured as part of the quickstarters. The base image contains the following customizations Sonarqube Scanner Sonarqube CNES Report Plugin OWASP Dependency Checker Tailor Setting of Enterprise Proxy When the docker image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins slave works also on OpenShift clusters in enterprises that use a web proxy. Provides one endpoint accepting webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the branch name). If there is no corresponding pipeline yet, it will be created on the fly. Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted as well. Go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Enter Jenkins as Title and the route URL (see following Setup section) as URL. Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined. Save your changes and you’re done! Any other webhooks already setup to trigger Jenkins are not needed anymore and should be deactivated or deleted. Run tailor update in ocp-config. This will create BuildConfig and ImageStream in the central cd namespace. Next, you will have to create a DeploymentConfig, Service and Route in the namespace your Jenkins instance runs.","title":"Jenkins","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/jenkins/index.html","titles":[{"text":"Jenkins Master","hash":"_jenkins_master","id":1},{"text":"Configured Plugins","hash":"_configured_plugins","id":2},{"text":"Init groovy scripts","hash":"_init_groovy_scripts","id":3},{"text":"Mail Sending","hash":"_mail_sending","id":4},{"text":"Jenkins Slave","hash":"_jenkins_slave","id":5},{"text":"Webhook Proxy","hash":"_webhook_proxy","id":6},{"text":"Usage","hash":"_usage","id":7},{"text":"Setup","hash":"_setup","id":8}]},"7":{"id":7,"text":"The base jenkins slave used by all ODS builder slaves Creates trust relationship with applications in the openshift cluster (thru certificate management) Sonarqube scanner plugin binding to the central SQ instance Sonarqube report plugin used to download the scan results within the jenkins shared library's stage stageScanForSonarQube OWASP scan plugin Creates proxy awareness when HTTP_PROXY is injected during build pahse Tailor - on top of openshift CLI to provide infrastrucure as code Snyk - used to scan and monitor projects vulnerable third-party dependencies","title":"ODS Jenkins Slave base","component":"opendevstack","version":"1.x","name":"slave-base","url":"/opendevstack/1.x/jenkins/slave-base.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features / Plugins","hash":"_features_plugins","id":2}]},"8":{"id":8,"text":"Provides one endpoint accepting webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the branch name). If there is no corresponding pipeline yet, it will be created on the fly. Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted as well. Jenkinsfiles, within a project are created when provisioning quickstarters, thru the provision app. The quickstarter boilerplates contain the appropriate skeletons. One instance of the webhook proxy runs in every project-cd namespace next to the jenkins instance for this project. Go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Enter Jenkins as Title and the route URL (see following Setup section) as URL. Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined. Save your changes and you’re done! Any other webhooks already setup to trigger Jenkins are not needed anymore and should be deactivated or deleted. Run tailor update in ocp-config. This will create BuildConfig and ImageStream in the central cd namespace. Next, you will have to create a DeploymentConfig, Service and Route in the namespace your Jenkins instance runs. The following environment variables are read by the proxy: Variable Description PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be cleaned up. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the template and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the template and usually does not need to be modified. Moreover, one can pass the following query parameters to the proxy: | Variable | Description | | — | — | | jenkinsfile_path | The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. | See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"1.x","name":"webhook-proxy","url":"/opendevstack/1.x/jenkins/webhook-proxy.html","titles":[{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":1},{"text":"Setup the webhook proxy in a *-cd namespace","hash":"_setup_the_webhook_proxy_in_a_cd_namespace","id":2},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":3},{"text":"Development","hash":"_development","id":4}]},"9":{"id":9,"text":"","title":"Nexus","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/nexus/index.html","titles":[]},"10":{"id":10,"text":"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.","title":"Shared Images","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/shared-images/index.html","titles":[]},"11":{"id":11,"text":"Alpine Nginx OpenResty docker with Crowd HTTP Auth Lua module proxy enabled. The docker is based on ods-core/shared-images/openresty-nginx. See its README for further functionalities ready to be used or new to be implemented. Modsecurity is also ready to be used with default OWASP CRS rulesets, but disabled by default. To enable it you need to set on 'WAF_MODSECURITY' to on (off by default) environment variable and it will be applied in nginx.conf. For applying different custom configs you will need to load and replace with new modsecurity.conf and crs-setup.conf files. You can also enable dynamic configuration and new functionalities through Lua nginx scripting. See more in openresty-nginx README. SERVICE: the service to proxy to SERVER_SIGNATURE: the server name to be provided in the HTTP header WAF_MODSECURITY: off by default. Set to 'on' if WAF is required. See aforementioned Modsecurity topics in this readme file to understand implications of using it. CROWD_REALM_NAME: attribute required for all authentication schemes which issue a challenge CROWD_URL: the Crowd server service URL CROWD_SERVICE: the Crowd application name to connect to CROWD_PASSWORD: the Crowd application password to connect to","title":"Crowd HTTP Auth proxy","component":"opendevstack","version":"1.x","name":"nginx-authproxy-crowd","url":"/opendevstack/1.x/shared-images/nginx-authproxy-crowd.html","titles":[{"text":"Environment variables","hash":"_environment_variables","id":1}]},"12":{"id":12,"text":"Nginx based project with Lua enablement and WAF module integrated (default 'off'). Ready for scripting/developing API gateways. Modsecurity is also ready to be used with default OWASP CRS rulesets, but disabled by default. To enable it you need to set on 'WAF_MODSECURITY' to on (off by default) environment variable and it will be applied in nginx.conf. For applying different custom configs you will need to load and replace with new modsecurity.conf and crs-setup.conf files. You can also enable dynamic configuration and new functionalities through Lua nginx scripting. See more in openresty-nginx README. There is no usage of separate nginx virtual host file config since one needs to have the server statement inside the http statement in nginx.conf for loading environment variables in such statement. Therefore, 'server' statement config must go inside nginx.conf inside 'http' statement config. Modsecurity: Modsecurity module with the OWASP CSR default entries. Enable or disable (default is disabled) it by setting environment variable WAF_MODSECURITY (values: on, off). Components being used: ModSecurity library documentation Nginx ModSecurity connector documentation Crowd HTTP Auth: Crowd REALM Auth Lua module. Check shared-images/nginx-authproxy-crowd to how to use it. See lua/ folder for further examples ready to be used In order to upgrade to newer versions just change the related *_VERSION values in the base Dockerfile image. Current managed versions: RESTY_IMAGE_BASE=\"alpine\" RESTY_IMAGE_TAG=\"3.8\" NGINX_VERSION=\"1.13.6\" MODSECURITY_VERSION=\"3.0.0\" MODSECURITY_NGINX_VERSION=\"1.0.0\" OWASP_MODSECURITY_CRS_VERSION=\"3.0.2\" RESTY_VERSION=\"1.13.6.2\" RESTY_OPENSSL_VERSION=\"1.0.2p\" RESTY_PCRE_VERSION=\"8.42\" Security: nikto -h http:// Performance: siege --concurrent 100 --reps 10 http://","title":"Alpine Nginx OpenResty + Lua + ModSecurity WAF base image","component":"opendevstack","version":"1.x","name":"openresty-nginx","url":"/opendevstack/1.x/shared-images/openresty-nginx.html","titles":[{"text":"NGINX MODULES","hash":"_nginx_modules","id":1},{"text":"Lua MODULES","hash":"_lua_modules","id":2},{"text":"VERSIONING","hash":"_versioning","id":3},{"text":"Testing WAF security and Nginx performance","hash":"_testing_waf_security_and_nginx_performance","id":4}]},"13":{"id":13,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This repo contains the build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this readme describes how that setup is done. If you are looking for instructions how to analyse your repositories, please see USAGE.md. The OpenShift templates are located in ocp-config and can be compared with the OC cluster using tailor. For example, run cd ocp-config && tailor status to see if there is any drift between current and desired state. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OC project cd, under the sonarqube-app secrets. Push to this repository, then go to the build config in OC and start a new build. Admin password changed (see OC secrets sonarqube-app). Locked Sonarqube to logged-in users (Administation > Configuration > Security > Force User Authentication). Logged in as cd_user and created a auth token (My Account > Security > Generate New Token). As the auth token and the admin password has changed, you will need to update the OCP configuration again. Installed further plugins (Administation > Marketplace), e.g. SonarJava, SonarJS, Git.","title":"SonarQube","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/sonarqube/index.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Administration","hash":"_administration","id":2},{"text":"Building a new image","hash":"_building_a_new_image","id":3},{"text":"Manual steps performed after booting the instance","hash":"_manual_steps_performed_after_booting_the_instance","id":4}]},"14":{"id":14,"text":"This library allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: def final projectId = \"hugo\" def final componentId = \"be-node-express\" def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def sharedLibraryRepository def dockerRegistry node { sharedLibraryRepository = env.SHARED_LIBRARY_REPOSITORY dockerRegistry = env.DOCKER_REGISTRY } library identifier: 'ods-library@production', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: [ 'master': 'test', '*': 'dev' ] ) { context -> stage('Build') { // custom stage } stageScanForSonarqube(context) // using a provided stage } Following stages are provided (see folder vars for more details): stageScanForSonarqube(context) stageOWASPDependencyCheck(context) stageScanForSnyk(context, snykAuthenticationCode, buildFile, projectId) stageUploadToNexus(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the shared library according to your needs. There are just two settings to control everything: branchToEnvironmentMapping and autoCloneEnvironmentsFromSourceMapping. Example: branchToEnvironmentMapping: [ \"master\": \"prod\", \"develop\": \"dev\", \"hotfix/\": \"hotfix\", \"*\": \"review\" ] Maps a branch to an environment. There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OCP. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OCP. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. Caution! Cloning environments on-the-fly is an advanced feature and should only be used if you understand OCP well, as there are many moving parts and things can go wrong in multiple places. Example: autoCloneEnvironmentsFromSourceMapping: [ \"hotfix\": \"prod\", \"review\": \"dev\" ] Instead of deploying multiple branches to the same environment, individual environments can be created on-the-fly. For example, the mapping \"*\": \"review\" deploys all branches to the review environment. To have one environment per branch / ticket ID, you can add the review environment to autoCloneEnvironmentsFromSourceMapping, e.g. like this: \"review\": \"dev\". This will create individual environments (named e.g. review-123 or review-foobar), each cloned from the dev environment. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'rel': 'dev', 'hotfix': 'prod', 'preview': 'dev' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'preview': 'prod' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'uat': 'prod' ] Inside the closure passed to odsPipeline, you have full control. Write stages just like you would do in a normal Jenkinsfile. You have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsPipeline. Please see vars/odsPipeline.groovy for possible options. When you write stages, you have access to both global variables (defined without def in the Jenkinsfile) and the context object. It contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as \"153\". buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsPipeline starts. image Container image to use for the Jenkins agent container. This value is not used when \"podContainers\" is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use. By default, only one container is used, and it is configure automatically. If you need to run multiple containers (e.g. app and database), then you can configure the containers via this property. podVolumes Volumes to make available to the pod. podAlwaysPullImage Determine whether to always pull the container image before each build run. podServiceAccount Serviceaccount to use when running the pod. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. notifyNotGreen Whether to send notifications if the build is not successful. nexusHost Nexus host (with scheme). nexusUsername Nexus username. nexusPassword Nexus password. nexusHostWithBasicAuth Nexus host (with scheme), including username and password as BasicAuth. branchToEnvironmentMapping Define which branches are deployed to which environments. autoCloneEnvironmentsFromSourceMapping Define which environments are cloned from which source environments. cloneSourceEnv The environment which was chosen as the clone source. environment The environment which was chosen as the deployment target, e.g. \"dev\". targetProject Target project, based on the environment. E.g. \"foo-dev\". groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. \"foo\". componentId Component ID, e.g. \"be-auth-service\". gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message. gitCommitTime Git commit time in RFC 3399. sonarQubeBranch Branch on which to run SonarQube analysis. failOnSnykScanVulnerabilities Boolean flag (default true) that disables build failure in case Snyk Scan finds vulnerabilities dependencyCheckBranch Branch on which to run dependency checks. environmentLimit Number of environments to allow. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketHost BitBucket host - value taken from BITBUCKET_HOST. environmentCreated Whether an environment has been created during the build. openshiftBuildTimeout Timeout for the OpenShift build of the container image. ciSkip Whether the build should be skipped, based on the Git commit message. The slave used to build your code can be customized by specifying the image to use. Further, podAlwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To control the container pods completely, set podContainers (which is passed to the podTemplate call as containers). See the kubernetes-plugin documentation for possible configuration. Each Jenkinsfile references a Git revsison of this library, e.g. library identifier: 'ods-library@production'. The Git revsison can be a branch (e.g. production or 0.1.x), a tag (e.g.0.1.1) or a specific commit. By default, each Jenkinsfile in ods-project-quickstarters on the master branch references the production branch of this library. Quickstarters on a branch point to the corresponding branch of the shared library - for example a Jenkinsfile on branch 0.1.x points to 0.1.x of the shared library. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if BitBucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate Setup organisation in snyk.io If you don´t have an snyk account just create one at snyk.io Once you logged into snyk.io, in your snyk group create an organisation for your project with exactly same name as project name. Create a service account in settings for the created organisation and keep the displayed token. You will need it later. Add environment variable to jenkins in your cd project Add the environment variable SNYK_AUTHENTICATION_CODE in jenkins in your openshift cd project with service account token as value. Edit your project Jenkinsfile Read auth code from environment by adding: node { ... snykAuthenticationCode = env.SNYK_AUTHENTICATION_CODE } Add stageScanForSnyk: ) { context -> ... stageScanForSnyk(context, snykAuthenticationCode, 'build.gradle', context.projectId) ... } The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift. The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins. stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.' The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA. Try to write tests. See if you can split things up into classes. Keep in mind that you need to access e.g. sh via script.sh. The implementation is largely based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/jenkins-shared-library/index.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Provided Stages","hash":"_provided_stages","id":2},{"text":"Workflow","hash":"_workflow","id":3},{"text":"branchToEnvironmentMapping","hash":"_branchtoenvironmentmapping","id":4},{"text":"autoCloneEnvironmentsFromSourceMapping","hash":"_autocloneenvironmentsfromsourcemapping","id":5},{"text":"Examples","hash":"_examples","id":6},{"text":"Writing stages","hash":"_writing_stages","id":7},{"text":"Slave customization","hash":"_slave_customization","id":8},{"text":"Versioning","hash":"_versioning","id":9},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":10},{"text":"How to add Snyk scanning to your ODS project","hash":"_how_to_add_snyk_scanning_to_your_ods_project","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"Ods Pipeline","hash":"_ods_pipeline","id":13},{"text":"Stage Scan for Snyk","hash":"_stage_scan_for_snyk","id":14},{"text":"Stage Start OpenShift Build","hash":"_stage_start_openshift_build","id":15},{"text":"Stage Scan For SonarQube","hash":"_stage_scan_for_sonarqube","id":16},{"text":"Development","hash":"_development","id":17},{"text":"Background","hash":"_background","id":18}]},"15":{"id":15,"text":"The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift.","title":"","component":"opendevstack","version":"1.x","name":"odsPipeline","url":"/opendevstack/1.x/jenkins-shared-library/odsPipeline.html","titles":[]},"16":{"id":16,"text":"The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins.","title":"","component":"opendevstack","version":"1.x","name":"stageScanForSnyk","url":"/opendevstack/1.x/jenkins-shared-library/stageScanForSnyk.html","titles":[]},"17":{"id":17,"text":"The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA.","title":"","component":"opendevstack","version":"1.x","name":"stageScanForSonarQube","url":"/opendevstack/1.x/jenkins-shared-library/stageScanForSonarQube.html","titles":[]},"18":{"id":18,"text":"stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.'","title":"","component":"opendevstack","version":"1.x","name":"stageStartOpenshiftBuild","url":"/opendevstack/1.x/jenkins-shared-library/stageStartOpenshiftBuild.html","titles":[]},"19":{"id":19,"text":"Table of Contents How to develop locally Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 8 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js) The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API Rundeck API","title":"Internal architecture","component":"opendevstack","version":"1.x","name":"architecture","url":"/opendevstack/1.x/provisioning-app/architecture.html","titles":[{"text":"How to develop locally","hash":"_how_to_develop_locally","id":1},{"text":"Frontend Code","hash":"_frontend_code","id":2},{"text":"Backend Code","hash":"_backend_code","id":3},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":4},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":5},{"text":"Link collection","hash":"_link_collection","id":6}]},"20":{"id":20,"text":"Table of Contents Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Authentication to third party apps via technical users The Provisioning Application is configured via spring boot profiles. Default configuration properties are definded in application.properties There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. A default oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence, Bitbucket and Rundeck. The used credentials are read from a pair of properties. For Example, rundeck.admin_password and rundeck.admin_user properties are used for Rundeck, confluence.admin_user and confluence.admin_password are used for confluence, etc. application-oauth2.properties # configure technical user for rundeck. Do not authenticate via oauth2, since not implemented. rundeck.admin_password=rundeck_admin rundeck.admin_user=rundeck_admin # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall()","title":"Configuration Guide","component":"opendevstack","version":"1.x","name":"configuration","url":"/opendevstack/1.x/provisioning-app/configuration.html","titles":[{"text":"Authentication Configuration","hash":"_authentication_configuration","id":1},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":2},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":3},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":4}]},"21":{"id":21,"text":"Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Why are three Openshift projects created when I provision a new project? A: The project-name-dev & -test ones are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the jenkins-shared-library In contrast to this, the project-name-cd namespace hosts a project specific instance of the ODS Jenkins and also of the Webhook Proxy. When a built is triggered, builder pods (=deployments of Jenkins slaves) are created in this project. This was a cautious design choice to give a project team as much power as possible - when it comes to configuration of jenkins. What is RUNDECK used for? A: Rundeck is used as orchestration engine when the provision application triggers provision jobs (e.g. create new projects, create components). This architecture is subject to change likely in release 2.0, to dramatically reduce complexity in multi cluster scenarios. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project.","title":"FAQ:","component":"opendevstack","version":"1.x","name":"faq","url":"/opendevstack/1.x/provisioning-app/faq.html","titles":[]},"22":{"id":22,"text":"Table of Contents Basic idea & usage Integration with Bitbucket (webhooks) Permissions Project/Space types based on templates Using the provision application via API / thru direct REST calls What happens in error cases This application creates new OpenDevStack digital projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as jira, confluence, bitbucket and rundeck. An admin (user in a group defined in property idmanager.group.opendevstack-administrators) creates new ODS project. This in turn creates a Jira Project (name based on project key & name) a Confluence Space (name based on project’s key) the required Openshift projects named key-dev, key-test and key-cd - in case openshiftproject == true. Internally this is done thru a rest call to rundeck triggering the create-projects rundeck job a Bitbucket Project (name based on project key) - in case openshiftproject == true. Within this project two default repositories are created key-oc-config-artifacts for all yaml resources as well as key-design for any design artifacts (e.g. sketches) A normal user (user in a group defined in property idmanager.group.opendevstack-users) creates all resources required for a working component - this happens thru the user interface - in going to modify project / picking your project and then the wanted quickstarter. Internally this is done thru a rest call to rundeck - with the picked job as parameter - here Bitbucket repository within the chosen project named key-boilerplate name Openshift components based on the chosen boilerplate, coming from ods-quickstarters The involved people receive an email with the setup, URLs to components etc. - in case mail.enabled == true Next to the provision app creating the bitbucket repository for a chosen quickstarter - it also creates a webhook on that repo, which triggers on three events List events = new ArrayList(); events.add(\"repo:refs_changed\"); events.add(\"pr:merged\"); events.add(\"pr:declined\"); webhook.setEvents(events); This webhook calls the webhook proxy which in turn creates an openshift build config of type pipeline in the name-cd project and executes it. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with tight read & write roles Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, PROVISION_API_HOST= curl -D headers.txt -k -H \"Content-Type: application/x-www-form-urlencoded\" \\ -X POST ${PROVISION_API_HOST}/j_security_check \\ -d username= -d password= # grab the login status, and exit if error login_status=$(cat headers.txt | grep ${PROVISION_API_HOST}/login?error) if [[ $login_status != \"\" ]]; then echo \"Login Error\"; exit 1; fi; # grab the needed IDs and bake the cookies JSESSION_ID=$(cat headers.txt | grep \"Set-Cookie: JSESSION\" | cut -d ';' -f1 | cut -d \":\" -f2)\";\" CROWD_COOKIE=$(cat headers.txt | grep \"Set-Cookie: crowd\" | cut -d ';' -f1 | cut -d \":\" -f2) COOKIES=${JSESSION_ID}${CROWD_COOKIE} # sample provision file >> create.txt { \"name\" : \"\", \"key\" : \"\", \"createpermissionset\" : true, \"jiraconfluencespace\" : true, \"admin\" : \"\", \"adminGroup\" : \"\", \"userGroup\" : \"\", \"readonlyGroup\" : \"\", \"openshiftproject\" : false } provisionfile=create.txt # invoke the provision API to create a new project curl -k -X POST --cookie \"$COOKIES\" -d @\"$provisionfile\" \\ -H \"Content-Type: application/json; charset=utf-8\" -v ${PROVISION_API_HOST}/api/v2/project Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false.","title":"Overview: Provisioning Application","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/provisioning-app/index.html","titles":[{"text":"Basic idea & usage","hash":"_basic_idea_usage","id":1},{"text":"Integration with Bitbucket (webhooks)","hash":"_integration_with_bitbucket_webhooks","id":2},{"text":"Permissions","hash":"_permissions","id":3},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":4},{"text":"Using the provision application via API / thru direct REST calls","hash":"_using_the_provision_application_via_api_thru_direct_rest_calls","id":5},{"text":"What happens in error cases","hash":"_what_happens_in_error_cases","id":6}]},"23":{"id":23,"text":"(#86) introduces a new v2 API, as described above. This has impact to ALL consumers, the URI to use the project api also switches to v2 with v1 being removed.","title":"Upgrade notes","component":"opendevstack","version":"1.x","name":"upgrade_notes","url":"/opendevstack/1.x/provisioning-app/upgrade_notes.html","titles":[{"text":"1.1.x to next major release","hash":"_1_1_x_to_next_major_release","id":1}]},"24":{"id":24,"text":"This boilerplate provides an Airflow Cluster using Kubernetes Executor hosted in Openshift. The AirFlow Cluster setup that is provided is based on the KubernetesExecutor and will create and destroy worker pods on demand. It also setup an ElasticSearch instance as the log repository for all workers. As illustrated bellow: All Airflow images are based on shared-service/airflow image stream. All documentation can be found at https://github.com/opendevstack/ods-core/tree/master/shared-images/airflow To deploy the quickstarter the component name must be airflow-worker otherwise nothing will be created These are the OpenShift resources and the repository structure created by this boilerplace. Nothing will be created if any rersouces in the target OpenShift namespace can be found under the label cluster=airflow This boilerplate create several resources in OpenShift and ALL of them can be found using the label cluster=airflow. The created resources are: Service Account: airflow : Service account used as OAuth client for the Airflow web server Secrets: airflow-postgresql : Credentials for the PostgreSQL database airflow-elasticsearch : Credentials for the ElasticSearch airflow-fernetkey : Fernet key for securing stored Airflow Connection Config Maps: airflow-environemnt : Airflow configuration shared among all nodes Builds and Image Stream: airflow-worker : Worker image which Airflow uses for executing the tasks Deployment Configs and Services: airflow-webserver : Airflow Web Server airflow-scheduler : Airflow Scheduler (* Only Deployment Config) airflow-postgresql : Airflow matadata database airflow-elasticsearch: Worker log database airflow-kibana: Interface for exploring Airflow logs in ElasticSearch Routes: airflow-webserver : Exposes Airflow webserver . ├── docker │ ├── scripts │ │ └── setup.py # Script for installing python dependecies in dag_deps │ └── Dockerfile # Docker file pointing to Airflow shared image ├── src # Source folder │ ├── dag_deps # Folder containing all dependencies of the DAGs │ │ └── dag_deps_package # Example package │ │ ├── __init__.py │ │ └── crazy_python.py │ ├── dags # All DAGs should be in this folder │ │ ├── hello_dag.py # Example DAG using BASH Operator │ │ ├── hello_kubernetes_operator.py # Example DAG using Kubernetes Operator │ │ └── hello_python_dag.py # Example DAG using internal and external dependencies │ └── requirements.txt # File defining all dependencies (with an example inside) ├── tests # Test source folder │ ├── dag_deps # Folder containing tests of dependecies │ │ ├── __init__.py │ │ └── test_crazy_python.py # Test example │ └── dags # Folder containing tests of DAGs │ ├── __init__.py │ └── test_dag_integrity.py # DAG integrity test ├── Jenkinsfile ├── build.sh # Build script ├── sonar-project.properties ├── test_all.sh # Script for running all tests └── test_dag_integrity.sh # Script for running DAG integrity tests All examples files are simple examples and they are only needed for guiding the first development steps. They can be deleted! An Airflow cluster will be created in each environment. This allows the DAG development to follow the same branching strategy adopted in the whole project All commited code is submitted to a CI/CD pipeline defined in Jenkinsfile. This pipeline executes DAG integrity tests, which prevents invalid DAGs to be deployed. It also enables the development of all sort of tests needed for development. The last step of the Jenkins pipeline is to synchorized the recent commited DAGs with the Airflow web server and Airflow scheduler The configuration of all deployments is documented in https://github.com/opendevstack/ods-core/tree/master/shared-images/airflow","title":"AirFlow Openshift Cluster Boilerplate","component":"opendevstack","version":"1.x","name":"airflow","url":"/opendevstack/1.x/quickstarters/airflow.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Contents","hash":"_contents","id":2},{"text":"OpenShift Resources","hash":"_openshift_resources","id":3},{"text":"File structure provided in the repository","hash":"_file_structure_provided_in_the_repository","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Features","hash":"_features","id":6},{"text":"Multi Branching","hash":"_multi_branching","id":7},{"text":"CI/CD","hash":"_cicd","id":8},{"text":"DAG Distribution","hash":"_dag_distribution","id":9},{"text":"Configuration of Airflow","hash":"_configuration_of_airflow","id":10}]},"25":{"id":25,"text":"Use this quickstarter when you want to start from a plain dockerfile only - w/o a framework on top. A good usecase here is a dockerfile you found on github that you want to run with OpenDevStack features, or that you need to \"openshiftify\", by setting an execution user or alike. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration None, except the ODS jenkins shared library Amend the generated Dockerfile as needed. The shared library is used as is - whatever is in the /docker folder is passed to oc start build as docker context. In case you want to run testing, plug into stageUnitTest. def stageBuild(def context) { stage('Build') { // copy any other artifacts if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } def stageUnitTest(def context) { stage('Unit Test') { // if needed add your unit tests here } } none N/A","title":"Plain docker image (be-docker-plain)","component":"opendevstack","version":"1.x","name":"be-docker-plain","url":"/opendevstack/1.x/quickstarters/be-docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"26":{"id":26,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. This quickstarter uses Golang builder slave. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"1.x","name":"be-golang","url":"/opendevstack/1.x/quickstarters/be-golang.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"27":{"id":27,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 8 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). Under the hook this quickstarter runs the spring boot cli init command. The quickstarter uses the latest available spring boot cli version to generate the spring boot project. This is implemented in the script init.sh (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project will be generated and pushed to your git repository. The generated project requires java 8 and include the required gradle build and wrapper artifact. The generated spring boot project contains following folders: src (maven based java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,jersey,data-jpa,h2,lombok,data-rest,restdocs,security\"), which are defined in the script init.sh (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 8 or later version is required to run gradlew and compile java classes. The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. This quickstarter uses Maven builder slave Jenkins builder slave. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"1.x","name":"be-java-springboot","url":"/opendevstack/1.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":11},{"text":"Builder Slave used","hash":"_builder_slave_used","id":12},{"text":"Known limitations","hash":"_known_limitations","id":13}]},"28":{"id":28,"text":"This is a node (v6) quick starter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The files are generated using a yeoman generator for node-express-typescript. Generated files include a minimal express server with dummy routes. ├── Jenkinsfile - Contains Jenkins build configuration ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── greeter.ts │ ├── index.ts - Entrypoint, This runs first │ └── routes │ └── weather.ts ├── test │ ├── greeter-spec.ts │ └── index-spec.ts ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration 4 directories, 14 files Express (^4.15) Mocha & Chai for Unit Testing Typescript Do a npm install form the project root to install all the dependencies. npm run serve will transpile the code and start the server Execute npm run test for unit testing The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command will be executed to build the application and then the build (including the node_modules) will be copied to the docker/dist folder. Unit Testing : npm test -- --progress false & npm run coverage commands will be executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"1.x","name":"be-node-express","url":"/opendevstack/1.x/quickstarters/be-node-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"29":{"id":29,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter is simmple WEB-server written on Python using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── files │ ├── docker - This folder contains Docker configuration settings │ │ ├── Dockerfile │ │ └── run.sh - This bash script solves issue with permissions for a container user │ └── src │ ├── app.py - This file is the main entry point in the project. │ ├── requirements.txt - This file contains a list of required Python modules to run application │ ├── static │ │ ├── css │ │ │ └── main.css │ │ └── img │ │ └── bix.jpg │ ├── templates - Flask view teplates │ │ └── base.html │ ├── test_requirements.txt - This file contains a list of required Python modules to runt tests │ └── tests │ ├── __init__.py │ └── tests.py ├── init.sh └── sonar-project.properties - This file contains SonarQube configuration settings Flask Nose The project should be started automatically by OpenShift. Server should be started on the port 8080 in the debug mode. app.run('0.0.0.0', 8080, debug=True) To disable a debug mode set debug to False. To run application locally - specify the next command in a console: python app.py If you run application the first time, please install dependencies with the next command: pip install -r requirements.txt It is recommended when you work with a Python project use separated environment for every of your project. For this purpose usually iis used virtualenv package. # Command install virtualenv package (run only once) pip install virtualenv # Creates virtual environment 'venv' (will be located in the folder venv) (run only once) virtualenv venv # Initiate virtual environment for the project (every time) source venv/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application python app.py The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Test - Runs unit test cases by executing command: nosetests -v PEP 8 - Runs lint profiler by running command: pycodestyle --show-source --show-pep8 . && pycodestyle --statistics -qq . Build - Builds the application, copies output folder dist into docker/dist folder. This quickstarter uses Python builder slave Jenkins builder slave. NA","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"1.x","name":"be-python-flask","url":"/opendevstack/1.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"30":{"id":30,"text":"This is a Akka HTTP project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an Actor / Stream based HTTP integration layer for your application, based on scala. An example Akka HTTP Server implementation is generated with a little user registration protocol and according tests to showcase the server side routing DSL. . ├── build.sbt ├── project │ ├── build.properties │ └── plugins.sbt └── src ├── main │ └── scala │ └── com │ └── example │ ├── JsonSupport.scala │ ├── QuickstartServer.scala │ ├── UserRegistryActor.scala │ └── UserRoutes.scala └── test └── scala └── com └── example └── UserRoutesSpec.scala 10 directories, 8 files This project is generated by SBT using SBTs template generation via the new command. The template used is an older snapshot of the official Akka HTTP Quickstarter. For concrete versions of used dependencies have a look at the build.sbt file. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing or run for running the server locally. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - runs the tests and builds the application by running sbt test and sbt assembly This quickstarter uses the Scala Jenkins Slave. NA","title":"Backend Scala Akka HTTP Quickstarter (be-scala-akka)","component":"opendevstack","version":"1.x","name":"be-scala-akka","url":"/opendevstack/1.x/quickstarters/be-scala-akka.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"31":{"id":31,"text":"Provision a shared jupyter notebook within openshift for rapid prototyping of data science applications using crowd authentification +-- Jenkinsfile +-- docker | +-- Dockerfile | +-- jupyter_notebook_config.json | +-- requirements.txt | +-- run.sh +-- src +-- init.sh python 3.6 + jupyter The quickstarter sets up two pods in openshift. The jupyter notebook is routed through a crowd authentication proxy. The directory /app/src/work/storage is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Patch the build configs and inject nexus credentials for installing python dependencies over nexus pypi repository Start openshift build Deploy image to openshift jenkins-slave-base Consider if sufficient computing resources can be provided by the openshift cluster.","title":"Data Science Jupyter Notebook","component":"opendevstack","version":"1.x","name":"ds-jupyter-notebook","url":"/opendevstack/1.x/quickstarters/ds-jupyter-notebook.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"32":{"id":32,"text":"This boilerplate enables data scientists to develop, serve, version models within a CI/CD pipeline hosted on OpenShift with the goal in mind that one does not have to take care/change much of the needed pipeline and infrastructure. For pull requests and discussion regarding direction, please pull in @hugowschneider, @sklingel and @gerardcl The boilerplate provides a two pod setup in OpenShift, one pod for training service and one pod for prediction service. From one Dockerfile, under docker folder, both training and prediction services are built. If required, one can edit it in order to provide different dependency management workflows for each service. The training service provides a pod that is able to reproduce/retrain the model that is developed in the current commit either locally on OpenShift or execute the training on a remote linux system using ssh. The training process is wrapped into a flask server to be able to monitor and possible restart the training process. Moreover, the training service offers an endpoint for downloading the created model afterwards. Additionally, unittests and integration tests are executed on the training pod, in order to not depend on operating dependencies in the jenkins slave. The prediction service provides a simple flask service for getting new predictions out of your model by making json posts to the prediction REST endpoint. The prediction service is already built with the newly trained model from the training pod. The Jenkinsfile organizes the correct succession of spinning up the training, executing it and starting the new deployment of the prediction service. Additionally, it triggers unittest ensuring the code is functionally before a new training process is started. Moreover, integration tests are run against the reproduced model wrapped into the prediction REST endpoint to ensure that the reproduced model (performance) behaves as expected also when wrapped in the flask service. External files that are needed either for building your model or docker images are stored under resources. For demonstration purposes a training and test csv file is stored in resources. This approach has to be reevaluated for each new use case, considering data size and confidentiality. The src folder contains the infrastructure coded needed for providing the services in OpenShift in src/services. Custom code for developing your prediction service is organized in the src/model package. In the (common) src/requirements.txt you can specify python dependencies for training, prediction and tests. To keep it simple, there is only one requirements.txt for both pods. The test directory mirrors the structure of the src, either for unittests or integration tests using the python unittest framework. To run your own customized models there is usually no need to change either the Jenkinsfile, OpenShift setup or the training and prediction microservices. Custom model code will go under src/model and can be organized in custom packages like showcased with the src/model/data_cleaning and src/model/feature_prep. In general, it can be organized as the users prefers. There are no further restrictions for developing the in the style you want, for the exception to provide the mandatory functions and attributes in src/model/model_wrapper.py for the `ModelWrapper class: prep_and_train: is called by the train script (which one can customize) and expects a pandas dataframe (current implementation). The train script is called by the training service prep_and_predict: is called by the predict endpoint service from the prediction service. It consumes the json post as a dictionary. The predict endpoint executes prep_and_predict. Good practice: source_features, specifying the name that are used a input for the model. This features include really the source columns from which also more complicated features are derived within the model boundaries Good practice: target_variable, name of the variable that should be used as target for a possible supervised approach. As well as the train function in the src/trainer.py. It specifies how the model should be trained. Make sure your specified all dependencies in the requirements.txt. It is recommended to develop your code against the python interpreter & dependencies specified in the docker images. This can be easily achieved, either by using an IDE that supports that (e.g. PyCharm) or by doing manually in the docker container. In order to ensure complete reproducibility, in case train and/or test data can’t be committed to a git repository due to size or confidentiality/data privacy considerations, data versioning can be achieved using the built in dvc data version capabilities.` Moreover, technical user account is needed so that the CI/CD pipeline is able to pull the data dependencies from the remote data versioning repository. Do the following steps in order to make use of the data versioning capabilities Initialize the quickstarter repository as a dvc repository: dvc init Setup the a remote repository on a remote ssh machine, e.g. Data Lake dvc remote add ssh://:/ Configure authentification. For local development you can set your own user account, assuming it has access to or use a technical user account. dvc remote modify user and set the prompt for password, so that you don’t commit your password to the repository dvc remote modify ask_password True Start adding files that should be tracked by data versioning dvc add this will create a new file with meta information about called .dvc. This meta file needs to be tracked with git, so that it is ensured that each git commit is linked with a specific data version git add .gitignore .dvc Modify your train() and potentially the integration tests to pull the data dependencies from the remote repository. A helper class is provided in src/services/remote/dvc/data_sync.py that can be used as follows: from services.infrastructure.remote.dvc.data_sync import DataSync syncer = DataSync(dvc_data_repo, dvc_ssh_user, dvc_ssh_password) syncer.pull_data_dependency(file_name) Commit your code and push the data versioned files to the remote repository git commit dvc push -r git push In order for a successful Jenkins build, the following environment variables need to be set in the training pod deployment: DSI_DVC_REMOTE, DSI_SSH_USERNAME, `DSI_SSH_PASSWORD An example implementation of a custom model is given in src/model, to demonstrate how to organize custom code. A Logistic Regression using scikit-learn with some (unnecessary) feature cleaning and engineering is trained on the iris data flower set. Iris flower data set. (n.d.). In Wikipedia. Retrieved January 7, 2019, from https://en .wikipedia.org/wiki/Iris_flower_data_set Training Build Config name: -training-service variables: None Deployment Config name: -training-service variables: DSI_EXECUTE_ON: LOCAL DSI_TRAINING_SERVICE_USERNAME: auto generated username DSI_TRAINING_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Prediction Build Config name: -prediction-service variables: None Deployment Config name: -prediction-service variables: DSI_TRAINING_BASE_URL: http://-training-service..svc:8080 DSI_TRAINING_SERVICE_USERNAME: username of the training service DSI_TRAINING_SERVICE_PASSWORD: password of the training service DSI_PREDICTION_SERVICE_USERNAME: auto generated username DSI_PREDICTION_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Remote training allows you to run your training outside of the OpenShift training pod on a linux node using a ssh connection. A conda environment is installed in the remote node and the requirements specified in src/requirements.txt are installed. Once this step is finished the training is executed on that node and the trained model is transferred back to the training pod. To enable remote training set the DSI_EXECUTE_ON variable in OpenShift to SSH and specify the connection information in the environment variables: DSI_SSH_HOST, DSI_SSH_PORT, DSI_SSH_USERNAME and DSI_SSH_PASSWORD. / : Return all information about the training service /start : Starts the training. /finished : Checks if the current traning task is finished /getmodel : Download the latest trained model /predict : Return all information about the training service payload: Should be a json containing the data necessary for prediciton. The payload is not pre defined, but it is defined by the trainined model There is not need for any kind of payload in all endpoints. Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_EXECUTE_ON Where the train should be executed LOCAL, SSH DSI_TRAINING_SERVICE_USERNAME Username to be set as default username for accessing the services string, required DSI_TRAINING_SERVICE_PASSWORD Password to be set as default password for accessing the services string, required Following variables are applicable if DSI_EXECUTE_ON=SSH DSI_SSH_HOST SSH host name where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) host names or ip addresses DSI_SSH_PORT SSH host port where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) port numbers (Default: 22) DSI_SSH_USERNAME SSH username for remote execution string\\ DSI_SSH_PASSWORD SSH password for remote execution string DSI_SSH_HTTP_PROXY HTTP proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_SSH_HTTPS_PROXY HTTPS proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_DVC_REMOTE Name of the dvc remote repository that has been initialized with dvc string Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_TRAINING_BASE_URL The base url where the prediction service should get the model from url (e.g. https://training.OpenShift.svc DSI_TRAINING_SERVICE_USERNAME Username of the training service string, required DSI_TRAINING_SERVICE_PASSWORD Password of the training service string, required DSI_PREDICTION_SERVICE_USERNAME Username to be set as default username for accessing the service string, required DSI_PREDICTION_SERVICE_PASSWORD Password to be set as default password for accessing the service string, required The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Prepare build Sonarqube checks Build training image Deploy training pod Unittests Execute/reproduce training either on openshift pod or in ssh remote machine Integration test against the newly trained model wrapped in the flask /prediction endpoint Build prediction image Deploy prediction service jenkins-slave-python Python 3.6 Python Flask 1.0.2 Not ready for R models yet In the case of building the docker image from behind a proxy and encountering certificate issues, adding a -k to the curl command can mitigate that, consider however the implications of disabling certificate Consider moving to ssh remote server training, if you expect high and long computational load during training phase. It might cause unnecessary stress on the openshift cluster, otherwise.","title":"Data Science Industrialization Boilerplate","component":"opendevstack","version":"1.x","name":"ds-ml-service","url":"/opendevstack/1.x/quickstarters/ds-ml-service.html","titles":[{"text":"Basic Setup","hash":"_basic_setup","id":1},{"text":"Container services","hash":"_container_services","id":2},{"text":"Jenkins","hash":"_jenkins","id":3},{"text":"External Files","hash":"_external_files","id":4},{"text":"src - the heart of your service","hash":"_src_the_heart_of_your_service","id":5},{"text":"test","hash":"_test","id":6},{"text":"How to Code Your Own Models","hash":"_how_to_code_your_own_models","id":7},{"text":"How to Develop your Model Locally","hash":"_how_to_develop_your_model_locally","id":8},{"text":"Data Versioning","hash":"_data_versioning","id":9},{"text":"Example & Example Dataset","hash":"_example_example_dataset","id":10},{"text":"Structure of the quick starter","hash":"_structure_of_the_quick_starter","id":11},{"text":"Remote Training","hash":"_remote_training","id":12},{"text":"Endoints","hash":"_endoints","id":13},{"text":"Training Endpoint","hash":"_training_endpoint","id":14},{"text":"Prediction Endpoint","hash":"_prediction_endpoint","id":15},{"text":"Environment Variables for training","hash":"_environment_variables_for_training","id":16},{"text":"Environment Variables for prediction","hash":"_environment_variables_for_prediction","id":17},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":18},{"text":"Builder slave used","hash":"_builder_slave_used","id":19},{"text":"Frameworks used","hash":"_frameworks_used","id":20},{"text":"Known limitions","hash":"_known_limitions","id":21}]},"33":{"id":33,"text":"Provisions a Rshiny application within openshift using crowd authentification. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md - This readme file ├── docker - This folder contains Docker configuration settings and main R shiny app ├── Dockerfile └── app.R R/https://shiny.rstudio.com/tutorial/[Rshiny] The quickstarter sets up two pods in openshift. The rshiny application is routed through a crowd authentication proxy. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start openshift build Deploy image to openshift jenkins-slave-base N/A","title":"Data Science Rshiny Application","component":"opendevstack","version":"1.x","name":"ds-rshiny-app","url":"/opendevstack/1.x/quickstarters/ds-rshiny-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"34":{"id":34,"text":"cypress e2e testing quickstarter project This is a cypress e2e testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile ├── README.md ├── files │ ├── README.md │ ├── build │ │ ├── integration │ │ │ └── main.spec.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── cypress.json │ ├── fixtures │ │ └── example.json │ ├── integration │ │ └── main.spec.ts │ ├── package.json │ ├── plugins │ │ └── index.js │ ├── support │ │ ├── commands.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tslint.json └── init.sh 9 directories, 16 files This project is generated by Angular CLI cypress TypeScript Run command npm install in project directory to install npm packages Run npm run e2e to execute the end-to-end tests via cypress against the test instance of the front end Run npm run watch to develop the e2e test. The tests will automatically rebuild and run, if you change any of the source files. The test will run against a local instance of the front end, e.g. localhost:4200. This destination is configurable in cypress.json. Provide credentials for a test user by defining them in a file called secrets.json inside the base directory. This file should have the following format: { \"e2e\": { \"testUserName\": \"User Name\", \"testUserPassword\": \"xxxx\" } } Please note: secrets.json is mentioned in .gitignore to prevent it from being added to version control. Please keep it this way. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there is the following stage: stageTest - Lint the TypeScript code by running npm install and npm run lint, and transpiles it to JavaScript and run the tests with the npm run build command. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. For now the URL of the front end instance to test is hard-coded inside the package.json file. There should be a better solution for handing this over. It is also possible to run npm run e2e-at with an additional parameter, e.g. npm run e2e-at https://domain.com.","title":"End-to-end tests with cypress (e2e-cypress)","component":"opendevstack","version":"1.x","name":"e2e-cypress","url":"/opendevstack/1.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"35":{"id":35,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json 7 directories, 31 files This project is generated by Angular CLI Angular CLI Angular Typescript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running yarn install, yarn build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command yarn test. stageLint - Runs ng lint profiler by running command yarn lint. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"1.x","name":"fe-angular","url":"/opendevstack/1.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"36":{"id":36,"text":"Ionic quickstarter project This quickstarter generates an Ionic 3 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/Typescript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. It scaffolds a tabbed app containing 3 basic pages (home, about and contact). . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── config - This folder contains Webpack and sass configuration settings ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── resources - This folder contains resources by platform ios, android ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.ts │ │ ├── app.html │ │ ├── app.module.ts │ │ ├── app.scss │ │ └── main.ts │ ├── assets │ ├── environments │ │ ├── environment.dev.ts | | |__ environment.e2e.ts │ │ └── environment.ts │ ├── pages │ ├── providers │ ├── theme │ ├── index.html │ ├── manifest.json │ ├── polyfills.ts │ ├── service-worker.js │ ├── test.ts │ └── tsconfig.spec.json ├── www ├── .angular-cli.json - This file contains Angular project configuration settings ├── config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── .ionic.config.json - This file contains Ionic project configuration ├── karma.conf.js ├── protractor.conf.js ├── tsconfig.json └── tslint.json Ionic CLI Ionic Framework Angular Typescript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g ionic Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with yarn install, generates the build by running npm run ionic:build, if the merged git branch is master it creates the production build with npm run ionic:build --prod. Finally, it copies the output folder www into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"1.x","name":"fe-ionic","url":"/opendevstack/1.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known Limitation","hash":"_known_limitation","id":7}]},"37":{"id":37,"text":"React quickstarter project This quickstarter generates a React project for developing webpages. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── LICENSE ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── public │ ├── favicon.ico │ ├── index.html │ └── manifest.json └── src ├── App.js ├── App.test.js ├── Router.js ├── common │ └── components │ └── PageNotFound.js ├── history.js ├── home │ ├── components │ │ └── Repo.js │ ├── containers │ │ └── UserRepos.js │ ├── epics │ │ ├── fetchUserRepos.js │ │ └── index.js │ ├── index.js │ └── reducers │ ├── applyUserRepos.duck.js │ └── index.js ├── index.js ├── registerServiceWorker.js ├── rootEpic.js ├── rootReducer.js ├── store.js └── theme.js 10 directories, 28 files React js - ^16.4.0 Redux js - ^4.0.0-rc.1 material-ui As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run npm run start command to start the dev server, it will open your browser at http://localhost:8080/ The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with npm install, generates the build by running yarn build. Finally, it copies the output folder build into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave.","title":"Frontend react.js (fe-react)","component":"opendevstack","version":"1.x","name":"fe-react","url":"/opendevstack/1.x/quickstarters/fe-react.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6}]},"38":{"id":38,"text":"Vue quickstarter project For pull requests and discussion regarding direction, please pull in @akhilsoman, @m-apsolon This quickstarter booststrap a Vue.js application with TypeScript support. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The boilerplate files are generated using the Vue CLI 3.4.0 Class based component defintion is follwed for this application with TypeScript Support. The generated file structure as follows, . ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── babel.config.js ├── cypress.json ├── docker - Contains Dockerfile for the build │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package-lock.json - Default package version lock. Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── public - Static assets for the project │ ├── favicon.ico │ ├── img │ │ └── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── sonar-project.properties ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue - Vue components are added here │ ├── main.ts - Entrypoint, This runs first │ ├── registerServiceWorker.ts │ ├── router.ts - Router configurations │ ├── shims-tsx.d.ts - The file helps your IDE to understand .tsx │ ├── shims-vue.d.ts The file helps your IDE to understand what a file ending in .vue is │ └── views │ ├── About.vue │ └── Home.vue ├── tests - Unit Test as well as ene to end test files │ ├── e2e │ │ ├── plugins │ │ │ └── index.js │ │ ├── specs │ │ │ └── test.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ └── unit │ └── example.spec.ts ├── .gitignore └── tsconfig.json - TypeScript Configuration file 14 directories, 44 files Vue (2.6,6) Mocha & Chai for Unit Testing Typescript Install the dependencies npm install Compiles and hot-reloads for development npm run serve Run your tests npm run build The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running npm run install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. stageLint - Runs vue-cli-service lint profiler by running command npm run lint. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. The quickstarter is generated by copying the files genreated by Vue CLI. Once the CLI start supported template genration with out dependency installation (similar to --skip-insatll in Angular CLI) this can be modfied to CLI based generation.","title":"Frontend Vue (fe-vue)","component":"opendevstack","version":"1.x","name":"fe-vue","url":"/opendevstack/1.x/quickstarters/fe-vue.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"39":{"id":39,"text":"Table of Contents Overview Backend Quickstarter Frontend Quickstarter Data Science Quickstarter Other Quickstarter Usage Changing existing quickstarters Contributing new quickstarters Upgrade an existing Git repository to OpenDevStack This repository contains quickstarters, which are basically templates that help to start out with a component quickly. The available quickstarters are: Backend - Docker/Plain Backend - Golang Backend - SpringBoot/Java Backend - NodeJS/Express Backend - Python/Flask Backend - Scala/Akka Frontend - Angular Mobile - Ionic Frontend - React Frontend - Vue Data Science - Machine Learning Data Science - Jupyter Notebook Data Science - R-Shiny Airflow E2E test - Cypress Next to those, there is a \"blank\" quickstarter allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences described in the following sections. All quickstarters are used by the Provisioning App to create a new component which basically consists of resources in OpenShift (typically BuildConfig, ImageStream, DeploymentConfig and Service) and a BitBucket repository. This repository in BitBucket will contain: Some boilerplate code A Jenkinsfile describing how to build the component, delegating most of the work to the shared library A sonar-project.properties file configuring how the source code is analyzed by SonarQube Next to those, each quickstarter can also provide its own Jenkins slave images. The quickstarters are not used directly, but triggered via the provisioning app. Login there to pick a quickstarter, give it a name and provision it. The provisioning app delegates the executation to a job in Rundeck (defined in YML files in the rundeck folder), which then clones this repository and executes the files (e.g. init.sh) within. As the quickstarters are triggered via Rundeck, the changes need to be on the production branch in order to be \"live\". As an alternative, you can copy the job in Rundeck and point it to the branch you are working on. To test out things locally, you can mimick what Rundeck. The general procedure is: Clone the repository Go into a quickstarter folder, e.g. be-node-express Run build.sh (if it exists) Run init.sh Run renderJenkinsTemplate.sh from the root of the repository Run renderSonarqubeTemplate.sh from the root of the repository Note that those scripts might need parameters to work, and often need to be adjusted slightly to work (e.g. removing chowning to rundeck user). If you contribute a new quickstarter / boilerplate - please use the provided README.adoc templates for a jenkins-slave - the slave template for a boilerplace- the boilerplate Push your repository into the newly created bitbucket project (and note the name of the repo & project) Logon to rundeck and pick the common/prepare-continuous-integration rundeck job Pick the technology target thru component type - this will ensure you get the right jenkins file based on the technology you pick - and should fit the technology you have built your application with Provide quickstarter_directory - this can be any filesystem directory - usually in /tmp/ where the git repository will be cloned to Provide project_id - this is the project name you noted in step (0) Provide component_id- this is the name of the component (from step 0) that will be rendered into the jenkins template, and also used as name for the openshift resources Provide git_url_http/ssh - this is the URL to clone and commit to for the job.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":2},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":3},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":4},{"text":"Other Quickstarter","hash":"_other_quickstarter","id":5},{"text":"Usage","hash":"_usage","id":6},{"text":"Changing existing quickstarters","hash":"_changing_existing_quickstarters","id":7},{"text":"Contributing new quickstarters","hash":"_contributing_new_quickstarters","id":8},{"text":"Upgrade an existing Git repository to OpenDevStack","hash":"_upgrade_an_existing_git_repository_to_opendevstack","id":9}]},"40":{"id":40,"text":"The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app (including Rundeck. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools and Rundeck. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables.","title":"Infrastructure Setup","component":"opendevstack","version":"2.x","name":"infrastructure-setup","url":"/opendevstack/2.x/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1}]},"41":{"id":41,"text":"Welcome to the OpenDevStack. The OpenDevStack is a framework to help in setting up a project infrastructure and continuous delivery processes on OpenShift and Atlassian toolstack with one click. This guide shall help you to setup the OpenDevStack, so you can work with it and test it in a local environment setup. The steps for the setup can also be adapted for running the OpenDevstack with an existing OpenShift installation or to connect it with your Atlassian tools, if you use Atlassian Crowd as SSO provider. Important: The credentials provided in the guide are only meant to be used within the local test installation. For use in production you will have to customize paths, URLs and credentials! The following requirements have to be met to setup a local environment. You should have a computer with at least 32 GB of RAM, because we are going to install several Atlassian tools and a local OpenShift environment. Important: We assume, you will have a full functional internet connection We use Git as code repository, so you have to be familiar to work with Git. The OpenDevStack uses Vagrant to provide a sample infrastructure for the Atlassian tools, Rundeck and a so called Ansible controller, a VM, where you can run Ansible scripts against the Atlassian VM. It is recommended to use the latest Vagrant version available from the HashiCorp Vagrant page. Vagrant uses Virtualbox for running the provisioned VMs. Therefore you must have Virtualbox installed. To use the Atlassian tools you need a license to run them. For testing and evaluation Atlassian provides evalutation licenses, which you can get on the My Atlassian license page. Here you have to keep in mind, that you have to register, if you don’t have an Atlassian account. The registration is for free. You need licenses for the following products: Bitbucket Jira Confluence Crowd The evaluation licenses are valid for 30 days from the date of purchase. If you need a server id, this will be provided by the tools within the installation, so you are able to inlcude the licenses within theinstallation wizards of the tools, after the base setup provided by the Ansible scripts. The base setup uses the following versions: Software Version Bitbucket 5.16.3 Jira 7.13.3 Confluence 6.14.3 Crowd 3.4.4 You must have the possibility to run bash scripts to install the OpenDevStack. On Linux systems you can use these scripts out-of-the box, on Windows systems you will have to install either a bash port for Windows like Cygwin. For Windows, our recommendation is to use Cygwin for configuration. Make sure to select the curl package under the \"net\" category when installing cygwin. The OpenDevStack uses Ansible to install and configure the necessary software for the enabling stack, so it’s recommended to get familiar with its core concepts and usage. Credentials are stored within an Ansible vault, so even if you commit them in a public repository they are not available unless you know the vault password. Nevertheless, it is recommended to take care with handling credentials, even if they are encrypted. From now on we assume, you work from a Bash (Cygwin / Linux). We use tailor to handle our versioned OpenShift templates and keep our cluster in sync. Please see its installation instructions for your platform. The following lists the version requirements: OpenDevStack version Tailor version 0.1.x = 0.8 1.0.x >= 0.9.1 1.1.x >= 0.9.3 First create a base directory for the OpenDevStack repositories, e.g. ods. This will be your base directory for all following operations. This path will also be mounted to the VMs provisioned by Vagrant. Then you have to clone the ods-core repository into the created directory. git clone https://github.com/opendevstack/ods-core.git Navigate to the folder ods ods-core infrastructure-setup. There you will find the setup and configuration shell scripts. You can start the infrastructure provisioning and setup by using ./setup-local-environment.sh This script allows you to set the necessary installation pathes, clones the necessary OpenDevStack repositories and prepares the vagrant infrastructure, including the base installation of the Atlassian tools, Rundeck and datatbase preparing. For a local test environment it is recommended to keep the default values. During script execution you will have the possibility to choose, if you want to confirm the Atlassian and Rundeck installation for every tool or to run a complete setup. After the base installation, you will have to configure the Atlassian tools, before you are able to proceed. The following steps explain the Atlassian tools configuration i the local test environment. If you have already installed the Atlassian tools, you can skip the Configuration Wizard chapter for the respective tool Access http://192.168.56.31:8095/crowd/console Be patient. First time accessing this page will take some time. Here you can see the server id you need for the license you can get from the My Atlassian page. Use the link to get an evaluation license (Crowd Server) or enter a valid license key into the textbox. Here choose the New installation option. The next step is the database configuration. Choose the JDBC Connection option and configure the database with the following settings Option Value Database PostgreSQL Driver class name org.postgresql.Driver JDBC URL jdbc:postgresql://localhost:5432/crowd?reWriteBatchedInserts=true&prepareThreshold=0 Username crowd Password crowd Hibernate dialect org.hibernate.dialect.PostgreSQLDialect Choose a deployment title, e.g. OpenDevStack and set the Base URL to http://192.168.56.31:8095/crowd Enter the name for the internal crowd directory, e.g. OpenDevStack Enter the data for the default administrator, so you are able to login to crowd. For the test installation, we will choose the username opendevstack.admin with the password admin. Enable the OpenID Server. Now you can verify the installation and log in with the credentials defined in the previous step. You will have to configure crowd to enable the Atlassian tools and Rundeck to login with crowd credentials. The following paragraphs assume, that you are logged in to the Crowd console. You will have to change the default session configuration. Open the Administration menu and choose the Session configuration entry. Uncheck the Require consistent client IP address checkbox. Click save and login again. You will have to add additional groups Crowd’s internal directory. The groups are listed in the table below. Group Description opendevstack-users Group for normal users without adminstration rights opendevstack-administrators Group for administration users To add a group, open the Groups tab and choose Add group Enter the name and the description for the group, choose the OpenDevStack directory and click Create. The group has been created. Repeat the steps of group creation for all necessary groups. After creating the groups you have to create a user, that is used by continuous integration mechanisms of the OpenDevStack. Go to the Users section in Crowd and click Add user. Enter the details for the CD user and click Create. For the provided scripts we assume, that the username cd_user with the password cd_user is used. In the following overview choose the user’s group tab and click Add groups Now search for all groups by leaving the Search fields empty, check the opendevstack-users group and click Add selected groups. The group has been added to the user. Now you have to add all groups to the administrator. Go to the Users section in Crowd, choose your administration user and open the Groups tab. Click Add groups, search for all by leaving the Search fields empty and add all groups. You will have to add the applications you want to access with your Crowd credentials in the Crowd console. Access the Crowd console at http://192.168.56.31:8095/crowd/console/ The following example shows, how to add Jira to the application section. The steps for the other applications are equal. Choose the Applications menu point and click Add application You enter the Add application-Wizard. Enter your application details and proceed with Next. Enter the URL and Remote IP address and click Next. Check the OpenDevStack user directory checkbox. Then proceed with Next. Check the Allow all users to authenticate checkbox. Click Next. Confirm the application information by clicking Add application In the following overview choose the Remote addresses tab. Now enter the CIDR 0.0.0.0/0 in the input field and click Add. You will have to add all applications listed in the table below. The provided data is meant to be used in the local test environment. Application type Name Password URL IP address Directories Authorisation Additional Remote Adresses Jira jira jira http://192.168.56.31:8080 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Confluence confluence confluence http://192.168.56.31:8090 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Bitbucket Server bitbucket bitbucket http://192.168.56.31:7990 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application rundeck rundeck http://192.168.56.31:4440 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application provision provision http://192.168.56.1:8088 192.168.56.1 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application sonarqube sonarqube https://sonarqube-cd.192.168.56.101.nip.io 192.168.56.101 Internal directory with OpenDevStack groups all users 0.0.0.0/0 After adding all applications they should shown at the applications overview in Crowd. Access http://192.168.56.31:7990 Be patient. First time accessing this page takes some time. On the configuration page you have the possibility to define the application name, the base URL and to get an evaluation license or enter a valid license. If you choose to get an evaluation license you can retrieve it from the my atlassian page. You will be redirected automatically. After adding the license you have to create a local Bitbucket administrator account. Don’t integrate Bitbucket with Jira, but proceed with going to Bitbucket. Go to the Bitbucket start page at http://192.168.56.31:7990/ Open the administration settings and navigate to the User directories menu. Here you have to add a directory of type Atlassian Crowd. In the following form add the Crowd server URL http://192.168.56.31:8095/crowd, the application name and the password you have defined for Bitbucket in crowd. For the local test environment this is bitbucket bitbucket Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Bitbucket. Now you have to configure the permissions for the OpenDevStack groups. Go to the Global permissions menu. In the Group access section add the opendevstack-administrators group with System Admin rights. Add the opendevstack-users group with Project Creator rights. The local checked out OpenDevStack repositories will be mirrored into the Bitbucket instance. Therefore, we need to create a new project within Bitbucket. Go to the Projects page in Bitbucket and click the Create project button. Now enter the Project name: OpenDevStack with the Project key OPENDEVSTACK and hit Create Project. Now open the project settings. In the Project permissions section, allow the opendevstack-users group write access. After you have adjusted the project permissions, you will have to create the repositories for the OpenDevStack. Go to the OpenDevStack project overview and choose the Create repository option, either with the '+' sign on the left menu bar or with the Create repository button in the middle of the screen, if you have an empty project. Enter the name for the repository and click Create repository. You will have to create the repositories listed in the table below. Repositories ods-core ods-configuration ods-jenkins-shared-library ods-quickstarters ods-provisioning-app You will have to add a SSH key to the cd_user in Bitbucket, so Rundeck will be able to communicate with Bitbucket. First got to the Users section in the Bitbucket administration. Choose the cd_user and select the SSH keys tab. Click Add key The key has been auto generated during the setup script execution. Navigate to the base directory you created at the beginning of the setup process. There you will find a file named id_rsa_bitbucket.pub Copy the content of the file Paste the key to the input field in Bitbucket and click Add key Access http://192.168.56.31:8080 Be patient. First time accessing this page takes time. Here you have to choose the application title and the base URL. You can leave the data as is for the test environment. Here you have to enter the license key for the Jira instance (Jira Software (Server)). With the provided link in the dialogue you are able to generate an evaluation license at Atlassian. Now you have to set up a Jira administrator account. Unless you have configured a mail server, leave this for later. To finish this part of the Jira installation, you will have to provide some informations to your prefered language, your avatar and you will have to create an empty or a sample project. After these basic configurations, you have access to the Jira board. Open the User management in the Jira administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Jira in crowd. For the local test environment this is jira jira. Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Jira. The next step is to configure the permissions for the OpenDevStack user groups. Go to the Global Permissions menu beneath the System tab. There you will have to add the OpenDevStack groups according to the Jira user groups. For this choose the permission and the user group in the Add Permission section of the page and click Add. See the table below for the permission mapping. Permission User group Jira System Administrators opendevstack-administrators Jira Administrators opendevstack-administrators Browse Users opendevstack-(administrators|users) Create Shared Objects opendevstack-(administrators|users) Manage Group Filter Subscriptions opendevstack-(administrators|users) Bulk Change opendevstack-(administrators|users) The last step is to grant the created OpenDevStack groups application access. Go to the Application access menu beneath the Applications tab. There you will have to add the OpenDevStack groups according to the Jira user groups. Click on the group selection and choose the group you want to add to Jira. Access http://192.168.56.31:8090 Here you have to choose Production Installation, because we want to configure an external database. Ensure the add-ons are unchecked and proceed. Here you are able to get an evaluation license from atlassian or to enter a valid license key. Here you have to choose My own database. Choose By connection string as Setup type and configure the database with the following values: Option Value Database Type PostgreSQL Database URL jdbc:postgresql://localhost:5432/confluence User Name confluence Password confluence Click Next to proceed. Be patient. This step takes some time until next page appears. Here you have to choose Empty Site or Example Site Choose Manage users and groups within Confluence. Crowd will be configured later. Here you have to configure a local administrator account. After this step, you are able to work with Confluence. Just press Start and create a space. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left in the USERS & SECURITY section. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Now enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Confluence in crowd. For the local test environment this is confluence confluence Activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position and synchronize the directory. The last step is to configure the permissions for the OpenDevStack groups. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the Global Permissions entry at the left in the USERS & SECURITY section. Now choose Edit Permissions and add the OpenDevStack groups with the Input field in the groups section. Check the checkboxes, so the OpenDevStack groups have the same permissions the local confluence groups have. Click Save all to persist the permissions. After the configuration of the Atlassian tools has been done, it’s time to continue with the preparation oft the OpenDevStack environment. In this step the basic configuration for the OpenShift cluster takes place, as well as the installation of Sonarqube, Nexus3 and the Provisioning application. In addition Rundeck will be prepared automatically as far as possible. Navigate to the ods-core/infrastructure-setup/ directory on your local machine and execute the script prepare-local-environment.sh Now you will have to decide, which configuration should be done. In a first time installation you will have to keep the defaults. For further customization there will be an additional guide. Important; The preparation script also activates SSO in Confluence and Jira. After the activation has been done a login with the local administrator credentials is no longer possible! During the mirroring of the local repositories to your Bitbucket instance, it is possible, that you will be asked for credentials. Here you have to enter the credentials for your loacl Crowd administrator or the cd_user credentials. After the repository mirroring you may setup project branch permissions in Bitbucket, if the production branch should be guarded against direct merges except through admins. The subsequent paragraphs explain the installation and configuration content for Nexus3, Sonarqube, Rundeck and the Provisioning application. Nexus3 will be installed automatically, if you have confirmed the installation in the prepare script. After the installation Nexus3 will be accessible at http://nexus-cd.192.168.56.101.nip.io/ You are able to login with the default credentials for Nexus3 admin admin123. During installation various resources will be created automatically. You will find their description in the subsequent paragraphs. In the automated installation the following blob stores will be created Type Name Path File candidates /nexus-data/blobs/candidates File releases /nexus-data/blobs/releases File atlassian_public /nexus-data/blobs/atlassian_public This table lists the repositories created automatically. Name Format Type Online Version policy Layout policy Storage Strict Content Type Validation Deployment policy Remote Storage belongs to group candidates maven2 hosted checked Release Strict candidates checked Disable-redeploy none releases maven2 hosted checked Release Strict releases checked Disable-redeploy none npmjs npm proxy checked default checked https://registry.npmjs.org atlassian_public maven2 proxy checked Release Strict atlassian_public checked Disable-redeploy https://maven.atlassian.com/content/repositories/atlassian-public/ jcenter maven2 proxy checked Release Strict default checked Disable-redeploy https://jcenter.bintray.com maven-public sbt-plugins maven2 proxy checked Release permissive default unchecked Disable-redeploy http://dl.bintray.com/sbt/sbt-plugin-releases/ ivy-releases sbt-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases ivy-releases typesafe-ivy-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://dl.bintray.com/typesafe/ivy-releases ivy-releases ivy-releases maven2 group checked Release permissive default unchecked Disable-redeploy pypi-all pypi group checked default pypi-proxy pypi-proxy pypi proxy checked default https://pypi.org/ During installation the following user will be created. Name Password developer developer The user will get the opendevstack-developer role listed below. Role ID Role name Role description opendevstack-developer OpenDevStack-Developer Role for access from OpenDevStack This role has the following privileges: Privilege nx-repository-admin-maven2-candidates-browse nx-repository-admin-maven2-candidates-edit nx-repository-admin-maven2-candidates-read nx-repository-view-maven2-- nx-repository-view-maven2-candidates-* nx-repository-view-npm-- The account created is used to authenticate against Nexus3, anonymous access is disabled. By default Sonarqube will be installed with the preparation script. You will have to pass a valid authentication token for Sonarqube to the OpenShift templates, so the script will pause as soon as Sonarqube is available. Go to https://sonarqube-cd.192.168.56.101.nip.io . Login with your Crowd credentials. Now open your personal account settings. Generate a token in the Security section. Copy the token value to the input of the preparation script and follow the instructions. The token will be processed and integrated in the templates for future builds. Under General Settings Security, you must enable \"Force user authentication\" to avoid public access to the SonarQube interface. Under \"My Account\", you must change the default password for the admin user. In additon to the base Jenkins images you have the option to build additional Jenkins slave images. To do so, just type y instead of typing n or pressing Enter, if you are asked, if you want to install the additional slave images. After the preparation script execution, you will have to configure some values in Rundeck. Access Rundeck at http://192.168.56.31:4440/ Login with your Crowd credentials. Now choose the Quickstarters project. Open the Job Actions button on the right and Import Remote Changes Click Import Now you should see the imported jobs. Choose the verify global rundeck settings job and execute it to verify that Rundeck has all necessary data. If you use the Github repository, and use as is this step isn’t necessary! If you use your own repository, configure the export plugin in same way as the import plugin, except the file path template - set to rundeck-jobs/${job.group}${job.name}.${config.format} ##Run from OpenShift The Provisioning application has been installed with the environment preparation script and is accessible via https://prov-app-test.192.168.56.101.nip.io There is no further configuration needed. If the application is not available, you will have to proof in OpenShift, if there have been any errors during the installation. Open the cloned provision application in your favorite IDE If you run the application from your IDE, you will have to provide some addional informations. In case you want to use your local Nexus, you will have to create a gradle.properties file in the ods-provisioning-app project to provide the Nexus credentials, because we disabled anonymous access. nexus_url=http://nexus-cd.192.168.56.101.nip.io nexus_user=developer nexus_pw=developer You also have to ensure the Nexus certificate is integrated in the keystore of the JDK the IDE uses. If you don’t want to use the internal Nexus and run the application from your IDE, you will have to provide a gradle.properties file with the following content: no_nexus=true After startup via the IDE the application is available at http://localhost:8080/ You can login in with the Crowd admin user you set up earlier. This section is not required anymore from OpenDevStack 2.0 OpenDevStack provides shared images used accross the stack - like the authproxy based on NGINX and lua for crowd In order to install, create a new project called shared-services Make the required customizations in the ods-configuration under ods-core shared-images nginx-authproxy-crowd ocp-config bc.env and secret.env and run tailor update inside ods-core\\shared-images\\nginx-authproxy-crowd: and start the build: oc start-build -n shared-services nginx-authproxy. After you have set up your local environment it’s time to test the OpenDevStack and see it working. Open the Provisioning application in your web browser and login with your crowd credentials. Provision your first project and have a look at your project in the Atlassian tools and OpenShift.","title":"Getting started","component":"opendevstack","version":"2.x","name":"local-installation","url":"/opendevstack/2.x/local-installation.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Requirements","hash":"_requirements","id":2},{"text":"Git","hash":"_git","id":3},{"text":"Vagrant","hash":"_vagrant","id":4},{"text":"Virtualbox","hash":"_virtualbox","id":5},{"text":"Atlassian tools licenses","hash":"_atlassian_tools_licenses","id":6},{"text":"Cygwin / Linux","hash":"_cygwin_linux","id":7},{"text":"Ansible","hash":"_ansible","id":8},{"text":"Setup your local environment","hash":"_setup_your_local_environment","id":9},{"text":"Tailor","hash":"_tailor","id":10},{"text":"Prepare infrastructure","hash":"_prepare_infrastructure","id":11},{"text":"Configure Atlassian Tools","hash":"_configure_atlassian_tools","id":12},{"text":"Atlassian Crowd","hash":"_atlassian_crowd","id":13},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard","id":14},{"text":"Step 1: License key","hash":"_step_1_license_key","id":15},{"text":"Step 2: Crowd installation","hash":"_step_2_crowd_installation","id":16},{"text":"Step 3: Database Configuration","hash":"_step_3_database_configuration","id":17},{"text":"Step 4: Options","hash":"_step_4_options","id":18},{"text":"Step 5: Internal directory","hash":"_step_5_internal_directory","id":19},{"text":"Step 6: Default administrator","hash":"_step_6_default_administrator","id":20},{"text":"Step 7: Integrated applications","hash":"_step_7_integrated_applications","id":21},{"text":"Step 8: Log in to Crowd console","hash":"_step_8_log_in_to_crowd_console","id":22},{"text":"Configure Crowd","hash":"_configure_crowd","id":23},{"text":"Session configuration","hash":"_session_configuration","id":24},{"text":"Add OpenDevStack groups","hash":"_add_opendevstack_groups","id":25},{"text":"Add CD user","hash":"_add_cd_user","id":26},{"text":"Add groups to administrator","hash":"_add_groups_to_administrator","id":27},{"text":"Add applications to crowd","hash":"_add_applications_to_crowd","id":28},{"text":"Attlassian Bitbucket","hash":"_attlassian_bitbucket","id":29},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_2","id":30},{"text":"Configure Crowd access","hash":"_configure_crowd_access","id":31},{"text":"Add permissions","hash":"_add_permissions","id":32},{"text":"Create OpenDevStack project in Bitbucket","hash":"_create_opendevstack_project_in_bitbucket","id":33},{"text":"Add SSH Key for CD user to Bitbucket","hash":"_add_ssh_key_for_cd_user_to_bitbucket","id":34},{"text":"Atlassian Jira","hash":"_atlassian_jira","id":35},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_3","id":36},{"text":"Step 1: Setup application properties","hash":"_step_1_setup_application_properties","id":37},{"text":"Step 2: Specify your license key","hash":"_step_2_specify_your_license_key","id":38},{"text":"Step 3: Set up administrator account","hash":"_step_3_set_up_administrator_account","id":39},{"text":"Step 4: Set up email notifications","hash":"_step_4_set_up_email_notifications","id":40},{"text":"Step 5: Basic configuration","hash":"_step_5_basic_configuration","id":41},{"text":"Configure user directory","hash":"_configure_user_directory","id":42},{"text":"Add permissions","hash":"_add_permissions_2","id":43},{"text":"Add application access","hash":"_add_application_access","id":44},{"text":"Atlassian Confluence","hash":"_atlassian_confluence","id":45},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_4","id":46},{"text":"Step 1: Set up Confluence","hash":"_step_1_set_up_confluence","id":47},{"text":"Step 2: Get add-ons","hash":"_step_2_get_add_ons","id":48},{"text":"Step 3: License key","hash":"_step_3_license_key","id":49},{"text":"Step 4: Choose a Database Configuration","hash":"_step_4_choose_a_database_configuration","id":50},{"text":"Step 5: Configure Database","hash":"_step_5_configure_database","id":51},{"text":"Step 6: Load Content","hash":"_step_6_load_content","id":52},{"text":"Step 7: Configure User Management","hash":"_step_7_configure_user_management","id":53},{"text":"Step 8: Configure System Administrator account","hash":"_step_8_configure_system_administrator_account","id":54},{"text":"Configure user directory","hash":"_configure_user_directory_2","id":55},{"text":"Add permissions","hash":"_add_permissions_3","id":56},{"text":"Prepare local OpenDevStack environment","hash":"_prepare_local_opendevstack_environment","id":57},{"text":"Nexus3","hash":"_nexus3","id":58},{"text":"Blob stores","hash":"_blob_stores","id":59},{"text":"Repositories","hash":"_repositories","id":60},{"text":"User and roles","hash":"_user_and_roles","id":61},{"text":"Sonarqube","hash":"_sonarqube","id":62},{"text":"Prepare Jenkins slave docker images","hash":"_prepare_jenkins_slave_docker_images","id":63},{"text":"Rundeck configuration","hash":"_rundeck_configuration","id":64},{"text":"Configure SCM Export plugin","hash":"_configure_scm_export_plugin","id":65},{"text":"Provisioning application","hash":"_provisioning_application","id":66},{"text":"Run from IDE","hash":"_run_from_ide","id":67},{"text":"Add shared images","hash":"_add_shared_images","id":68},{"text":"Try out the OpenDevStack","hash":"_try_out_the_opendevstack","id":69}]},"42":{"id":42,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 Rundeck 2.8.2-1.31.GA OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"2.x","name":"sysenv-requirements","url":"/opendevstack/2.x/sysenv-requirements.html","titles":[]},"43":{"id":43,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a slave pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"2.x","name":"troubleshooting","url":"/opendevstack/2.x/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins slave - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_slave_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"44":{"id":44,"text":"When we started with Redhat’s OpenShift we were blown away by the 100s of possibilities to use it, while there was not anything along \"This is how you make it work for your org\". Its catalog provides items for almost everything - yet what we wanted is to enable people to quickly introduce Continous delivery and standardized technology archetypes. We call this lean, empowered governance. So what does OpenDevStack now provide? A set of images to get the CI infrastructure running, called ods-core. It also contains ansible runbooks to get the atlassian suite going. A shared jenkins library that harmonizes the way you build, test, govern and deploy. A set of technology quickstarters that already provide the complete CI/CD integration, w/o anything to worry about for the engineer A small provision application that gives you one place to start, no matter if you want to start a new initiative, or enhance and existing one. Trigger project creation thru the provisioning application to get a new project. The web GUI of the provisioning app is located at https://prov-app-test.;. When openshiftproject == true, this will also create OpenShift projects, namely -dev and -test. A Jenkins deployment will be created in the -cd project to allow each project full freedom of build management. This deployment is based on common jenkins images from the CD namespace. Open the web GUI of the provisioning app https://prov-app-test.;. This time, rather than new initiative, pick modify and select your project. Pick a matching quickstarter. If no framework fits to your needs, choose the be-plain-docker quickstarter. Now you got the boilerplate of the picked quickstarter in your BitBucket project in its own repository, which the provisioning app created. Also, CI/CD is already working - you can verify this as the boilerplate application runs in the -test project. This was deployed through a Jenkins pipeline, which is triggered via webhooks from BitBucket. Create a branch in the newly created repository - once pushed this will deploy your application to the -dev project. After merging your branch to master, the update is avilable in the -test project. The branch-to-environment mapping is defined in the Jenkinsfile, used by the jenkins shared library, and can be tailored to your needs.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":2},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":3},{"text":"Using OpenDevStack","hash":"_using_opendevstack","id":4},{"text":"Create an integrated OpenDevStack project","hash":"_create_an_integrated_opendevstack_project","id":5},{"text":"Pull a quickstarter into your project","hash":"_pull_a_quickstarter_into_your_project","id":6},{"text":"Result after quickstarted","hash":"_result_after_quickstarted","id":7},{"text":"Checking in my app code","hash":"_checking_in_my_app_code","id":8}]},"45":{"id":45,"text":"OpenDevStack provides several customized Jenkins Docker Images based on the official OpenShift images. The idea is, that you do not need to configure anything on Jenkings before you can start using it. In ods-core/jenkins, you find the following directory structure: Table 1. Table Directories Directory Description master Dockerfile for Jenkins Master ocp-config OpenShift templates and Tailorfile slave-base Dockerfile and customization for Jenkins Slave Images webhook-proxy Dockerfile and source code for Bitbucket webhook proxy The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.12 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 Jira offers to deploy post-initialization scripts. Table 2. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins Location based on the OpenShift route sonarqube.groovy Sets the sonarserver url and auth token based on the configured secrets and config maps The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the sonarqube server. SONAR_AUTH_TOKEN this is the sonarqube auth token that is generated when deploying and configuring sonarqube We enable (in Dockerfile) the sending of mails to unknown users and users without read rights. We have a base image for different jenkins slaves. The concrete slave images are then configured as part of the quickstarters. The base image contains the following customizations Sonarqube Scanner Sonarqube CNES Report Plugin OWASP Dependency Checker Tailor Setting of Enterprise Proxy When the docker image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins slave works also on OpenShift clusters in enterprises that use a web proxy. Provides one endpoint accepting webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the branch name). If there is no corresponding pipeline yet, it will be created on the fly. Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted as well. Go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Enter Jenkins as Title and the route URL (see following Setup section) as URL. Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined. Save your changes and you’re done! Any other webhooks already setup to trigger Jenkins are not needed anymore and should be deactivated or deleted. Run tailor update in ocp-config. This will create BuildConfig and ImageStream in the central cd namespace. Next, you will have to create a DeploymentConfig, Service and Route in the namespace your Jenkins instance runs.","title":"Jenkins","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/jenkins/index.html","titles":[{"text":"Jenkins Master","hash":"_jenkins_master","id":1},{"text":"Configured Plugins","hash":"_configured_plugins","id":2},{"text":"Init groovy scripts","hash":"_init_groovy_scripts","id":3},{"text":"Mail Sending","hash":"_mail_sending","id":4},{"text":"Jenkins Slave","hash":"_jenkins_slave","id":5},{"text":"Webhook Proxy","hash":"_webhook_proxy","id":6},{"text":"Usage","hash":"_usage","id":7},{"text":"Setup","hash":"_setup","id":8}]},"46":{"id":46,"text":"The base jenkins slave used by all ODS builder slaves Creates trust relationship with applications in the openshift cluster (thru certificate management) Sonarqube scanner plugin binding to the central SQ instance Sonarqube report plugin used to download the scan results within the jenkins shared library's stage stageScanForSonarQube OWASP scan plugin Creates proxy awareness when HTTP_PROXY is injected during build pahse Tailor - on top of openshift CLI to provide infrastrucure as code Snyk - used to scan and monitor projects vulnerable third-party dependencies","title":"ODS Jenkins Slave base","component":"opendevstack","version":"2.x","name":"slave-base","url":"/opendevstack/2.x/jenkins/slave-base.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features / Plugins","hash":"_features_plugins","id":2}]},"47":{"id":47,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables are read by the proxy: Variable Description PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be cleaned up. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the template and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the template and usually does not need to be modified. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. By default, this is just the opendevstack project. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"2.x","name":"webhook-proxy","url":"/opendevstack/2.x/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"48":{"id":48,"text":"","title":"Nexus","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/nexus/index.html","titles":[]},"49":{"id":49,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This repo contains the build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this readme describes how that setup is done. If you are looking for instructions how to analyse your repositories, please see USAGE.md. The OpenShift templates are located in ocp-config and can be compared with the OC cluster using tailor. For example, run cd ocp-config && tailor status to see if there is any drift between current and desired state. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OC project cd, under the sonarqube-app secrets. Push to this repository, then go to the build config in OC and start a new build. Admin password changed (see OC secrets sonarqube-app). Locked Sonarqube to logged-in users (Administation > Configuration > Security > Force User Authentication). Logged in as cd_user and created a auth token (My Account > Security > Generate New Token). As the auth token and the admin password has changed, you will need to update the OCP configuration again. Installed further plugins (Administation > Marketplace), e.g. SonarJava, SonarJS, Git.","title":"SonarQube","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/sonarqube/index.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Administration","hash":"_administration","id":2},{"text":"Building a new image","hash":"_building_a_new_image","id":3},{"text":"Manual steps performed after booting the instance","hash":"_manual_steps_performed_after_booting_the_instance","id":4}]},"50":{"id":50,"text":"This library allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: def final projectId = \"hugo\" def final componentId = \"be-node-express\" def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def sharedLibraryRepository def dockerRegistry node { sharedLibraryRepository = env.SHARED_LIBRARY_REPOSITORY dockerRegistry = env.DOCKER_REGISTRY } library identifier: 'ods-library@production', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: [ 'master': 'test', '*': 'dev' ] ) { context -> stage('Build') { // custom stage } stageScanForSonarqube(context) // using a provided stage } Following stages are provided (see folder vars for more details): stageScanForSonarqube(context) stageOWASPDependencyCheck(context) stageScanForSnyk(context, snykAuthenticationCode, buildFile, projectId) stageUploadToNexus(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the shared library according to your needs. There are just two settings to control everything: branchToEnvironmentMapping and autoCloneEnvironmentsFromSourceMapping. Example: branchToEnvironmentMapping: [ \"master\": \"prod\", \"develop\": \"dev\", \"hotfix/\": \"hotfix\", \"*\": \"review\" ] Maps a branch to an environment. There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OCP. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OCP. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. Caution! Cloning environments on-the-fly is an advanced feature and should only be used if you understand OCP well, as there are many moving parts and things can go wrong in multiple places. Example: autoCloneEnvironmentsFromSourceMapping: [ \"hotfix\": \"prod\", \"review\": \"dev\" ] Instead of deploying multiple branches to the same environment, individual environments can be created on-the-fly. For example, the mapping \"*\": \"review\" deploys all branches to the review environment. To have one environment per branch / ticket ID, you can add the review environment to autoCloneEnvironmentsFromSourceMapping, e.g. like this: \"review\": \"dev\". This will create individual environments (named e.g. review-123 or review-foobar), each cloned from the dev environment. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'rel': 'dev', 'hotfix': 'prod', 'preview': 'dev' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'preview': 'prod' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'uat': 'prod' ] Inside the closure passed to odsPipeline, you have full control. Write stages just like you would do in a normal Jenkinsfile. You have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsPipeline. Please see vars/odsPipeline.groovy for possible options. When you write stages, you have access to both global variables (defined without def in the Jenkinsfile) and the context object. It contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as \"153\". buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsPipeline starts. image Container image to use for the Jenkins agent container. This value is not used when \"podContainers\" is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use. By default, only one container is used, and it is configure automatically. If you need to run multiple containers (e.g. app and database), then you can configure the containers via this property. podVolumes Volumes to make available to the pod. podAlwaysPullImage Determine whether to always pull the container image before each build run. podServiceAccount Serviceaccount to use when running the pod. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. notifyNotGreen Whether to send notifications if the build is not successful. nexusHost Nexus host (with scheme). nexusUsername Nexus username. nexusPassword Nexus password. nexusHostWithBasicAuth Nexus host (with scheme), including username and password as BasicAuth. branchToEnvironmentMapping Define which branches are deployed to which environments. autoCloneEnvironmentsFromSourceMapping Define which environments are cloned from which source environments. cloneSourceEnv The environment which was chosen as the clone source. environment The environment which was chosen as the deployment target, e.g. \"dev\". targetProject Target project, based on the environment. E.g. \"foo-dev\". groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. \"foo\". componentId Component ID, e.g. \"be-auth-service\". gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message. gitCommitTime Git commit time in RFC 3399. sonarQubeBranch Branch on which to run SonarQube analysis. failOnSnykScanVulnerabilities Boolean flag (default true) that disables build failure in case Snyk Scan finds vulnerabilities dependencyCheckBranch Branch on which to run dependency checks. environmentLimit Number of environments to allow. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketHost BitBucket host - value taken from BITBUCKET_HOST. environmentCreated Whether an environment has been created during the build. openshiftBuildTimeout Timeout for the OpenShift build of the container image. ciSkip Whether the build should be skipped, based on the Git commit message. The slave used to build your code can be customized by specifying the image to use. Further, podAlwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To control the container pods completely, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized slave in a Jenkinsfile odsPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${dockerRegistry}/hugo/jenkins-slave-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '1Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each Jenkinsfile references a Git revsison of this library, e.g. library identifier: 'ods-library@production'. The Git revsison can be a branch (e.g. production or 0.1.x), a tag (e.g.0.1.1) or a specific commit. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if BitBucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate Setup organisation in snyk.io If you don´t have an snyk account just create one at snyk.io Once you logged into snyk.io, in your snyk group create an organisation for your project with exactly same name as project name. Create a service account in settings for the created organisation and keep the displayed token. You will need it later. Add environment variable to jenkins in your cd project Add the environment variable SNYK_AUTHENTICATION_CODE in jenkins in your openshift cd project with service account token as value. Edit your project Jenkinsfile Read auth code from environment by adding: node { ... snykAuthenticationCode = env.SNYK_AUTHENTICATION_CODE } Add stageScanForSnyk: ) { context -> ... stageScanForSnyk(context, snykAuthenticationCode, 'build.gradle', context.projectId) ... } The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift. The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins. stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.' The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA. Try to write tests. See if you can split things up into classes. Keep in mind that you need to access e.g. sh via script.sh. The implementation is largely based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/jenkins-shared-library/index.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Provided Stages","hash":"_provided_stages","id":2},{"text":"Workflow","hash":"_workflow","id":3},{"text":"branchToEnvironmentMapping","hash":"_branchtoenvironmentmapping","id":4},{"text":"autoCloneEnvironmentsFromSourceMapping","hash":"_autocloneenvironmentsfromsourcemapping","id":5},{"text":"Examples","hash":"_examples","id":6},{"text":"Writing stages","hash":"_writing_stages","id":7},{"text":"Slave customization","hash":"_slave_customization","id":8},{"text":"Versioning","hash":"_versioning","id":9},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":10},{"text":"How to add Snyk scanning to your ODS project","hash":"_how_to_add_snyk_scanning_to_your_ods_project","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"Ods Pipeline","hash":"_ods_pipeline","id":13},{"text":"Stage Scan for Snyk","hash":"_stage_scan_for_snyk","id":14},{"text":"Stage Start OpenShift Build","hash":"_stage_start_openshift_build","id":15},{"text":"Stage Scan For SonarQube","hash":"_stage_scan_for_sonarqube","id":16},{"text":"Development","hash":"_development","id":17},{"text":"Background","hash":"_background","id":18}]},"51":{"id":51,"text":"The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift.","title":"","component":"opendevstack","version":"2.x","name":"odsPipeline","url":"/opendevstack/2.x/jenkins-shared-library/odsPipeline.html","titles":[]},"52":{"id":52,"text":"The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins.","title":"","component":"opendevstack","version":"2.x","name":"stageScanForSnyk","url":"/opendevstack/2.x/jenkins-shared-library/stageScanForSnyk.html","titles":[]},"53":{"id":53,"text":"The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA.","title":"","component":"opendevstack","version":"2.x","name":"stageScanForSonarQube","url":"/opendevstack/2.x/jenkins-shared-library/stageScanForSonarQube.html","titles":[]},"54":{"id":54,"text":"stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.'","title":"","component":"opendevstack","version":"2.x","name":"stageStartOpenshiftBuild","url":"/opendevstack/2.x/jenkins-shared-library/stageStartOpenshiftBuild.html","titles":[]},"55":{"id":55,"text":"Table of Contents How to develop locally Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 8 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js) The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API Rundeck API","title":"Internal architecture","component":"opendevstack","version":"2.x","name":"architecture","url":"/opendevstack/2.x/provisioning-app/architecture.html","titles":[{"text":"How to develop locally","hash":"_how_to_develop_locally","id":1},{"text":"Frontend Code","hash":"_frontend_code","id":2},{"text":"Backend Code","hash":"_backend_code","id":3},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":4},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":5},{"text":"Link collection","hash":"_link_collection","id":6}]},"56":{"id":56,"text":"Table of Contents Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Authentication to third party apps via technical users The Provisioning Application is configured via spring boot profiles. Default configuration properties are definded in application.properties There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. A default oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence, Bitbucket and Rundeck. The used credentials are read from a pair of properties. For Example, rundeck.admin_password and rundeck.admin_user properties are used for Rundeck, confluence.admin_user and confluence.admin_password are used for confluence, etc. application-oauth2.properties # configure technical user for rundeck. Do not authenticate via oauth2, since not implemented. rundeck.admin_password=rundeck_admin rundeck.admin_user=rundeck_admin # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall()","title":"Configuration Guide","component":"opendevstack","version":"2.x","name":"configuration","url":"/opendevstack/2.x/provisioning-app/configuration.html","titles":[{"text":"Authentication Configuration","hash":"_authentication_configuration","id":1},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":2},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":3},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":4}]},"57":{"id":57,"text":"Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Why are three Openshift projects created when I provision a new project? A: The project-name-dev & -test ones are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the jenkins-shared-library In contrast to this, the project-name-cd namespace hosts a project specific instance of the ODS Jenkins and also of the Webhook Proxy. When a built is triggered, builder pods (=deployments of Jenkins slaves) are created in this project. This was a cautious design choice to give a project team as much power as possible - when it comes to configuration of jenkins. What is RUNDECK used for? A: Rundeck is used as orchestration engine when the provision application triggers provision jobs (e.g. create new projects, create components). This architecture is subject to change likely in release 2.0, to dramatically reduce complexity in multi cluster scenarios. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project.","title":"FAQ:","component":"opendevstack","version":"2.x","name":"faq","url":"/opendevstack/2.x/provisioning-app/faq.html","titles":[]},"58":{"id":58,"text":"Table of Contents Basic idea & usage Integration with Bitbucket (webhooks) Permissions Project/Space types based on templates Using the provision application via API / thru direct REST calls What happens in error cases This application creates new OpenDevStack digital projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as jira, confluence, bitbucket and rundeck. An admin (user in a group defined in property idmanager.group.opendevstack-administrators) creates new ODS project. This in turn creates a Jira Project (name based on project key & name) a Confluence Space (name based on project’s key) the required Openshift projects named key-dev, key-test and key-cd - in case openshiftproject == true. Internally this is done thru a rest call to rundeck triggering the create-projects rundeck job a Bitbucket Project (name based on project key) - in case openshiftproject == true. Within this project two default repositories are created key-oc-config-artifacts for all yaml resources as well as key-design for any design artifacts (e.g. sketches) A normal user (user in a group defined in property idmanager.group.opendevstack-users) creates all resources required for a working component - this happens thru the user interface - in going to modify project / picking your project and then the wanted quickstarter. Internally this is done thru a rest call to rundeck - with the picked job as parameter - here Bitbucket repository within the chosen project named key-boilerplate name Openshift components based on the chosen boilerplate, coming from ods-quickstarters The involved people receive an email with the setup, URLs to components etc. - in case mail.enabled == true Next to the provision app creating the bitbucket repository for a chosen quickstarter - it also creates a webhook on that repo, which triggers on three events List events = new ArrayList(); events.add(\"repo:refs_changed\"); events.add(\"pr:merged\"); events.add(\"pr:declined\"); webhook.setEvents(events); This webhook calls the webhook proxy which in turn creates an openshift build config of type pipeline in the name-cd project and executes it. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with tight read & write roles Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, PROVISION_API_HOST= curl -D headers.txt -k -H \"Content-Type: application/x-www-form-urlencoded\" \\ -X POST ${PROVISION_API_HOST}/j_security_check \\ -d username= -d password= # grab the login status, and exit if error login_status=$(cat headers.txt | grep ${PROVISION_API_HOST}/login?error) if [[ $login_status != \"\" ]]; then echo \"Login Error\"; exit 1; fi; # grab the needed IDs and bake the cookies JSESSION_ID=$(cat headers.txt | grep \"Set-Cookie: JSESSION\" | cut -d ';' -f1 | cut -d \":\" -f2)\";\" CROWD_COOKIE=$(cat headers.txt | grep \"Set-Cookie: crowd\" | cut -d ';' -f1 | cut -d \":\" -f2) COOKIES=${JSESSION_ID}${CROWD_COOKIE} # sample provision file >> create.txt { \"name\" : \"\", \"key\" : \"\", \"createpermissionset\" : true, \"jiraconfluencespace\" : true, \"admin\" : \"\", \"adminGroup\" : \"\", \"userGroup\" : \"\", \"readonlyGroup\" : \"\", \"openshiftproject\" : false } provisionfile=create.txt # invoke the provision API to create a new project curl -k -X POST --cookie \"$COOKIES\" -d @\"$provisionfile\" \\ -H \"Content-Type: application/json; charset=utf-8\" -v ${PROVISION_API_HOST}/api/v2/project Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false.","title":"Overview: Provisioning Application","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/provisioning-app/index.html","titles":[{"text":"Basic idea & usage","hash":"_basic_idea_usage","id":1},{"text":"Integration with Bitbucket (webhooks)","hash":"_integration_with_bitbucket_webhooks","id":2},{"text":"Permissions","hash":"_permissions","id":3},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":4},{"text":"Using the provision application via API / thru direct REST calls","hash":"_using_the_provision_application_via_api_thru_direct_rest_calls","id":5},{"text":"What happens in error cases","hash":"_what_happens_in_error_cases","id":6}]},"59":{"id":59,"text":"(#86) introduces a new v2 API, as described above. This has impact to ALL consumers, the URI to use the project api also switches to v2 with v1 being removed.","title":"Upgrade notes","component":"opendevstack","version":"2.x","name":"upgrade_notes","url":"/opendevstack/2.x/provisioning-app/upgrade_notes.html","titles":[{"text":"1.1.x to next major release","hash":"_1_1_x_to_next_major_release","id":1}]},"60":{"id":60,"text":"This boilerplate provides an Airflow Cluster using Kubernetes Executor hosted in Openshift. The AirFlow Cluster setup that is provided is based on the KubernetesExecutor and will create and destroy worker pods on demand. It also setup an ElasticSearch instance as the log repository for all workers. As illustrated bellow: All Airflow images are based on your -cd/airflow image stream. All documentation regarding the base images used in this quickstarter can be found at airflow-cluster/base-images To deploy the quickstarter the component name must be airflow-worker otherwise nothing will be created These are the OpenShift resources and the repository structure created by this boilerplace. Nothing will be created if any rersouces in the target OpenShift namespace can be found under the label cluster=airflow This boilerplate create several resources in OpenShift and ALL of them can be found using the label cluster=airflow. The created resources are: Service Account: airflow : Service account used as OAuth client for the Airflow web server Secrets: airflow-postgresql : Credentials for the PostgreSQL database airflow-elasticsearch : Credentials for the ElasticSearch airflow-fernetkey : Fernet key for securing stored Airflow Connection Config Maps: airflow-environemnt : Airflow configuration shared among all nodes Builds and Image Stream: airflow-worker : Worker image which Airflow uses for executing the tasks Deployment Configs and Services: airflow-webserver : Airflow Web Server airflow-scheduler : Airflow Scheduler (* Only Deployment Config) airflow-postgresql : Airflow matadata database airflow-elasticsearch: Worker log database airflow-kibana: Interface for exploring Airflow logs in ElasticSearch Routes: airflow-webserver : Exposes Airflow webserver . ├── docker │ ├── scripts │ │ └── setup.py # Script for installing python dependecies in dag_deps │ └── Dockerfile # Docker file pointing to Airflow shared image ├── src # Source folder │ ├── dag_deps # Folder containing all dependencies of the DAGs │ │ └── dag_deps_package # Example package │ │ ├── __init__.py │ │ └── crazy_python.py │ ├── dags # All DAGs should be in this folder │ │ ├── hello_dag.py # Example DAG using BASH Operator │ │ ├── hello_kubernetes_operator.py # Example DAG using Kubernetes Operator │ │ └── hello_python_dag.py # Example DAG using internal and external dependencies │ └── requirements.txt # File defining all dependencies (with an example inside) ├── tests # Test source folder │ ├── dag_deps # Folder containing tests of dependecies │ │ ├── __init__.py │ │ └── test_crazy_python.py # Test example │ └── dags # Folder containing tests of DAGs │ ├── __init__.py │ └── test_dag_integrity.py # DAG integrity test ├── Jenkinsfile ├── build.sh # Build script ├── sonar-project.properties ├── test_all.sh # Script for running all tests └── test_dag_integrity.sh # Script for running DAG integrity tests All examples files are simple examples and they are only needed for guiding the first development steps. They can be deleted! An Airflow cluster will be created in each environment. This allows the DAG development to follow the same branching strategy adopted in the whole project All commited code is submitted to a CI/CD pipeline defined in Jenkinsfile. This pipeline executes DAG integrity tests, which prevents invalid DAGs to be deployed. It also enables the development of all sort of tests needed for development. The last step of the Jenkins pipeline is to synchorized the recent commited DAGs with the Airflow web server and Airflow scheduler The configuration of all deployments is documented in Airflow base-images folder in ods-quickstarters/airflow-cluster once the cluster is provisioned in OpenShift you need to change in the airflow-environment configmap any occurence of the following strings: - your-openshift-apihost - your-openshift-console to the right values for your cluster. Finally, redeploy airflow-webserver and airflow-scheduler to apply the configurations.","title":"AirFlow Openshift Cluster Boilerplate","component":"opendevstack","version":"2.x","name":"airflow-cluster","url":"/opendevstack/2.x/quickstarters/airflow-cluster.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Contents","hash":"_contents","id":2},{"text":"OpenShift Resources","hash":"_openshift_resources","id":3},{"text":"File structure provided in the repository","hash":"_file_structure_provided_in_the_repository","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Features","hash":"_features","id":6},{"text":"Multi Branching","hash":"_multi_branching","id":7},{"text":"CI/CD","hash":"_cicd","id":8},{"text":"DAG Distribution","hash":"_dag_distribution","id":9},{"text":"Configuration of Airflow","hash":"_configuration_of_airflow","id":10}]},"61":{"id":61,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. This quickstarter uses Golang builder slave. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"2.x","name":"be-golang-plain","url":"/opendevstack/2.x/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"62":{"id":62,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 8 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). Under the hook this quickstarter runs the spring boot cli init command. The quickstarter uses the latest available spring boot cli version to generate the spring boot project. This is implemented in the script init.sh (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project will be generated and pushed to your git repository. The generated project requires java 8 and include the required gradle build and wrapper artifact. The generated spring boot project contains following folders: src (maven based java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,jersey,data-jpa,h2,lombok,data-rest,restdocs,security\"), which are defined in the script init.sh (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 8 or later version is required to run gradlew and compile java classes. The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. This quickstarter uses Maven builder slave Jenkins builder slave. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"2.x","name":"be-java-springboot","url":"/opendevstack/2.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":11},{"text":"Builder Slave used","hash":"_builder_slave_used","id":12},{"text":"Known limitations","hash":"_known_limitations","id":13}]},"63":{"id":63,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter is simmple WEB-server written on Python using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── files │ ├── docker - This folder contains Docker configuration settings │ │ ├── Dockerfile │ │ └── run.sh - This bash script solves issue with permissions for a container user │ └── src │ ├── app.py - This file is the main entry point in the project. │ ├── requirements.txt - This file contains a list of required Python modules to run application │ ├── static │ │ ├── css │ │ │ └── main.css │ │ └── img │ │ └── bix.jpg │ ├── templates - Flask view teplates │ │ └── base.html │ ├── test_requirements.txt - This file contains a list of required Python modules to runt tests │ └── tests │ ├── __init__.py │ └── tests.py ├── init.sh └── sonar-project.properties - This file contains SonarQube configuration settings Flask Nose The project should be started automatically by OpenShift. Server should be started on the port 8080 in the debug mode. app.run('0.0.0.0', 8080, debug=True) To disable a debug mode set debug to False. To run application locally - specify the next command in a console: python app.py If you run application the first time, please install dependencies with the next command: pip install -r requirements.txt It is recommended when you work with a Python project use separated environment for every of your project. For this purpose usually iis used virtualenv package. # Command install virtualenv package (run only once) pip install virtualenv # Creates virtual environment 'venv' (will be located in the folder venv) (run only once) virtualenv venv # Initiate virtual environment for the project (every time) source venv/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application python app.py The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Test - Runs unit test cases by executing command: nosetests -v PEP 8 - Runs lint profiler by running command: pycodestyle --show-source --show-pep8 . && pycodestyle --statistics -qq . Build - Builds the application, copies output folder dist into docker/dist folder. This quickstarter uses Python builder slave Jenkins builder slave. NA","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"2.x","name":"be-python-flask","url":"/opendevstack/2.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"64":{"id":64,"text":"This is a Akka HTTP project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an Actor / Stream based HTTP integration layer for your application, based on scala. An example Akka HTTP Server implementation is generated with a little user registration protocol and according tests to showcase the server side routing DSL. . ├── build.sbt ├── project │ ├── build.properties │ └── plugins.sbt └── src ├── main │ └── scala │ └── com │ └── example │ ├── JsonSupport.scala │ ├── QuickstartServer.scala │ ├── UserRegistryActor.scala │ └── UserRoutes.scala └── test └── scala └── com └── example └── UserRoutesSpec.scala 10 directories, 8 files This project is generated by SBT using SBTs template generation via the new command. The template used is an older snapshot of the official Akka HTTP Quickstarter. For concrete versions of used dependencies have a look at the build.sbt file. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing or run for running the server locally. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - runs the tests and builds the application by running sbt test and sbt assembly This quickstarter uses the Scala Jenkins Slave. NA","title":"Backend Scala Akka HTTP Quickstarter (be-scala-akka)","component":"opendevstack","version":"2.x","name":"be-scala-akka","url":"/opendevstack/2.x/quickstarters/be-scala-akka.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"65":{"id":65,"text":"This is a node (v6) quick starter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The files are generated using a yeoman generator for node-express-typescript. Generated files include a minimal express server with dummy routes. ├── Jenkinsfile - Contains Jenkins build configuration ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── greeter.ts │ ├── index.ts - Entrypoint, This runs first │ └── routes │ └── weather.ts ├── test │ ├── greeter-spec.ts │ └── index-spec.ts ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration 4 directories, 14 files Express (^4.15) Mocha & Chai for Unit Testing Typescript Do a npm install form the project root to install all the dependencies. npm run serve will transpile the code and start the server Execute npm run test for unit testing The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command will be executed to build the application and then the build (including the node_modules) will be copied to the docker/dist folder. Unit Testing : npm test -- --progress false & npm run coverage commands will be executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"2.x","name":"be-typescript-express","url":"/opendevstack/2.x/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"66":{"id":66,"text":"Use this quickstarter when you want to start from a plain dockerfile only - w/o a framework on top. A good usecase here is a dockerfile you found on github that you want to run with OpenDevStack features, or that you need to \"openshiftify\", by setting an execution user or alike. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration None, except the ODS jenkins shared library Amend the generated Dockerfile as needed. The shared library is used as is - whatever is in the /docker folder is passed to oc start build as docker context. In case you want to run testing, plug into stageUnitTest. def stageBuild(def context) { stage('Build') { // copy any other artifacts if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } def stageUnitTest(def context) { stage('Unit Test') { // if needed add your unit tests here } } none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"2.x","name":"docker-plain","url":"/opendevstack/2.x/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"67":{"id":67,"text":"Provision a shared Jupyter Notebook within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile └── docker ├── Dockerfile ├── jupyter_notebook_config.json ├── requirements.txt └── run.sh Python 3.6 Jupyter The quickstarter sets up two pods in OpenShift. The ds-jupyter-notebook instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-slave-base Consider if sufficient computing resources can be provided by the OpenShift cluster.","title":"Data Science Jupyter Notebook","component":"opendevstack","version":"2.x","name":"ds-jupyter-notebook","url":"/opendevstack/2.x/quickstarters/ds-jupyter-notebook.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"68":{"id":68,"text":"This boilerplate enables data scientists to develop, serve, version models within a CI/CD pipeline hosted on OpenShift with the goal in mind that one does not have to take care/change much of the needed pipeline and infrastructure. For pull requests and discussion regarding direction, please pull in @hugowschneider, @sklingel and @gerardcl The boilerplate provides a two pod setup in OpenShift, one pod for training service and one pod for prediction service. From one Dockerfile, under docker folder, both training and prediction services are built. If required, one can edit it in order to provide different dependency management workflows for each service. The training service provides a pod that is able to reproduce/retrain the model that is developed in the current commit either locally on OpenShift or execute the training on a remote linux system using ssh. The training process is wrapped into a flask server to be able to monitor and possible restart the training process. Moreover, the training service offers an endpoint for downloading the created model afterwards. Additionally, unittests and integration tests are executed on the training pod, in order to not depend on operating dependencies in the jenkins slave. The prediction service provides a simple flask service for getting new predictions out of your model by making json posts to the prediction REST endpoint. The prediction service is already built with the newly trained model from the training pod. The Jenkinsfile organizes the correct succession of spinning up the training, executing it and starting the new deployment of the prediction service. Additionally, it triggers unittest ensuring the code is functionally before a new training process is started. Moreover, integration tests are run against the reproduced model wrapped into the prediction REST endpoint to ensure that the reproduced model (performance) behaves as expected also when wrapped in the flask service. External files that are needed either for building your model or docker images are stored under resources. For demonstration purposes a training and test csv file is stored in resources. This approach has to be reevaluated for each new use case, considering data size and confidentiality. The src folder contains the infrastructure coded needed for providing the services in OpenShift in src/services. Custom code for developing your prediction service is organized in the src/model package. In the (common) src/requirements.txt you can specify python dependencies for training, prediction and tests. To keep it simple, there is only one requirements.txt for both pods. The test directory mirrors the structure of the src, either for unittests or integration tests using the python unittest framework. To run your own customized models there is usually no need to change either the Jenkinsfile, OpenShift setup or the training and prediction microservices. Custom model code will go under src/model and can be organized in custom packages like showcased with the src/model/data_cleaning and src/model/feature_prep. In general, it can be organized as the users prefers. There are no further restrictions for developing the in the style you want, for the exception to provide the mandatory functions and attributes in src/model/model_wrapper.py for the `ModelWrapper class: prep_and_train: is called by the train script (which one can customize) and expects a pandas dataframe (current implementation). The train script is called by the training service prep_and_predict: is called by the predict endpoint service from the prediction service. It consumes the json post as a dictionary. The predict endpoint executes prep_and_predict. Good practice: source_features, specifying the name that are used a input for the model. This features include really the source columns from which also more complicated features are derived within the model boundaries Good practice: target_variable, name of the variable that should be used as target for a possible supervised approach. As well as the train function in the src/trainer.py. It specifies how the model should be trained. Make sure your specified all dependencies in the requirements.txt. It is recommended to develop your code against the python interpreter & dependencies specified in the docker images. This can be easily achieved, either by using an IDE that supports that (e.g. PyCharm) or by doing manually in the docker container. In order to ensure complete reproducibility, in case train and/or test data can’t be committed to a git repository due to size or confidentiality/data privacy considerations, data versioning can be achieved using the built in dvc data version capabilities.` Moreover, technical user account is needed so that the CI/CD pipeline is able to pull the data dependencies from the remote data versioning repository. Do the following steps in order to make use of the data versioning capabilities Initialize the quickstarter repository as a dvc repository: dvc init Setup the a remote repository on a remote ssh machine, e.g. Data Lake dvc remote add ssh://:/ Configure authentification. For local development you can set your own user account, assuming it has access to or use a technical user account. dvc remote modify user and set the prompt for password, so that you don’t commit your password to the repository dvc remote modify ask_password True Start adding files that should be tracked by data versioning dvc add this will create a new file with meta information about called .dvc. This meta file needs to be tracked with git, so that it is ensured that each git commit is linked with a specific data version git add .gitignore .dvc Modify your train() and potentially the integration tests to pull the data dependencies from the remote repository. A helper class is provided in src/services/remote/dvc/data_sync.py that can be used as follows: from services.infrastructure.remote.dvc.data_sync import DataSync syncer = DataSync(dvc_data_repo, dvc_ssh_user, dvc_ssh_password) syncer.pull_data_dependency(file_name) Commit your code and push the data versioned files to the remote repository git commit dvc push -r git push In order for a successful Jenkins build, the following environment variables need to be set in the training pod deployment: DSI_DVC_REMOTE, DSI_SSH_USERNAME, `DSI_SSH_PASSWORD An example implementation of a custom model is given in src/model, to demonstrate how to organize custom code. A Logistic Regression using scikit-learn with some (unnecessary) feature cleaning and engineering is trained on the iris data flower set. Iris flower data set. (n.d.). In Wikipedia. Retrieved January 7, 2019, from https://en .wikipedia.org/wiki/Iris_flower_data_set Training Build Config name: -training-service variables: None Deployment Config name: -training-service variables: DSI_EXECUTE_ON: LOCAL DSI_TRAINING_SERVICE_USERNAME: auto generated username DSI_TRAINING_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Prediction Build Config name: -prediction-service variables: None Deployment Config name: -prediction-service variables: DSI_TRAINING_BASE_URL: http://-training-service..svc:8080 DSI_TRAINING_SERVICE_USERNAME: username of the training service DSI_TRAINING_SERVICE_PASSWORD: password of the training service DSI_PREDICTION_SERVICE_USERNAME: auto generated username DSI_PREDICTION_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Remote training allows you to run your training outside of the OpenShift training pod on a linux node using a ssh connection. A conda environment is installed in the remote node and the requirements specified in src/requirements.txt are installed. Once this step is finished the training is executed on that node and the trained model is transferred back to the training pod. To enable remote training set the DSI_EXECUTE_ON variable in OpenShift to SSH and specify the connection information in the environment variables: DSI_SSH_HOST, DSI_SSH_PORT, DSI_SSH_USERNAME and DSI_SSH_PASSWORD. / : Return all information about the training service /start : Starts the training. /finished : Checks if the current traning task is finished /getmodel : Download the latest trained model /predict : Return all information about the training service payload: Should be a json containing the data necessary for prediciton. The payload is not pre defined, but it is defined by the trainined model There is not need for any kind of payload in all endpoints. Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_EXECUTE_ON Where the train should be executed LOCAL, SSH DSI_TRAINING_SERVICE_USERNAME Username to be set as default username for accessing the services string, required DSI_TRAINING_SERVICE_PASSWORD Password to be set as default password for accessing the services string, required Following variables are applicable if DSI_EXECUTE_ON=SSH DSI_SSH_HOST SSH host name where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) host names or ip addresses DSI_SSH_PORT SSH host port where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) port numbers (Default: 22) DSI_SSH_USERNAME SSH username for remote execution string\\ DSI_SSH_PASSWORD SSH password for remote execution string DSI_SSH_HTTP_PROXY HTTP proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_SSH_HTTPS_PROXY HTTPS proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_DVC_REMOTE Name of the dvc remote repository that has been initialized with dvc string Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_TRAINING_BASE_URL The base url where the prediction service should get the model from url (e.g. https://training.OpenShift.svc DSI_TRAINING_SERVICE_USERNAME Username of the training service string, required DSI_TRAINING_SERVICE_PASSWORD Password of the training service string, required DSI_PREDICTION_SERVICE_USERNAME Username to be set as default username for accessing the service string, required DSI_PREDICTION_SERVICE_PASSWORD Password to be set as default password for accessing the service string, required The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Prepare build Sonarqube checks Build training image Deploy training pod Unittests Execute/reproduce training either on openshift pod or in ssh remote machine Integration test against the newly trained model wrapped in the flask /prediction endpoint Build prediction image Deploy prediction service jenkins-slave-python Python 3.6 Python Flask 1.0.2 Not ready for R models yet In the case of building the docker image from behind a proxy and encountering certificate issues, adding a -k to the curl command can mitigate that, consider however the implications of disabling certificate Consider moving to ssh remote server training, if you expect high and long computational load during training phase. It might cause unnecessary stress on the openshift cluster, otherwise.","title":"Data Science Industrialization Boilerplate","component":"opendevstack","version":"2.x","name":"ds-ml-service","url":"/opendevstack/2.x/quickstarters/ds-ml-service.html","titles":[{"text":"Basic Setup","hash":"_basic_setup","id":1},{"text":"Container services","hash":"_container_services","id":2},{"text":"Jenkins","hash":"_jenkins","id":3},{"text":"External Files","hash":"_external_files","id":4},{"text":"src - the heart of your service","hash":"_src_the_heart_of_your_service","id":5},{"text":"test","hash":"_test","id":6},{"text":"How to Code Your Own Models","hash":"_how_to_code_your_own_models","id":7},{"text":"How to Develop your Model Locally","hash":"_how_to_develop_your_model_locally","id":8},{"text":"Data Versioning","hash":"_data_versioning","id":9},{"text":"Example & Example Dataset","hash":"_example_example_dataset","id":10},{"text":"Structure of the quick starter","hash":"_structure_of_the_quick_starter","id":11},{"text":"Remote Training","hash":"_remote_training","id":12},{"text":"Endoints","hash":"_endoints","id":13},{"text":"Training Endpoint","hash":"_training_endpoint","id":14},{"text":"Prediction Endpoint","hash":"_prediction_endpoint","id":15},{"text":"Environment Variables for training","hash":"_environment_variables_for_training","id":16},{"text":"Environment Variables for prediction","hash":"_environment_variables_for_prediction","id":17},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":18},{"text":"Builder slave used","hash":"_builder_slave_used","id":19},{"text":"Frameworks used","hash":"_frameworks_used","id":20},{"text":"Known limitions","hash":"_known_limitions","id":21}]},"69":{"id":69,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings └── docker - This folder contains Docker configuration settings and main R Shiny app ├── Dockerfile └── app.R R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-slave-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"2.x","name":"ds-rshiny","url":"/opendevstack/2.x/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"70":{"id":70,"text":"cypress e2e testing quickstarter project This is a cypress e2e testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile ├── README.md ├── files │ ├── README.md │ ├── build │ │ ├── integration │ │ │ └── main.spec.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── cypress.json │ ├── fixtures │ │ └── example.json │ ├── integration │ │ └── main.spec.ts │ ├── package.json │ ├── plugins │ │ └── index.js │ ├── support │ │ ├── commands.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tslint.json └── init.sh 9 directories, 16 files This project is generated by Angular CLI cypress TypeScript Run command npm install in project directory to install npm packages Run npm run e2e to execute the end-to-end tests via cypress against the test instance of the front end Run npm run watch to develop the e2e test. The tests will automatically rebuild and run, if you change any of the source files. The test will run against a local instance of the front end, e.g. localhost:4200. This destination is configurable in cypress.json. Provide credentials for a test user by defining them in a file called secrets.json inside the base directory. This file should have the following format: { \"e2e\": { \"testUserName\": \"User Name\", \"testUserPassword\": \"xxxx\" } } Please note: secrets.json is mentioned in .gitignore to prevent it from being added to version control. Please keep it this way. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there is the following stage: stageTest - Lint the TypeScript code by running npm install and npm run lint, and transpiles it to JavaScript and run the tests with the npm run build command. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. For now the URL of the front end instance to test is hard-coded inside the package.json file. There should be a better solution for handing this over. It is also possible to run npm run e2e-at with an additional parameter, e.g. npm run e2e-at https://domain.com.","title":"End-to-end tests with cypress (e2e-cypress)","component":"opendevstack","version":"2.x","name":"e2e-cypress","url":"/opendevstack/2.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"71":{"id":71,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json 7 directories, 31 files This project is generated by Angular CLI Angular CLI Angular Typescript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running yarn install, yarn build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command yarn test. stageLint - Runs ng lint profiler by running command yarn lint. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"2.x","name":"fe-angular","url":"/opendevstack/2.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"72":{"id":72,"text":"Ionic quickstarter project This quickstarter generates an Ionic 3 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/Typescript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. It scaffolds a tabbed app containing 3 basic pages (home, about and contact). . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── config - This folder contains Webpack and sass configuration settings ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── resources - This folder contains resources by platform ios, android ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.ts │ │ ├── app.html │ │ ├── app.module.ts │ │ ├── app.scss │ │ └── main.ts │ ├── assets │ ├── environments │ │ ├── environment.dev.ts | | |__ environment.e2e.ts │ │ └── environment.ts │ ├── pages │ ├── providers │ ├── theme │ ├── index.html │ ├── manifest.json │ ├── polyfills.ts │ ├── service-worker.js │ ├── test.ts │ └── tsconfig.spec.json ├── www ├── .angular-cli.json - This file contains Angular project configuration settings ├── config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── .ionic.config.json - This file contains Ionic project configuration ├── karma.conf.js ├── protractor.conf.js ├── tsconfig.json └── tslint.json Ionic CLI Ionic Framework Angular Typescript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g ionic Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with yarn install, generates the build by running npm run ionic:build, if the merged git branch is master it creates the production build with npm run ionic:build --prod. Finally, it copies the output folder www into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"2.x","name":"fe-ionic","url":"/opendevstack/2.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known Limitation","hash":"_known_limitation","id":7}]},"73":{"id":73,"text":"React quickstarter project This quickstarter generates a React project for developing webpages. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── LICENSE ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── public │ ├── favicon.ico │ ├── index.html │ └── manifest.json └── src ├── App.js ├── App.test.js ├── Router.js ├── common │ └── components │ └── PageNotFound.js ├── history.js ├── home │ ├── components │ │ └── Repo.js │ ├── containers │ │ └── UserRepos.js │ ├── epics │ │ ├── fetchUserRepos.js │ │ └── index.js │ ├── index.js │ └── reducers │ ├── applyUserRepos.duck.js │ └── index.js ├── index.js ├── registerServiceWorker.js ├── rootEpic.js ├── rootReducer.js ├── store.js └── theme.js 10 directories, 28 files React js - ^16.4.0 Redux js - ^4.0.0-rc.1 material-ui As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run npm run start command to start the dev server, it will open your browser at http://localhost:8080/ The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with npm install, generates the build by running yarn build. Finally, it copies the output folder build into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave.","title":"Frontend react.js (fe-react)","component":"opendevstack","version":"2.x","name":"fe-react","url":"/opendevstack/2.x/quickstarters/fe-react.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6}]},"74":{"id":74,"text":"Vue quickstarter project For pull requests and discussion regarding direction, please pull in @akhilsoman, @m-apsolon This quickstarter booststrap a Vue.js application with TypeScript support. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The boilerplate files are generated using the Vue CLI 3.4.0 Class based component defintion is follwed for this application with TypeScript Support. The generated file structure as follows, . ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── babel.config.js ├── cypress.json ├── docker - Contains Dockerfile for the build │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package-lock.json - Default package version lock. Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── public - Static assets for the project │ ├── favicon.ico │ ├── img │ │ └── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── sonar-project.properties ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue - Vue components are added here │ ├── main.ts - Entrypoint, This runs first │ ├── registerServiceWorker.ts │ ├── router.ts - Router configurations │ ├── shims-tsx.d.ts - The file helps your IDE to understand .tsx │ ├── shims-vue.d.ts The file helps your IDE to understand what a file ending in .vue is │ └── views │ ├── About.vue │ └── Home.vue ├── tests - Unit Test as well as ene to end test files │ ├── e2e │ │ ├── plugins │ │ │ └── index.js │ │ ├── specs │ │ │ └── test.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ └── unit │ └── example.spec.ts ├── .gitignore └── tsconfig.json - TypeScript Configuration file 14 directories, 44 files Vue (2.6,6) Mocha & Chai for Unit Testing Typescript Install the dependencies npm install Compiles and hot-reloads for development npm run serve Run your tests npm run build The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running npm run install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. stageLint - Runs vue-cli-service lint profiler by running command npm run lint. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. The quickstarter is generated by copying the files genreated by Vue CLI. Once the CLI start supported template genration with out dependency installation (similar to --skip-insatll in Angular CLI) this can be modfied to CLI based generation.","title":"Frontend Vue (fe-vue)","component":"opendevstack","version":"2.x","name":"fe-vue","url":"/opendevstack/2.x/quickstarters/fe-vue.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"75":{"id":75,"text":"Table of Contents Overview Backend Quickstarter Frontend Quickstarter Data Science Quickstarter Other Quickstarter Usage Changing existing quickstarters Contributing new quickstarters Upgrade an existing Git repository to OpenDevStack This repository contains quickstarters, which are basically templates that help to start out with a component quickly. The available quickstarters are: Backend - Docker/Plain Backend - Golang Backend - SpringBoot/Java Backend - NodeJS/Express Backend - Python/Flask Backend - Scala/Akka Airflow Frontend - Angular Mobile - Ionic Frontend - React Frontend - Vue Data Science - Machine Learning Data Science - Jupyter Notebook Data Science - R-Shiny E2E test - Cypress Next to those, there is a \"blank\" quickstarter allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences described in the following sections. All quickstarters are used by the Provisioning App to create a new component which basically consists of resources in OpenShift (typically BuildConfig, ImageStream, DeploymentConfig and Service) and a BitBucket repository. This repository in BitBucket will contain: Some boilerplate code A Jenkinsfile describing how to build the component, delegating most of the work to the shared library A sonar-project.properties file configuring how the source code is analyzed by SonarQube Next to those, each quickstarter can also provide its own Jenkins slave images. The quickstarters are not used directly, but triggered via the provisioning app. Login there to pick a quickstarter, give it a name and provision it. The provisioning app delegates the executation to a job in Rundeck (defined in YML files in the rundeck folder), which then clones this repository and executes the files (e.g. init.sh) within. As the quickstarters are triggered via Rundeck, the changes need to be on the production branch in order to be \"live\". As an alternative, you can copy the job in Rundeck and point it to the branch you are working on. To test out things locally, you can mimick what Rundeck. The general procedure is: Clone the repository Go into a quickstarter folder, e.g. be-node-express Run build.sh (if it exists) Run init.sh Run renderJenkinsTemplate.sh from the root of the repository Run renderSonarqubeTemplate.sh from the root of the repository Note that those scripts might need parameters to work, and often need to be adjusted slightly to work (e.g. removing chowning to rundeck user). If you contribute a new quickstarter / boilerplate - please use the provided README.adoc templates for a jenkins-slave - the slave template for a boilerplace- the boilerplate Push your repository into the newly created bitbucket project (and note the name of the repo & project) Logon to rundeck and pick the common/prepare-continuous-integration rundeck job Pick the technology target thru component type - this will ensure you get the right jenkins file based on the technology you pick - and should fit the technology you have built your application with Provide quickstarter_directory - this can be any filesystem directory - usually in /tmp/ where the git repository will be cloned to Provide project_id - this is the project name you noted in step (0) Provide component_id- this is the name of the component (from step 0) that will be rendered into the jenkins template, and also used as name for the openshift resources Provide git_url_http/ssh - this is the URL to clone and commit to for the job.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":2},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":3},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":4},{"text":"Other Quickstarter","hash":"_other_quickstarter","id":5},{"text":"Usage","hash":"_usage","id":6},{"text":"Changing existing quickstarters","hash":"_changing_existing_quickstarters","id":7},{"text":"Contributing new quickstarters","hash":"_contributing_new_quickstarters","id":8},{"text":"Upgrade an existing Git repository to OpenDevStack","hash":"_upgrade_an_existing_git_repository_to_opendevstack","id":9}]},"76":{"id":76,"text":"This page is outdated. Please follow the new installation guide instead. However, some parts are still missing there so you might find this page useful. The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables. The ansible role definitions are located in the ods-core repository at infrastructure-setup/ansible/roles Note that there are two different types of roles: roles starting with modified or local; these roles are modified by the OpenDevStack members and are maintained by them all other roles, e.g geerlingguy.git, which are copied roles from ansible galaxy. The roles from ansible galaxy are specified in the requirements.yml file. In order to migrate to a new version of the role, you need to specify the version in the requirements.yml file run ansible-galaxy install Example: update geerlingguy.git to version 2.1.0 Update requirements.yml: - src: geerlingguy.git version: 2.1.0 Call ansible-galaxy install: export ANSIBLE_VAULT_PASSWORD_FILE=/vagrant/ansible/.vault_pass.txt && ansible-galaxy install -r requirements.yml -p roles - andrewrothstein.openshift-origin-client-tools (v1.0.9) is already installed, skipping. - geerlingguy.nginx (2.6.2) is already installed, skipping. - geerlingguy.docker (2.0.4) is already installed, skipping. - downloading role 'git', owned by geerlingguy - downloading role from https://github.com/geerlingguy/ansible-role-git/archive/2.1.0.tar.gz - extracting geerlingguy.git to /vagrant/ansible/roles/geerlingguy.git - geerlingguy.git (2.1.0) was installed successfully","title":"Infrastructure Setup","component":"opendevstack","version":"3.x","name":"infrastructure-setup","url":"/opendevstack/3.x/administration/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1},{"text":"How to update ansible roles","hash":"_how_to_update_ansible_roles","id":2}]},"77":{"id":77,"text":"This document will guide you through installing / maintaining an OpenDevStack installation. From now on we assume, you work from a Bash (Cygwin / Linux). In order to run the Atlassian suite and OpenShift, your host must have: At least 16GB RAM and 32GB of available disk space vm.max_map_count=262144 to run SonarQube (which can be set via sudo sysctl -w vm.max_map_count=262144) A recent git version (>= 2.13.2) A recent jq version (>= 1.5, see https://stedolan.github.io/jq/) Before you can install OpenDevStack (no matter whether locally or on another server) you need to have the sources available on your local machine. If you do not have the ODS repositories setup yet, you can run repos.sh file. Before you run this script, keep in mind to have Git (>=2.13). Once you have that, you can then go to your Terminal and run: mkdir -p opendevstack cd opendevstack curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/master/ods-setup/repos.sh chmod +x repos.sh If you are installing OpenDevStack for the first time, run: ./repos.sh --init If there is already an existing installation of OpenDevStack, run the following with a user that has write permission: ./repos.sh The script will prompt you which Git ref you want to use. Select either master for bleeding edge or a more stable \"version\" such as 2.x. Afterwards running this script, all required repositories should be available locally. Go to ods-core and run: make prepare-config If you want to install OpenDevStack for the first time, leave the BitBucket URL empty. After the configuration is prepared (which means that a directory ods-configuration will be created if it does not exist yet), fill out all the parameters in ods-core.env in directory ods-configuration for your installation. Add all files of directory ods-configuration to git and commit the result. You don’t need to push yet, this will be done later. \"Preparing\" also updates the sample files and checks if any params are present in the sample files but missing from the real file. If you are using windows Cygwin or WSL remember to change ending line CRLF to LF before commit ods-core.env, you can find more information on configure Git ending line We use Tailor to handle OpenShift templates and keep OpenDevStack resources in sync. Please see its installation instructions for your platform. The following lists the version requirements: OpenDevStack version Tailor version 3.x >= 1.2.2 2.x >= 0.13.1 1.2.x = 0.9.3 1.1.x = 0.9.3 1.0.x = 0.9.1 0.1.x = 0.8 At this stage you can setup the Atlassian tools if they do not exist yet, or modify them as needed. Documentation for this is missing. After Crowd is running, ensure that there is a user corresponding to the CD_USER_ID_B64/CD_USER_PWD_B64 parameters in ods-core.env. At this stage you can setup the OpenShift cluster if it does not exist yet. Documentation for this is missing. If you are on Linux, oc cluster up will do the trick. On Bitbucket, there must be an OPENDEVSTACK project filled with the necessary repositories such as ods-core. To set them up, use: make prepare-bitbucket-repos Then, update them with the latest state so that they can be used e.g. from BuildConfig resources in OpenShift: make sync-repos You also need to update ods-configuration, which can be done via: git remote add origin git push -u origin master OpenDevStack needs one central project in OpenShift, which will hold all shared resources such as images or deployments. This project is typically called ods, but you can customize this in the configuration via ODS_NAMESPACE. First, log into OpenShift with a user that has cluster-admin rights. In ods-core run: make install-ods-project A central Nexus deployment is used to proxy packages and to store artifacts. In ods-core run: make install-nexus Afterwards, run the initial configuration: make configure-nexus In the course of this you will be prompted to set a new admin password. The configure-nexus target is not idempotent yet, so it cannot be used for upgrading! A central SonarQube deployment is used to analyze source code. In ods-core run: make install-sonarqube This will launch an instance of SonarQube. The script will prompt for a new admin password. Once this has been set, an auth token for the Jenkins pipelines will be generated. Both values are automatically written into ods-configuration/ods-core.env, which you then need to commit and push. Also, you have to add the cd-user as a user in the project permissions of your Bitbucket OpenDevStack project. Read permission is sufficient. Central Jenkins images (master, agent, webhook proxy) are used by every ODS project. In ods-core run: make install-jenkins Then, there are further Jenkins agent images for each quickstarter technology. To create those images, run the following from ods-quickstarters: make install-jenkins-agent At this stage you can setup or modify the image stream for the Document Generation service. In ods-core run: make install-doc-gen At this stage you can setup or modify the provisioning application. In ods-core run: make install-provisioning-app Congratulations! At this point you should have a complete ODS installation. Try it out by provisioning a new project with the provisioning application.","title":"OpenDevStack Setup","component":"opendevstack","version":"3.x","name":"installation","url":"/opendevstack/3.x/administration/installation.html","titles":[{"text":"Server prerequisites","hash":"_server_prerequisites","id":1},{"text":"Local Setup","hash":"_local_setup","id":2},{"text":"Repositories","hash":"_repositories","id":3},{"text":"Configuration","hash":"_configuration","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Infrastructure","hash":"_infrastructure","id":6},{"text":"Atlassian Tools","hash":"_atlassian_tools","id":7},{"text":"OpenShift cluster","hash":"_openshift_cluster","id":8},{"text":"Bitbucket Repositories","hash":"_bitbucket_repositories","id":9},{"text":"OpenDevStack environment in OpenShift","hash":"_opendevstack_environment_in_openshift","id":10},{"text":"Central ODS project","hash":"_central_ods_project","id":11},{"text":"Nexus","hash":"_nexus","id":12},{"text":"SonarQube","hash":"_sonarqube","id":13},{"text":"Jenkins","hash":"_jenkins","id":14},{"text":"Document Generation service","hash":"_document_generation_service","id":15},{"text":"Provisioning Application","hash":"_provisioning_application","id":16}]},"78":{"id":78,"text":"Table of Contents Realm master Users Realm opendevstack Groups Users Client ods-provisioning-app Keycloak is an open source identity and access managment tool. OpenDevStack uses eigther Atlassian Crowd or OpenID Connect / OAuth 2.0 protocol for authentication users of provisioning app. The usage of Keycloak is optional. Instead of keycloak, Atlassian Crowd can still be used for authentication. See documentation under ODS-Components → Provisioning App → Configuration Guide regarding the configuration of provisioning app. Setup of keycloak for local-installation is all done without further manual setup actions by starting the vagrant-box idmanager. User Password Roles admin admin keycloak admin There is (beside the master realm) one single OpenDevStack-specific realm: opendevstack. There are two OpenDevStack-specific groups inside the opendevstack realm: opendevstack-administrators opendevstack-users User Password Groups admin1 admin1 opendevstack-administrators opendevstack-users user1 user1 opendevstack-users There is one OpenDevStack-specific client inside the opendevstack realm: ods-provisioning-app. There is a protocoll mapper called Group Mapper that maps the user’s group membership to a token claim with name roles.","title":"Keycloak","component":"opendevstack","version":"3.x","name":"keycloak","url":"/opendevstack/3.x/administration/keycloak.html","titles":[{"text":"Realm master","hash":"_realm_master","id":1},{"text":"Users","hash":"_users","id":2},{"text":"Realm opendevstack","hash":"_realm_opendevstack","id":3},{"text":"Groups","hash":"_groups","id":4},{"text":"Users","hash":"_users_2","id":5},{"text":"Client ods-provisioning-app","hash":"_client_ods_provisioning_app","id":6}]},"79":{"id":79,"text":"In ODS 2, there was a central namespace cd, alongside 3 namespace dedicated to the provisioning app: prov-cd, prov-dev and prov-test. In ODS 3, there is only one namespace ods, which contains the whole OpenDevStack installation. When updating from ODS 2 to ODS 3, you will need to move the services running in cd, prov-cd and prov-test to ods. In detail: SonarQube is moving from cd to ods Nexus is moving from cd to ods Jenkins (Master and Webhook Proxy) is moving from prov-cd to ods Provisioning App is moving from prov-test to ods The Provisioning App will make use of the Jenkins instance in ods to provision new ODS projects. Apart from the instances, also all build configurations and image streams are moving from cd to ods, which means all users need to pull images from the new namespace. With that in mind, we can start the update procedure! Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. To do so, run the following and select the version you want to install (3.x). make sync-repos If your OpenDevStack installation is based on a custom branch (such as 3.acme), then you need to create a pull request on BitBucket from 3.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor. 3.x requires Tailor 1.2.2. Run: make prepare-config In 2.x, the Jenkins master base image was pulled from the openshift namespace. The agent base image could have been pulled from that namespace as well, or directly from a registry. In 3.x, the master can also be pulled directly from a registry. The advantage of this is that you do not need to worry about the import policy set in the openshift namespace, which can have suprising results (e.g. your base image never updating even though a fix has been released by RedHat). The behaviour is defined by a new configuration parameter, JENKINS_MASTER_BASE_FROM_IMAGE. Further, in 2.x you had to pick (via JENKINS_AGENT_BASE_IMAGE) whether you wanted to use Dockerfile.centos7 or Dockerfile.rhel7. However, both files contained the same instructions. Therefore, those were combined into a single Dockerfile and you only need to choose which base image to use via JENKINS_AGENT_BASE_FROM_IMAGE (like before). After you have updated/added/removed all parameters with your desired values, commit and push the result. Next you need to update all OpenShift resources (such as DC or BC). Review the diff produced by Tailor carefully before applying changes. In ods-core, run: make install-ods-project make install-jenkins make install-nexus make install-doc-gen In ods-quickstarters, run: make install-jenkins-agent With OpenDevStack version 3.x the \"production\" instance of the Provisioning App is moving from the prov-test to the ods namespace. The following steps describe how to perform the change: Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Install the Provisioning App in the ods namespace make install-provisioning-app Copy backed up data to new instance oc cp ./history ods/:/opt/provision Depending on your use of the Provisioning App you can either: delete all prov-* namespaces if you are only interested in running a \"production\" instance. only delete the data under /opt/provision/history in the prov-test namespace if you want to keep your setup. With OpenDevStack version 3.x SonarQube is moving from the cd namespace to the ods namespace. The following outlines the procedure for SonarQube: Create the SonarQube build resources in ods using make apply-sonarqube-build Start build of SonarQube image in ods using make start-sonarqube-build Scale down the SonarQube pod in cd Create a backup of the old data using make ODS_NAMESPACE=cd backup-sonarqube Create the SonarQube deploy resources in ods using make apply-sonarqube-deploy Scale down the SonarQube pod in ods Upload backup to new Postgres pod: oc -n ods cp sonarqube/sonarqube.sql :/var/lib/pgsql/ Start a bash in the Postgres pod: oc rsh -n ods pod/ bash and start a psql session. Drop the sonarqube database (DROP DATABASE sonarqube) and create a new, empty one (CREATE DATABASE sonarqube OWNER sonarqube). Then quit from psql. Import the backup with psql sonarqube System\". Then, start a bash in the SonarQube pod: oc rsh -n ods pod/ bash and remove /opt/sonarqube/data/es6. Afterwards, restart the server from the UI (there’s a button on the \"Administration > System\" page). Booting will take some time (depending on the amount of data to process) as a full re-index is performed. Call make configure-sonarqube to verify the new installation is correctly configured. Now delete the old SonarQube route in cd. Create a new route in ods with the same host as the old route so that projects using the old URL don’t break. Checking for secure routes has been removed from the core, but is still available at https://github.com/BIX-Digital/ods-contrib.","title":"","component":"opendevstack","version":"3.x","name":"update-2-to-3","url":"/opendevstack/3.x/administration/update-2-to-3.html","titles":[{"text":"New central namespace","hash":"_new_central_namespace","id":1},{"text":"Update your OpenDevStack repositories","hash":"_update_your_opendevstack_repositories","id":2},{"text":"Backup","hash":"_backup","id":3},{"text":"Tailor","hash":"_tailor","id":4},{"text":"Configuration","hash":"_configuration","id":5},{"text":"OpenShift resources","hash":"_openshift_resources","id":6},{"text":"Provisioning App changes","hash":"_provisioning_app_changes","id":7},{"text":"SonarQube changes","hash":"_sonarqube_changes","id":8},{"text":"Secure route removal","hash":"_secure_route_removal","id":9}]},"80":{"id":80,"text":"Learn all about how to update your OpenDevStack repositories and the running installation of it. Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. First, you need a clone of each repository in BitBucket which should be updated on your local machine. Once this has been done, you need to fetch new refs from github.com/opendevstack. To do so, add a remote pointing to it like this: git remote add ods https://github.com/opendevstack/.git Now you are ready to update the refs. It is recommended to update both the master branch and, unless you want to live off the bleeding edge, a release branch such as 2.x. Use the steps shown below: # Ensure you have the latest refs from ODS locally git fetch ods # Update master git checkout master git reset --hard ods/master git push origin master # Update 2.x git checkout 2.x git reset --hard ods/2.x git push origin 2.x If your OpenDevStack installation is based on a custom branch (such as 2.acme), then you need to create a pull request on BitBucket from 2.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Updating consists of two parts: following the general update procedure (applicable to all version updates) and a version specific update procedure. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor to the version corresponding to your new OpenDevStack version, which is noted at the start of each version specific update procedure. Then, update/add/remove the configuration parameters (located in ods-configuration). To do this, use the ./update script located in ods-core/configuration-sample. Next, run tailor update in ods-core and ods-quickstarters to bring all OCP resources (such as DC or BC) into sync. Review the diff produced by Tailor carefully, especially around changes to PVCs. After all OCP resources have been updated, you need to start a build for all build configs in the cd namespace to create new images. Also, the provisioning app should be updated. To do that, run tailor update in each ocp-config folder, and then trigger a build in Jenkins to redeploy the service. Now that the general procedure has been completed, you need to apply all the update notes below which apply to your version change. 2.x requires Tailor 0.11.0. Secure route checking has been removed for version 3.x as this is an optional step. The code now is available at https://github.com/BIX-Digital/ods-contrib. Go to ods-core/check-ocp-secure-routes/ocp-config and run tailor update to setup a cron job that will check exposed routes once a day (see https://github.com/opendevstack/ods-core/pull/280). As each project may use a specific CD user now, you have to configure the username of the global CD user. To do so, add username: Y2RfdXNlcg== to secret cd/cd-user-token. The shared-images namespace is no longer part of OpenDevStack. If you do not have any users that use images from that namespace, you may simply delete it via oc delete project shared-images. Otherwise, you can leave it in place and remote it when you see fit. Rundeck is longer part of OpenDevStack and can simply be removed. Images in the cd namespaces should be pullable from all authenticated users. This permission is required for the new project provisioning approach to work: oc adm policy add-cluster-role-to-group system:image-puller system:authenticated -n cd oc adm policy add-role-to-group view system:authenticated -n cd Further, -dev and -test namespaces should be able to pull images from the corresponding *-cd namespaces to make it easy to shared base images within a project (see https://github.com/opendevstack/ods-core/issues/293). It is recommended to grant these rights for every project in your cluster. If you don’t do this, users will have to add the permissions manually if they want to use this flow. 2.x allows the webhook proxy to build repositories in external projects if configured (see https://github.com/opendevstack/ods-core/issues/229). This feature is required for the new quickstarter provisioning approach to work. Therefore, it is recommended to tag a webhook proxy images built from the 2.x branch or v2.0 tag with latest so that all webhook proxies in the cluster get updated. Review the ConfigMap of the provisioning app in prov-dev and prov-test. Depending on your requirements, you might want to configure additional quickstarters (jenkinspipeline.quickstarter…​) and/or change the readable repositories of the project specific users (scm.global.readablerepos.opendevstack[x]) 1.2.x requires Tailor 0.10.2. The new functionality to create documents via Jenkins requires the presence of an image for the DocGen service. In an upcoming release, this will be integrated nicely. For 1.2.x, the image needs to be built once during the update procedure. The recommended way to do this is to build the image in the prov namespaces and then move the image tag into the cd namespace. The first step is to create a pipeline oc -n prov-cd process -f pipeline.yml --param REPO_BASE= --param TRIGGER_SECRET= | oc -n prov-cd create -f -, where pipeline.yml looks like this: apiVersion: v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: docgen-production spec: nodeSelector: {} output: {} postCommit: {} resources: {} runPolicy: Serial source: git: ref: production uri: ${REPO_BASE}/opendevstack/ods-document-generation-svc.git sourceSecret: name: cd-user-with-password type: Git strategy: jenkinsPipelineStrategy: jenkinsfilePath: Jenkinsfile type: JenkinsPipeline triggers: - generic: secret: ${TRIGGER_SECRET} type: Generic parameters: - name: TRIGGER_SECRET required: true - name: REPO_BASE required: true description: Path to repository, e.g. https://cd_user@bitbucket.domain.com/scm Then, create the BuildConfig and ImageStream in prov-dev using oc -n prov-dev process -f bc-is.yml | oc -n prov-dev create -f -, where bc-is.yml looks like this: apiVersion: v1 kind: Template objects: - apiVersion: v1 kind: BuildConfig metadata: creationTimestamp: null labels: app: prov-docgen name: docgen spec: failedBuildsHistoryLimit: 5 successfulBuildsHistoryLimit: 5 nodeSelector: null output: to: kind: ImageStreamTag name: docgen:latest postCommit: {} resources: {} runPolicy: Serial source: binary: {} type: Binary strategy: dockerStrategy: {} type: Docker triggers: [] - apiVersion: v1 kind: ImageStream metadata: labels: app: prov-docgen name: docgen spec: dockerImageRepository: docgen lookupPolicy: local: false Note that this points to the production branch of ods-document-generation-svc - ensure this branch is present. After all is setup, start a build in Jenkins, and then move the built image to the cd namespace: oc tag prov-dev/docgen:latest cd/docgen:latest 1.1.x requires Tailor 0.9.4. There are no further mandatory changes apart from the general procedure described above when updating from 1.0.x. Users are highly recommended to take a look at the updates done to the boilerplates, especially the Jenkinsfile and Dockerfile. E.g. the Python quickstarter is now building an image containing all dependencies instead of installing them during runtime. 1.0.x requires Tailor 0.9.3. There is a new webhook proxy now, which proxies webhooks sent from BitBucket to Jenkins. As well as proxying, this service creates and deletes pipelines on the fly, allowing to have one pipeline per branch. To update: Setup the image in the cd project by running tailor update in ods-core/jenkins/ocp-config. Build the image. Setup the webhook proxy next to each Jenkins instance. E.g., go to ods-project-quickstarters/ocp-templates/templates and run oc process cd//cd-jenkins-webhook-proxy | oc create -f- -n xyz-cd. Repeat for each project. For each component, follow the following steps: In Jenkinsfile: Set the shared library version to 1.0.x. Replace stageUpdateOpenshiftBuild with stageStartOpenshiftBuild. Remove stageCreateOpenshiftEnvironment and stageTriggerAllBuilds. Adapt the build logic to match the latest state of the quickstarter boilerplates. Remove verbose: true config (replace with debug: true if you want debug output). Configure branchToEnvironmentMapping, see README.md. If you used environment cloning, also apply the instructions for that. In docker/Dockerfile: Adapt the content to match the latest state of the quickstarter boilerplates. No Nexus upload build artifact is required anymore, use a copy in Jenkins shell command to docker folder (see in any boilerplate how it is done now). In BitBucket, remove the existing \"Post Webhooks\" and create a new \"Webhook\", pointing to the new webhook proxy. The URL has to be of the form https://webhook-proxy-$PROJECT_ID-cd.$DOMAIN?trigger_secret=$SECRET. As events, select \"Repository Push\" and \"Pull request Merged + Declined\". If you want to build the provisioning app automatically when commits are pushed to BitBucket, add a webhook as described in the previous section. 1.0.x makes use of the BUILD_URL env variable automatically set by Jenkins. This env variable might be null in your Jenkins master. To fix this, copy https://github.com/opendevstack/ods-core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovy into each Jenins master to /var/lib/jenkins/init.groovy.d/url.groovy. 1.0.x sets image labels on the BuildConfig in Jenkins. It does this by issuing a JSON patch replace request to /spec/output/imageLabels. This path was not present in prior versions, which can lead to the following error: Error from server: jsonpatch replace operation does not apply: doc is missing key: /spec/output/imageLabels. For newly provisioned components, this has been fixed with https://github.com/opendevstack/ods-project-quickstarters/pull/188. For existing components, add the path to the BuildConfig manually by editing the YAML in OpenShift.","title":"Update Guide for OpenDevStack administrators","component":"opendevstack","version":"3.x","name":"update-older","url":"/opendevstack/3.x/administration/update-older.html","titles":[{"text":"How to update your OpenDevStack repositories","hash":"_how_to_update_your_opendevstack_repositories","id":1},{"text":"How to update your OpenDevStack installation","hash":"_how_to_update_your_opendevstack_installation","id":2},{"text":"General update procedure","hash":"_general_update_procedure","id":3},{"text":"Backup","hash":"_backup","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Configuration","hash":"_configuration","id":6},{"text":"OCP resources","hash":"_ocp_resources","id":7},{"text":"Images","hash":"_images","id":8},{"text":"Provisioning App","hash":"_provisioning_app","id":9},{"text":"1.2.x to 2.x","hash":"_1_2_x_to_2_x","id":10},{"text":"Setup secure route checking","hash":"_setup_secure_route_checking","id":11},{"text":"Project specific CD users","hash":"_project_specific_cd_users","id":12},{"text":"Deprecation of shared-images namespace","hash":"_deprecation_of_shared_images_namespace","id":13},{"text":"Rundeck removal","hash":"_rundeck_removal","id":14},{"text":"Image puller rights","hash":"_image_puller_rights","id":15},{"text":"Rollout new webhook proxy instances","hash":"_rollout_new_webhook_proxy_instances","id":16},{"text":"Configure the provisioning app","hash":"_configure_the_provisioning_app","id":17},{"text":"1.1.x to 1.2.x","hash":"_1_1_x_to_1_2_x","id":18},{"text":"Prepare installation for release manager quickstarter","hash":"_prepare_installation_for_release_manager_quickstarter","id":19},{"text":"1.0.x to 1.1.x","hash":"_1_0_x_to_1_1_x","id":20},{"text":"0.1.0 to 1.0.x","hash":"_0_1_0_to_1_0_x","id":21},{"text":"Update xyz-cd projects","hash":"_update_xyz_cd_projects","id":22},{"text":"Update components (information for ODS users)","hash":"_update_components_information_for_ods_users","id":23},{"text":"Update provisioning app","hash":"_update_provisioning_app","id":24},{"text":"Fix Jenkins master BUILD_URL","hash":"_fix_jenkins_master_build_url","id":25},{"text":"Fix JSON patch replace error in Jenkins build","hash":"_fix_json_patch_replace_error_in_jenkins_build","id":26}]},"81":{"id":81,"text":"Learn all about how to make changes to OpenDevStack in your organisation and how to contribute those changes back upstream. This guides assumes you have followed the getting-started guide, and have cloned the ODS repositories to your local Bitbucket instance. For the rest of this guide, we will use \"ACME\" as the organisation name, which you will need to replace appropriately. Say you have encountered a bug, or want to develop a new feature. The first step is to implement the changes, and then try them out in your OpenDevStack instance. Those changes can then be contributed back (as described in the next section) unless they are specific to your organisation. To start, clone the repository where you want to make changes from your Bitbucket instance. The resulting repository will have its remote origin set to Bitbucket. Next, you need to create a new branch where changes can be made. This branch must be based on a clean state. This can either be the master branch (if you are tracking bleeding edge) or, more typically, a release branch (such as 2.x). Which one to use depends entirely on your organisation: it must be the branch on which the production branch in Bitbucket is based on. For example, if your OpenDevStack instance is based on 2.x, then you can create a new branch like this: # Ensure you have the latest refs git fetch # Create a branch based on 2.x - flag with bug / feature, e.g bug/fix-typo git checkout --no-track -b bug/fix-typo origin/2.x Once you have committed the desired changes, push your branch to Bitbucket: git push origin bug/fix-typo Afterwards, open a pull request. It is important that the target of the pull request is the production branch. That way, you do not pollute the ODS base branch (2.x) with changes. The production branch exists only in your Bitbucket instance, and it is the branch that e.g. OpenShift points to, and consequently is the branch where all your changes should end up in. When your changes have been tested and approved, you can merge the pull request in Bitbucket. At this stage, you are ready to push your work upstream as well - continue with the next section if you want to do this. As your base branch (i.e. master) is never polluted with local changes, every branch created from it is guaranteed to not contain any local changes, or changes to your OpenDevStack instance that you do not want to share publicly. To contribute your work, first you need to have a space in GitHub where you have permissions to push your changes to. Typically, this is a fork of the repository owned by github.com/opendevstack, located at the GitHub account of your organisation (e.g. github.com/acme). If this fork does not exist yet, create it on GitHub using the fork feature. Next, you will need to push your branch to that repository fork. Before you are able to do that, you need to add the fork as a new remote to your repository: git remote add acme https://github.com/acme/.git After that, you can push your changes there: git push acme bug/fix-typo Once pushed, GitHub suggests to open a pull request, and automatically sets the master branch of the repository owned by OpenDevStack as a target. This is usually what you want, but there might be cases where your fix is relevant only to a certain release branch of OpenDevStack, in which case you need to change the target to that branch. Note that if you have implemented a feature, it always has to target master. That means that if you did not base your branch on latest master originally, and your pull request shows a merge conflict, you need to cherry-pick (and adapt) your changes to a branch based on latest master in order to have it merged. In general, to get your changes approved by core members of OpenDevStack, please ensure the following: Before you make a bigger change, open a ticket first and discuss what you want to do before you actually do it. E.g. explain why this change is necessary / benefitial. Ensure to follow the guide above - branches containing unrelated commits or features targeting release branches etc. will not be approved. Adhere to the relevant coding standard: Java files must be in Google Java Style, ensured by google-java-format-1.6-all-deps.jar. Go files must be gofmt’d. Groovy files should follow the Apache Groovy Style guide. End all files with a newline character. See the POSIX definition of a line. Add a changelog entry, linking to your pull request. Next sequence diagram provides a graphical understanding on the steps to follow in order to add a new functionality to the OpenDevStack official repository from ACME’s private fork. The example is based on the assumption you want to contribute with a new feature from branch 2.x or tag v2.0","title":"Development Guide","component":"opendevstack","version":"3.x","name":"development","url":"/opendevstack/3.x/contributing/development.html","titles":[{"text":"How to make changes to OpenDevStack","hash":"_how_to_make_changes_to_opendevstack","id":1},{"text":"How to contribute changes upstream","hash":"_how_to_contribute_changes_upstream","id":2},{"text":"OpenDevStack branching flow for contributions","hash":"_opendevstack_branching_flow_for_contributions","id":3}]},"82":{"id":82,"text":"OpenDevStack documentation is build with Antora. As we release new versions of OpenDevStack with new or changed functionality and configuration, it should always be clear which documentation applies to which release. Thus we follow the philosophy: manage documetation as code. This means: Storing content in a version control system alongside with the code. Separating content, configuration, and presentation Reusing shared materials (Don’t repeat yourself) Antora is a static site generator by the folks behind the AsciiDoctor project that follows this practices. The engine converts a collection of version controlled documentation written in AsciiDoc into an HTML site. Documentation is spread across multiple repositories. In each repository, there is a docs folder containing the documentation. We use one \"distributed\" component named opendevstack (see Component structure documentation), and each docs folder adds one or more named modules into that component. The navigation for the component is located in the ods-core repository. Additionally, we have the ods-documentation repository which contains the Playbook and the ods-docs-ui repository containing UI customization. A guide for building the documentation locally is provided in the ods-documentation README. Issue a pull request against the repository containing the documentation you add / modify. Once this is merged, the documentation website will get updated automatically (via a daily cronjob). The documentation will be build on Travis and pushed back to the ods-documentation repository. The .travis.yml file is located in the ods-documentation project.","title":"The OpenDevStack documentation","component":"opendevstack","version":"3.x","name":"documentation","url":"/opendevstack/3.x/contributing/documentation.html","titles":[{"text":"Why we chose Antora","hash":"_why_we_chose_antora","id":1},{"text":"How is the documentation organized?","hash":"_how_is_the_documentation_organized","id":2},{"text":"How to build the site locally?","hash":"_how_to_build_the_site_locally","id":3},{"text":"How to contribute documentation","hash":"_how_to_contribute_documentation","id":4},{"text":"How is the documentation built on Github?","hash":"_how_is_the_documentation_built_on_github","id":5}]},"83":{"id":83,"text":"When we started with RedHat’s OpenShift we were blown away by the 100s of possibilities to use it, but there was not anything along the lines of \"This is how you make it work for your org\". Its catalog provides items for almost everything - yet what we wanted is to enable people to quickly introduce Continous Delivery and standardized technology archetypes. We call this lean, empowered governance. So what does OpenDevStack provide? Everyting you need for CI infrastructure (Jenkins images, SonarQube, Nexus). Ansible playbooks to install the Atlassian suite (Jira, Bitbucket, Confluence, Crowd). A shared jenkins library that harmonizes the way you build, test, govern and deploy. A set of technology quickstarters that provide complete CI/CD integration, w/o anything to worry about for the engineer. A small provisioning application that gives you one place to start, no matter if you want to start a new project, or enhance an existing one with a quickstarter. Trigger project creation through the provisioning application to get a new project. The web GUI of the provisioning app is located at https://prov-app-ods.example.com. When \"Create Openshift Project\" is checked, this will also create OpenShift projects, namely -dev and -test. A Jenkins deployment will be created in the -cd project to allow each project full freedom of build management. This deployment is based on a common Jenkins image from the central ODS namespace. Open the web GUI of the provisioning app https://prov-app-ods.example.com. Select your project, then choose a quickstarter. If no framework fits to your needs, choose the docker-plain quickstarter. After provisioning the quickstarter, you’ll have a new repository in your BitBucket project with the boilerplate of the component. From that, a Jenkins job is triggered automatically (via a webhook setup in Bitbucket) which builds and deploys the boilerplate application into the -dev project. Major releases of OpenDevStack happen roughly every half year. Each major release is identified by a version such as 2, 3, 4 and so on. As a consumer of OpenDevStack, you can either: point to master to follow the cutting edge point to 2.x, 3.x, etc. to stay on a major version, but get bug fixes (minor versions) point to v2.0, v3.0, etc. to pin an exact version use a custom branch / tag such as 2.acme or 3.custom etc. to run ODS with customizations A major update (e.g. 2.x to 3.x or 3.x to 4.x) is, from a user perspective, an explicit update. This means that even if admins update the ODS installation in the cluster, users still have to adopt that change (e.g. by updating their Jenkins image reference and so on). Therefore, a major version change is accompanied by an update guide like Update to 3.x. For admins, a major update might mean that configuration options have to be changed or migration steps to be taken, as well as rebuilding and rolling out all images etc. A minor update (consuming changes/bugfixs on a release branch such as 3.x). From a user perspective, this is an implicit update. This means that only admins have to make a change to the ODS installation in the cluster. Users must get those changes automatically, without the need to explicitly adopt it. Therefore, there is no update guide for minor updates. For admins, a minor update should not require changing configuration options nor performing migration steps - only rebuilding and rolling out some (or all) images should be needed. Each version is tracked as a GitHub project. The current major version is 3, the next one will be 4. Planned work (subject to change): OpenShift 4 support (keeping 3.11 compatibility) Support deploying to multiple Q/P clusters in the orchestration pipeline New/Reworked machine learning quickstarter Integration with Aqua Security Implement health checks for quickstarters Provisioning App: Support config of multiple identity providers and enable new UI by default Rename central namespace to ODS, and extend with running provisioning app Install provisioning app and document generation service from pre-built images Quickstarter pipeline Merge of MRO (now: orchestration pipeline) into general shared pipeline Automation of SonarQube and Nexus setup Decorate Bitbucket pull requests with SonarQube analysis Promote images between environments if possible (instead of rebuilding) New (single page) app user interface as optional feature Removal of Rundeck (replace with Jenkins jobs) New quickstarter concept (multiple repo support) Project specific technical users CPU and memory quota support Initial version of document generation service and MRO pipeline Incremental improvements. Initial release.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"Using OpenDevStack","hash":"_using_opendevstack","id":2},{"text":"Create a new project","hash":"_create_a_new_project","id":3},{"text":"Create a new component within a project (using a quickstarter)","hash":"_create_a_new_component_within_a_project_using_a_quickstarter","id":4},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":5},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":6},{"text":"Versioning","hash":"_versioning","id":7},{"text":"Roadmap","hash":"_roadmap","id":8},{"text":"4 (Target date: December 2020)","hash":"_4_target_date_december_2020","id":9},{"text":"3 (August 2020)","hash":"_3_august_2020","id":10},{"text":"2 (December 2019)","hash":"_2_december_2019","id":11},{"text":"1.2 (October 2019, using old versioning scheme)","hash":"_1_2_october_2019_using_old_versioning_scheme","id":12},{"text":"1.1 (June 2019, using old versioning scheme)","hash":"_1_1_june_2019_using_old_versioning_scheme","id":13},{"text":"1.0 (November 2018, using old versioning scheme)","hash":"_1_0_november_2018_using_old_versioning_scheme","id":14}]},"84":{"id":84,"text":"The ods-core repository contains a Makefile with several targets to maintain Jenkins images. Run make apply-jenkins-build. Run make start-jenkins-build-master. Run make start-jenkins-build-agent-base. Run make start-jenkins-build-webhook-proxy.","title":"Jenkins Administration","component":"opendevstack","version":"3.x","name":"administration","url":"/opendevstack/3.x/jenkins/administration.html","titles":[{"text":"Managing Jenkins build resources","hash":"_managing_jenkins_build_resources","id":1},{"text":"Building a new Jenkins Master image","hash":"_building_a_new_jenkins_master_image","id":2},{"text":"Building a new Jenkins Agent Base image","hash":"_building_a_new_jenkins_agent_base_image","id":3},{"text":"Building a new Jenkins Webhook Proxy image","hash":"_building_a_new_jenkins_webhook_proxy_image","id":4}]},"85":{"id":85,"text":"We have a base image for different jenkins agents. The concrete agent images are then configured as part of the quickstarters. The base image contains the following customizations: SonarQube Scanner SonarQube CNES Report Plugin Tailor Skopeo Snyk - used to scan and monitor projects vulnerable third-party dependencies (only installed if SNYK_DISTRIBUTION_URL is configured) Setting of enterprise proxy (based on HTTP_PROXY presence) Support for custom certificates (based on APP_DNS presence) When the container image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins agent works also on OpenShift clusters in enterprises that use a web proxy. The base jenkins agent is used by all ODS builder agents","title":"ODS Jenkins Agent base","component":"opendevstack","version":"3.x","name":"agent-base","url":"/opendevstack/3.x/jenkins/agent-base.html","titles":[]},"86":{"id":86,"text":"OpenDevStack provides several customized Jenkins container images based on the official OpenShift images.","title":"Jenkins","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/jenkins/index.html","titles":[]},"87":{"id":87,"text":"The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.18 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 workflow-cps-global-lib:2.13 junit:1.28 blueocean:1.18.0 workflow-durable-task-step:2.28 openshift-sync:1.0.44 Jenkins offers to deploy post-initialization scripts. Table 1. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins location based on the OpenShift route sonarqube.groovy Sets the SonarQube server URL and auth token based on the exposed environment variables ods-jenkins-shared-library.groovy Registers ods-jenkins-shared-library as a global library The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the SonarQube server. SONAR_AUTH_TOKEN this is the SonarQube auth token that is generated when deploying and configuring sonarqube Jenkins email notifications need manual configuration: The SMTP server parameters that need to be defined are found under menu option: Jenkins → Manage Jenkins → Configure System → Extended E-mail Notification It is also mandatory to define the System Admin e-mail address, this is defined under menu option: Jenkins → Manage Jenkins → Configure System → Jenkins Location Once Jenkins is configured, you will also need to define the recipients of the email notifications by definining emailextRecipients parameter in your odsComponentPipeline context, in your components' Jenkinsfile, like: ... odsComponentPipeline( ... emailextRecipients: ['email1@foo.bar', 'email2@foo.bar'], ... ) { context -> ...","title":"Jenkins Master","component":"opendevstack","version":"3.x","name":"master","url":"/opendevstack/3.x/jenkins/master.html","titles":[{"text":"Configured Plugins","hash":"_configured_plugins","id":1},{"text":"Init scripts","hash":"_init_scripts","id":2},{"text":"Email notifications","hash":"_email_notifications","id":3}]},"88":{"id":88,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables can be set on the DeploymentConfig and are read by the webhook proxy: Variable Description ACCEPTED_EVENTS Comma-separated list of handled Bitbucket events. Defaults to repo:refs_changed,pr:declined,pr:merged,pr:deleted. ALLOWED_CHANGE_REF_TYPES Comma-separated list of Bitbucket change refs. Defaults to BRANCH, which means tags do not create pipelines nor forward to them. If you want this to happen, specify e.g. BRANCH,TAG. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. For security reasons, by default the webhook proxy allows only its own project and the opendevstack project to be passed as a project parameter. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be removed after they have been merged. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"3.x","name":"webhook-proxy","url":"/opendevstack/3.x/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"89":{"id":89,"text":"","title":"Nexus","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/nexus/index.html","titles":[]},"90":{"id":90,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"3.x","name":"sysenv-requirements","url":"/opendevstack/3.x/ods-core/sysenv-requirements.html","titles":[]},"91":{"id":91,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a agent pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"3.x","name":"troubleshooting","url":"/opendevstack/3.x/ods-core/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins agent - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_agent_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"92":{"id":92,"text":"The ods-core repository contains a build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this document describes how that setup is done. Run make start-sonarqube-build. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OpenShift project cd, inside the sonarqube-app secret.","title":"SonarQube Administration","component":"opendevstack","version":"3.x","name":"administration","url":"/opendevstack/3.x/sonarqube/administration.html","titles":[{"text":"Building a new SonarQube image","hash":"_building_a_new_sonarqube_image","id":1},{"text":"Administration","hash":"_administration","id":2}]},"93":{"id":93,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This file needs to be located in the root of the repository you want to have analysed. For example: # Project Key (required) sonar.projectKey=test-spring-boot # Project Name (optional, this is what is shown in the main list) sonar.projectName=test-spring-boot # Comma-separated paths to directories with sources (required) sonar.sources=src # Forced Language (optional) sonar.language=java # Encoding of the source files (optional but recommended as default is ASCII) sonar.sourceEncoding=UTF-8 # Plugin-specific settings sonar.java.binaries=build/classes sonar.java.libraries=build/libs sonar.junit.reportPaths=build/test-results/test The general settings are documented at https://docs.sonarqube.org/display/SONAR/Analysis+Parameters. Plugin-specific parameters can be found in the docs for each plugin, e.g. https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode. There’s a prebuilt stage (odsComponentStageScanWithSonar) that you can use, see https://www.opendevstack.org/ods-documentation/ods-jenkins-shared-library/latest/index.html for details. The team behind SonarQube also published SonarLint, a plugin currently available for IntelliJ, Eclipse, Visual Studio, VS Code and Atom that lets you scan while coding in your IDE. It also integrates with a SonarQube Server, so that you can scan with the servers rule settings. For further information please see https://www.sonarlint.org/intellij/howto.html. For the server connected mode, the SonarQube URL has to be set to your SonarQube deployment. Be aware that this does not connect you with the SonarQube Server in OpenShift, therefore you might have other rule settings locally than the ones set on server. That said, here’s what you need to do on your host to have a local SonarQube instance: docker pull sonarqube docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube ./gradlew sonarqube Running these commands will let you see at http://localhost:9000 your project reports, for any branch. Please, note that you are not running with an embedded database in this case, so it is only for temporary testing, do not expect historic report.","title":"SonarQube","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/sonarqube/index.html","titles":[{"text":"sonar-project.properties file","hash":"_sonar_project_properties_file","id":1},{"text":"Scanning in Jenkins pipelines","hash":"_scanning_in_jenkins_pipelines","id":2},{"text":"Scanning locally: SonarLint IDE Plugin","hash":"_scanning_locally_sonarlint_ide_plugin","id":3},{"text":"Scanning locally: SonarQube Docker Container","hash":"_scanning_locally_sonarqube_docker_container","id":4}]},"94":{"id":94,"text":"Table of Contents Required steps Update image tags of Jenkins deployments Update Jenkinsfiles in Git repositories Grant image-puller rights to your *-cd namespace Component resource constraints Notable changes Component deployment behaviour Jenkins slave NodeJS 8 New Tailor version Deprecation of shared-services namespace New features SonarQube quality gates Skopeo Common / Known Issues Learn all about how to update your OpenDevStack based project to ODS 2.x. It is assumed that you are updating from ODS 1.2.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (2.x), and trigger a deployment. Edit every Jenkinsfile. The shared library should point to 2.x, e.g.: library identifier: 'ods-library@2.x', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) Also, the image used to run the pipeline in should point to 2.x, e.g.: odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven:2.x\", ... ) This step is not strictly necessary, but recommended as projects created with version 2.x will have those rights by default. Having this setup will enable you to use the *-cd namespace for common base images to reduce build times. Run the following, replacing $PROJECT_ID with your project ID: oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-test -n $PROJECT_ID-cd oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-dev -n $PROJECT_ID-cd Note that you need to be an admin on your project in order to run those commands. For more information, see ods-core#293. Newly created components now have memory quotas (ods-quickstarters#12) and CPU quotas (ods-quickstarters#74) configured. It is recommended (though not required) to configure resource constraints for existing components as well. If you are unsure which values to set, refer to the new defaults and check the current usage in the \"Metrics\" section in OpenShift. In the shared library, rollouts will be triggered manually now when no config/image trigger exists on the DeploymentConfig. The cd/jenkins-slave-nodejs8-angular image has been discontinued. Please update to cd/jenkins-slave-nodejs10-angular. For more information, see ods-quickstarters#71. Tailor has been updated to 0.11.0 in the Jenkins slaves, see ods-core#290. The shared-images namespace (containing common base images) has been removed from new ODS 2.0 installation. For existing installations, it is likely being kept for some time by the cluster administrator to enable users to react to this change. If you use a component based on the ds-jupyter-notebook or ds-rshiny quickstarters, you should switch to using the new authentication approach, which is uing an OpenShift OAuth proxy instead of a Nginx service. See ods-quickstarters#46. If you use the Airflow Quickstarter, its base images should now be built in your *-cd namespace See ods-quickstarters#60. It is now possible to opt-in to failing the build if the SonarQube scan fails the quality gate defined in SonarQube. To enable this, change the call of stageScanForSonarqube(context) to stageScanForSonarqube(context, true). For more information, see ods-jenkins-shared-library#22. When working with images, you may make use of Skopeo, which is now part of the Jenkins slaves. See ods-core#253. When provisioning new components, you must use a name that differs from the component type, otherwise some quickstarters fail. E.g. when creating a new component of type fe-react, you cannot name it fe-react but must choose another name like my-app. For more information, see https://github.com/opendevstack/ods-provisioning-app/issues/336.","title":"Update Guide to version 2.x for OpenDevStack users","component":"opendevstack","version":"3.x","name":"2x","url":"/opendevstack/3.x/update-guides/2x.html","titles":[{"text":"Required steps","hash":"_required_steps","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Update Jenkinsfiles in Git repositories","hash":"_update_jenkinsfiles_in_git_repositories","id":3},{"text":"Grant image-puller rights to your *-cd namespace","hash":"_grant_image_puller_rights_to_your_cd_namespace","id":4},{"text":"Component resource constraints","hash":"_component_resource_constraints","id":5},{"text":"Notable changes","hash":"_notable_changes","id":6},{"text":"Component deployment behaviour","hash":"_component_deployment_behaviour","id":7},{"text":"Jenkins slave NodeJS 8","hash":"_jenkins_slave_nodejs_8","id":8},{"text":"New Tailor version","hash":"_new_tailor_version","id":9},{"text":"Deprecation of shared-services namespace","hash":"_deprecation_of_shared_services_namespace","id":10},{"text":"New features","hash":"_new_features","id":11},{"text":"SonarQube quality gates","hash":"_sonarqube_quality_gates","id":12},{"text":"Skopeo","hash":"_skopeo","id":13},{"text":"Common / Known Issues","hash":"_common_known_issues","id":14}]},"95":{"id":95,"text":"Table of Contents New central ods namespace Update image tags of Jenkins deployments Jenkins Shared Library changes Renamed pipelines and stages Reduced boilerplate Changed agent images Changed context properties Different image tags Changes to Jenkins agent images General upgrade to Python 3.8 Airflow Cluster Jenkins agent no longer supported Learn all about how to update your OpenDevStack based project to ODS 3.x. It is assumed that you are updating from ODS 2.x. One of the biggest changes in ODS 3 is that there is a new central namespace, named ods. This namespace hosts the complete ODS installation, such as a provisioning app, Nexus, SonarQube, and images for Jenkins (master and agent). This central namespace replaces the previous namespaces cd (which hosted Nexus, SonarQube, etc.) as well as prov-test, prov-dev and prov-cd (which hosted the provisioning app). As a user, you will be affected by this change insofar as the images you use for the Jenkins master instance and Jenkins agent nodes will need to be retrieved from ods instead of cd (see next section). Further, depending on the migration done by the administrator, the URLs of Nexus, SonarQube and the provisioning app might have changed. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (3.x), and trigger a deployment. Note that you also need to change the namespace of the images from cd to ods (see above). Since ODS 2, it is also recommended to remove any image triggers from jenkins and webhook-proxy, so that any image changes are only rolled out by yourself. If you choose to remove the image trigger, ensure that the imagePullPolicy is set to Always to always get the latest 3.x image when you deploy. If the administrator of your ODS cluster chose to use a custom Bitbucket project for the 3.x installation, then you’ll need to set the environment variable ALLOWED_EXTERNAL_PROJECTS= for the webhook-proxy DeploymentConfig. Otherwise you will not be able to provision quickstarters. 3.x ships with the three pipelines instead of just one. In 2.x, the shared library offered one pipeline to build components, named odsPipeline. This has been renamed to odsComponentPipeline to make its purpose clearer and to distinguish it from the other pipelines, odsQuickstarterPipeline (to provision quickstarters) and odsOrchestrationPipeline (to orchestrate multiple repositories using the release manager). To provide backwards compatibility, odsPipeline is still available, but deprecated and will be removed in ODS 4. In line with this change, the stages have been renamed too, which also makes them easier to distinguish from custom stages written by yourself in the Jenkinsfile. As with the pipeline, the old stages are still available but slated for removal in ODS 4. Here’s a list of the changes: stageScanForSonarqube is now odsComponentStageScanWithSonar stageScanForSnyk is now odsComponentStageScanWithSnyk stageStartOpenshiftBuild is now odsComponentStageBuildOpenShiftImage stageDeployToOpenshift is now odsComponentStageRolloutOpenShiftDeployment stageUploadToNexus is now odsComponentStageUploadToNexus Please note the new casing (e.g. OpenShift instead of Openshift). Further, the new stages all take the same two arguments: IContext context and Map config = [:]. Please see the documentation for details. In particular, some options which would previously have been set on odsPipeline can and should be set on the stage where they are used (however all options have been kept for backwards compatibility). A Jenkinsfile in 2.x looks roughly like this: def final projectId = 'foo' def final componentId = 'bar' def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def dockerRegistry node { dockerRegistry = env.DOCKER_REGISTRY } @Library('ods-jenkins-shared-library@2.x') _ odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-golang:2.x\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: ['master': 'dev'] ) { context -> stageScanForSonarqube(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) } That is a lot of boilerplate. 3.x reduces this dramatically: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: ['master': 'dev'] ) { context -> odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) odsComponentStageRolloutOpenShiftDeployment(context) } Note that the new Jenkinsfile example already uses the new pipeline/stage names as outlined above. Apart from this, it makes use of a new config option, imageStreamTag which removes the need to read the DOCKER_REGISTRY environment variable. If you need it, the image config is still present (e.g. to reference images outside of OpenShift). projectId and componentId are now automatically configured, but can still be set if desired. Up to and including 2.x, Jenkins used \"slave images\" to do its work. They have been renamed to \"agent images\" in 3.x. All new agent images are located in the new central namespace ods. Therefore, you need to update the references in your Jenkinsfile (as shown above): cd/jenkins-slave-base is now ods/jenkins-agent-base cd/jenkins-slave-golang is now ods/jenkins-agent-golang cd/jenkins-slave-maven is now ods/jenkins-agent-maven cd/jenkins-slave-nodejs10-angular is now ods/jenkins-agent-nodejs10-angular cd/jenkins-slave-python is now ods/jenkins-agent-python cd/jenkins-slave-scala is now ods/jenkins-agent-scala The context object available to use in stages has been slimmed down by removing properties unlikely to be useful to author stages (such as resource constraints of the Jenkins agent pod). Please review the documentation in case your authored stages make heavy use of the context object. One notable change to the context object is that bitbucketHost did not include the scheme previously. Now, bitbucketHost is an alias for bitbucketUrl which does include the scheme. This change was made to align the property with nexusHost and nexusUrl, which both include the scheme as well. If you used context.bitbucketHost in one of your Jenkinsfile`s, you may now use `context.bitbucketHostWithoutScheme. A notable addition to the context object is a new property issueId, which exposes the Jira issue ID (such as 123 from branch feature/FOO-123-bar-baz). Previously, images produced by odsComponentStageBuildOpenShiftImage where tagged with context.tagversion, which consisted of the Jenkins build number and the (shortened) Git commit (e.g. 7-cd3e9082). This made it difficult for other processes (unaware of the Jenkins build number) to find those images. The images are now tagged with just the (shortened) Git commit (e.g. cd3e9082). This change also has the huge benefit that it allows to promote images between environments (avoiding to rebuild them) using the new stage odsComponentStageImportOpenShiftImageOrElse. Some agent images (jenkins-agent-maven, jenkins-agent-nodejs10-angular, jenkins-agent-scala) exposed the environment variables NEXUS_HOST and NEXUS_USERNAME/NEXUS_PASSWORD/NEXUS_AUTH. This was not done intentionally, but as a side effect of using those variables during image build time. In 3.x, that has been cleaned up. Now those variables are passed as build arguments to the image build, which means they are no longer accessible as environment variables in the running container. Nexus credentials can and should be accessed from the pipeline context (context.nexusUrl, context.nexusUsername and context.nexusPassword). As a consequence, if a Jenkinsfile relies on the presence of those environment variables without setting them explicitly using withEnv, it will fail to run in 3.x. That said, the Jenkinsfile templates which shipped by default with the quickstarters did not rely on the environment variables - with the exception of fe-ionic which did not set NEXUS_HOST explicitly in the Build stage. Jenkins agent jenkins-agent-python as well as all python related quickstarters (be-python-flask, ds-jupyter-notebook and ds-ml-service) have been upgraded to python 3.8. This is not affecting default provisioned Jenkinsfile for ds-jupyter-notebook nor be-python-flask quickstarters that exist before ODS 3.x. But, ds-ml-service provisoned quickstarters before ODS 3.x need to slightly modify its Jenkinsfile before upgrading to ODS 3.x by just avoiding running any pip install --user (see new Jenkinsfile.template to get a suggested fix, basically using virutalenv; which is the recommended way of working when requiring building python packages). If you provisioned airflow-cluster quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. Therefore, the jenkins-slave-airflow:2.x can be shifted to jenkins-agent-python:3.x when upgrading to ODS 3.x.","title":"Update Guide to version 3.x for OpenDevStack users","component":"opendevstack","version":"3.x","name":"3x","url":"/opendevstack/3.x/update-guides/3x.html","titles":[{"text":"New central ods namespace","hash":"_new_central_ods_namespace","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Jenkins Shared Library changes","hash":"_jenkins_shared_library_changes","id":3},{"text":"Renamed pipelines and stages","hash":"_renamed_pipelines_and_stages","id":4},{"text":"Reduced boilerplate","hash":"_reduced_boilerplate","id":5},{"text":"Changed agent images","hash":"_changed_agent_images","id":6},{"text":"Changed context properties","hash":"_changed_context_properties","id":7},{"text":"Different image tags","hash":"_different_image_tags","id":8},{"text":"Changes to Jenkins agent images","hash":"_changes_to_jenkins_agent_images","id":9},{"text":"General upgrade to Python 3.8","hash":"_general_upgrade_to_python_3_8","id":10},{"text":"Airflow Cluster Jenkins agent no longer supported","hash":"_airflow_cluster_jenkins_agent_no_longer_supported","id":11}]},"96":{"id":96,"text":"This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: [ 'master': 'dev', // 'release/*': 'test' ] ) { context -> odsComponentStageImportOpenShiftImageOrElse(context) { stage('Build') { // custom stage } odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) } odsComponentStageRolloutOpenShiftDeployment(context) } The version in @Library can be any Git revsison, such as a branch (e.g. master or 2.x), a tag (e.g. v2.0) or even a specific commit. There are many built-in stages like odsComponentStageScanWithSonar that you can use, please see Stages for more details. odsComponentPipeline can be customized by passing configuration options like this: odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', dockerDir: 'foo' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10mi. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300mi. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. notifyNotGreen Whether to send notifications if the build is not successful. Enabled by default. emailextRecipients Notify to this list of emails when notifyNotGreen is enabled. It is empty by default. branchToEnvironmentMapping Define which branches are deployed to which environments, see Git Workflow / Branch to Environment Mapping autoCloneEnvironmentsFromSourceMapping Define which environments are cloned from which source environments. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. environmentLimit Number of environments to allow when auto-cloning environments. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. imagePromotionSequences Sequence of environments between which images can be promoted in odsComponentStageImportOpenShiftImageOrElse. Defaults to ['dev→test', 'test→prod']. sonarQubeBranch Please use option branch on odsComponentStageScanWithSonar. failOnSnykScanVulnerabilities Deprecated in 3.x! Please use option failOnVulnerabilities on odsComponentStageScanWithSnyk. openshiftBuildTimeout Deprecated in 3.x! Please use option buildTimeoutMinutes on odsComponentStageBuildOpenShiftImage. openshiftRolloutTimeout Deprecated in 3.x! Please use option deployTimeoutMinutes on odsComponentStageRolloutOpenShiftDeployment. testResults Configurable location for xunit test results, in case the build does not put them into build/test-results/test. When you write custom stages inside the closure passed to odsComponentPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsComponentPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsComponentPipeline starts. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. nexusUrl Nexus URL - value taken from NEXUS_URL. If NEXUS_URL is not present, it will default to NEXUS_HOST (which also includes the scheme). nexusHost is an alias for nexusUrl. nexusUsername Nexus username. nexusPassword Nexus password. nexusUrlWithBasicAuth Nexus URL, including username and password as BasicAuth. nexusHostWithBasicAuth is an alias for nexusUrlWithBasicAuth. sonarQubeEdition Edition of SonarQube in use, determined by SONAR_EDITION (defaults to community). cloneSourceEnv The environment which was chosen as the clone source. environment The environment which was chosen as the deployment target, e.g. dev. targetProject Target project, based on the environment. E.g. foo-dev. groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. shortGitCommit Short Git commit SHA (first 8 chars) to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message (sanitized). gitCommitRawMessage Git commit message (raw). gitCommitTime Git commit time in RFC 3399. issueId Jira issue ID if any present in the branch name (e.g. 123 from branch feature/FOO-123-bar-baz). openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. imagePromotionSequences Sequence of environments between which images can be promoted. Used e.g. in odsComponentStageImportOpenShiftImageOrElse. Defaults to ['dev→test', 'test→prod']. The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the pipeline according to your needs by configuring the pipeline option branchToEnvironmentMapping. The setting could look like this: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'hotfix/': 'hotfix', '*': 'review' ] There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OpenShift. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OpenShift. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: node { dockerRegistry = env.DOCKER_REGISTRY } // ... odsComponentPipeline( branchToEnvironmentMapping: [:], podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${dockerRegistry}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if Bitbucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate By default, the component pipeline uses existing OpenShift resources, and just creates new images / deployments related to them. However, it is possible to control all OpenShift resources in code, following the infrastructure-as-code approach. This can be done by defining the resources as OpenShift templates in the directory openshift of the repository, which will then get applied by Tailor when running the pipeline. The advantage of this approach: All changes to OpenShift resources are traceble: who did the change and when? Moving your application between OpenShift projects or even clusters is trivial Changes to your application code that require a change in configuration (e.g. a new environment variable) as well can be done together in one commit. If you have an existing component for which you want to enable this feature, you simply need to run: mkdir -p openshift tailor -n foo-dev export -l app=foo-bar > openshift/template.yml Commit the result and the component pipeline should show in the ouput whether there has been drift and how it was reconciled. When using this approach, you need to keep a few things in mind: Any changes done in the OpenShift web console will effectively be reverted with each deploy. When you store templates in code, all changes must be applied to them. You can always preview the changes that will happen by running tailor diff from your local machine. DeploymentConfig resources allow to specify config and image triggers (and ODS configures them by default like this). When deploying via Tailor, it is recommended to remove the image trigger, otherwise you might trigger two deployments: one when config (such as an environment variable) changes, and one when the image changes. When you remove the image trigger, it is crucial to add the internal registry to the image field, and to configure imagePullPolicy: Always for the container (otherwise you might roll out old images). If you want to use encrypted secrets with Tailor, you have to create a keypair for Jenkins so that the pipeline can use it to decrypt the parameters. The easiest way to do this is to create an OpenShift secret named tailor-private-key and sync it with Jenkins as a credential. Example: tailor secrets generate-key jenkins@example.com oc -n foo-cd create secret generic tailor-private-key --from-file=ssh-privatekey=private.key oc -n foo-cd label secret tailor-private-key credential.sync.jenkins.openshift.io=true Controlling your OpenShift resources in source code enables a lot of other use cases as well. For example, you might want to preview changes to a component before merging the source code. By using Tailor to deploy your templates, you can create multiple running components from one repository, e.g. one per feature branch. Following are some steps how to achieve this: First, add 'feature/': 'dev' to the branchToEnvironmentMapping. Then, create new variables in the pipeline block: def componentSuffix = context.issueId ? \"-${context.issueId}\" : '' def suffixedComponent = context.componentId + componentSuffix With this in place, you can adapt the rollout stage: odsComponentStageRolloutOpenShiftDeployment( context, [ resourceName: \"${suffixedComponent}\", tailorSelector: \"app=${context.projectId}-${suffixedComponent}\", tailorParams: [\"COMPONENT_SUFFIX=${componentSuffix}\"] ] ) And finally, in your openshift/template.yml, you need to add the COMPONENT_SUFFIX parameter and append ${COMPONENT_SUFFIX} everywhere the component ID is used in deployment relevant resources (such as Service, DeploymentConfig, Route). That’s all you need to have automatic previews! You might want to clean up when the code is merged, which can be achieved with something like this: stage('Cleanup preview resources') { if (context.environment != 'dev') { echo \"Not performing cleanup outside dev environment\"; return } def mergedIssueId = org.ods.services.GitService.mergedIssueId(context.projectId, context.repoName, context.gitCommitRawMessage) if (mergedIssueId) { echo \"Perform cleanup of suffix '-${mergedIssueId}'\" sh(\"oc -n ${context.targetProject} delete all -l app=${context.projectId}-${context.componentId}-${mergedIssueId}\") } else { echo \"Nothing to cleanup\" } } The shared library already sets the build status of the built commit. It also provides three convenience methods on BitbucketService to interact with pull requests: String getPullRequests(String repo, String state = 'OPEN') returns all open pull requests, which can be parsed using readJSON. Map findPullRequest(String repo, String branch, String state = 'OPEN') tries to find a pull request for the given branch, and returns a map with its ID and target branch. void postComment(String repo, int pullRequestId, String comment) allows to add comment to the PR identified by pullRequestId. To make use of these methods, you need to get an instance of the BitbucketService in your Jenkinsfile like this: Jenkinsfile import org.ods.services.ServiceRegistry import org.ods.services.BitbucketService def sayHello(def context) { stage('Say Hello') { def bitbucketService = ServiceRegistry.instance.get(BitbucketService) bitbucketService.postComment(context.repoName, 1, \"Hello world\") } } If the message of the built commit contains [ci skip], the pipeline is skipped. The Jenkins build status will be set to NOT_BUILT, the Bitbucket build status to SUCCESSFUL (as there is no \"skipped\" state). The pipeline will start to execute initially, but abort before launching any agent nodes or starting any of the stages defined in the Jenkinsfile. Caution! Cloning environments on-the-fly is an advanced feature and should only be used if you understand OpenShift well, as there are many moving parts and things can go wrong in multiple places. Example: autoCloneEnvironmentsFromSourceMapping: [ \"hotfix\": \"prod\", \"review\": \"dev\" ] Instead of deploying multiple branches to the same environment, individual environments can be created on-the-fly. For example, the mapping \"*\": \"review\" deploys all branches to the review environment. To have one environment per branch / ticket ID, you can add the review environment to autoCloneEnvironmentsFromSourceMapping, e.g. like this: \"review\": \"dev\". This will create individual environments (named e.g. review-123 or review-foobar), each cloned from the dev environment. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] autoCloneEnvironmentsFromSourceMapping: [ 'rel': 'dev', 'hotfix': 'prod', 'preview': 'dev' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] autoCloneEnvironmentsFromSourceMapping: [ 'preview': 'prod' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] autoCloneEnvironmentsFromSourceMapping: [ 'uat': 'prod' ] Each built-in stage (like odsComponentStageScanWithSonar) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsComponentStageScanWithSonar(context, [branch: 'production']) The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the sonar-project.properties file in the repository being built. If your SonarQube server edition allows to scan multiple branches (any commercial edition does), then this stage will automatically decorate pull requests in Bitbucket with feedback from SonarQube (if the PR already exists at the time of the Jenkins pipeline run). In debug mode, the sonar-scanner binary is started with the -X flag. If no sonar.projectVersion is specified in sonar-project.properties, it is set to the shortened Git SHA. Available options: Option Description branch Branch(es) to scan. This can be a comma separated list. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). requireQualityGatePass Whether to fail the build if the quality gate defined in the SonarQube project is not reached. Defaults to false. analyzePullRequests Whether to analyze pull requests and decorate them in Bitbucket. Turned on by default, however a scan is only performed if the branch property allows it. longLivedBranches Branch(es) for which no PR analysis should be performed. If not set, it will be extracted from branchToEnvironmentMapping of the context. The \"Snyk Security Scan\" stage performs two tasks: It uploads your 3rd party dependencies including their licenses for monitoring. Snyk will then notify developers about new vulnerabilities per email once they are reported to the Snyk Vulnerability Database. It analyses your 3rd party dependencies including their licenses and breaks the build if vulnerable versions are found. To get started, setup an organisation in snyk.io with exactly the same name as your ODS project name. Under \"Settings\", create a service account for this organisation and make a note of the displayed token. Edit your Jenkinsfile and add the Snyk stage: ) { context -> ... odsComponentStageScanWithSnyk(context, [snykAuthenticationCode: ]) ... } It is recommended to read your authentication token dynamically, e.g. from an environment variable or a credential in your Jenkins master. Available options: Option Description snykAuthenticationCode Required! Authentication token of a service account within your organisation. failOnVulnerabilities Whether to fail the build when vulnerabilities are found. Defaults to true. organisation Name of the Snyk organisation. Default to context.projectId. projectName Name of the Snyk project name. Default to context.componentId. buildFile Build file from which to gather dependency information. Defaults to build.gradle. branch Branch(es) to scan. This can be a comma separated list. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (). Defaults to . severityThreshold Severity threshold for failing. If any found vulnerability has a severity equal or higher to the threshold, the snyk test will return with a failure status. Possible values are low, medium, high. Defaults to low. Triggers (and follows) a build in the BuildConfig related to the repository being built. The resulting image is tagged with context.shortGitCommit. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Available options: Option Description resourceName Name of BuildConfig/ImageStream to use (defaults to context.componentId). imageTag Image tag to apply (defaults to context.shortGitCommit). buildArgs Pass build arguments to the image build process. imageLabels Pass labels which should be aded on the image. Each label will be prefixed with ext.. extensionImageLabels Extra image labels added into imageLabels buildTimeoutMinutes Timeout of build (defaults to 15 minutes). dockerDir Docker context directory (defaults to docker). openshiftDir Directory with OpenShift templates (defaults to openshift). tailorPrivateKeyCredentialsId Credentials name of the secret key used by Tailor (defaults to -cd-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector Selector scope used by Tailor (defaults to app=-). Only relevant if the directory referenced by openshiftDir exists. tailorVerify Whether Tailor verifies the live configuration against the desired state after application (defaults to false). Only relevant if the directory referenced by openshiftDir exists. tailorInclude Resource kind restriction used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve Paths to preserve in the live configuration (defaults to ['bc:/spec/output/imageLabels', 'bc:/spec/output/to/name']). Only relevant if the directory referenced by openshiftDir exists. tailorParams Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. Imports an image from another namespace. By default, the source image is identified using the commit which triggered the pipeline run. Available options: Option Description resourceName Name of ImageStream to use (defaults to context.componentId). sourceProject OpenShift project from which to import the image identified by resourceName. sourceTag Image tag to look for in the sourceProject (defaults to context.shortGitCommit). targetTag Image tag to apply to the imported image in the target project (defaults to sourceTag). Imports an image from another namespace if possible, otherwise execute the given closure. Example: odsComponentStageImportOpenShiftImageOrElse(context) { stage('Build') { // custom stage to build your application package } odsComponentStageBuildOpenShiftImage(context) } The stage takes the exact same options as odsComponentStageImportOpenShiftImage. Before running the image import, it checks whether the image (identified by the sourceTag) is present in a suitable project. This is the current target project, and potentially one or more specified by the pipeline option imagePromotionSequences. For example, if imagePromotionSequences is ['dev→test', 'test→prod'] (which is the default setting), then, given the current target environment is test, suitable environments are dev (based on dev→test), and test itself. If the image is not present in a suitable project, the given closure is executed. Using this \"stage\" allows you to avoid building a container image for the same Git commit multiple times, reducing build times and increasing reliability as you can promote the exact same image from one environment to another. Keep in mind that image lookup works by finding an image tagged with the current Git commit. If you merge a branch into another using a merge commit, the current Git commit will differ from the previously built image tag, even if the actual contents of the repository are the same. To ensure image importing kicks in, use the --ff-only option on git merge (this can also be enabled for pull requests in Bitbucket under \"Merge strategies\"). There are a few consequences when doing so, which should be kept in mind: No merge commit is created, which has the downside that you do not see when a PR was merged, and that the merge commit is a convenient way to find the associated PR. However, it has the upside that your Git history is not polluted by merge commits. Enforcing a fast-forward merge prevents you from merging a branch which is not up-to-date with the target branch. This has the downside that before merging, you may need to rebase your branch or merge the target branch into your branch if someone else updated the target branch in the meantime. While this may cause extra work, it has the upside that you cannot accidentally break the target branch (e.g. tests on your branch may work based on the outdated target branch, but fail after the merge). In summary, using git merge --ff-only provides safety, a clean history and allows to promote the exact same image between environments. Triggers (and follows) a rollout of the DeploymentConfig related to the repository being built. It achieves this by tagging the image built in odsComponentStageBuildOpenShiftImage with latest. This might already trigger a rollout based on an existing ImageTrigger. If none is set, the stage will start a manual rollout. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In this case, it is recommended to remove any image triggers to avoid duplicate rollouts (one when configuration changes due to a config trigger and one when the image is tagged to latest). In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Available options: Option Description resourceName Name of DeploymentConfig to use (defaults to context.componentId). imageTag Image tag on which to apply the latest tag (defaults to context.shortGitCommit). deployTimeoutMinutes Adjust timeout of rollout (defaults to 5 minutes). Caution: This needs to be aligned with the deployment strategy timeout (timeoutSeconds) and the readiness probe timeouts (initialDelaySeconds + failureThreshold * periodSeconds). deployTimeoutRetries Adjust retries to wait for the pod during a rollout (defaults to 5). openshiftDir Directory with OpenShift templates (defaults to openshift). tailorPrivateKeyCredentialsId Credentials name of the secret key used by Tailor (defaults to -cd-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector Selector scope used by Tailor (defaults to app=-). Only relevant if the directory referenced by openshiftDir exists. tailorVerify Whether Tailor verifies the live configuration against the desired state after application (defaults to false). Only relevant if the directory referenced by openshiftDir exists. tailorExclude Resource kind exclusion used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve Paths to preserve in the live configuration (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorParams Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. Triggers the upload of an artifact to Nexus. Implementation is based on https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api Available options: Option Description repositoryType default is the maven2 distributionFile default is ${componentId}-${tagversion}.tar.gz repository the nexus repository name, default is candidates for 'maven2' groupId default is the groupId on project level, or in case not set at all org.opendevstack.${projectId} for 'maven2' version default is the ${tagVersion} for 'maven2' artifactId default is the ${componentId} for 'raw' targetDirectory default is the ${projectId}","title":"Component Pipeline","component":"opendevstack","version":"3.x","name":"component-pipeline","url":"/opendevstack/3.x/jenkins-shared-library/component-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Git Workflow / Branch to Environment Mapping","hash":"_git_workflow_branch_to_environment_mapping","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Advanced","hash":"_advanced","id":6},{"text":"Agent customization","hash":"_agent_customization","id":7},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":8},{"text":"Deploying OpenShift resources from source code","hash":"_deploying_openshift_resources_from_source_code","id":9},{"text":"Interacting with Bitbucket","hash":"_interacting_with_bitbucket","id":10},{"text":"Skipping pipeline runs","hash":"_skipping_pipeline_runs","id":11},{"text":"Automatically cloning environments on the fly","hash":"_automatically_cloning_environments_on_the_fly","id":12},{"text":"Examples","hash":"_examples_2","id":13},{"text":"Stages","hash":"_stages","id":14},{"text":"odsComponentStageScanWithSonar","hash":"_odscomponentstagescanwithsonar","id":15},{"text":"odsComponentStageScanWithSnyk","hash":"_odscomponentstagescanwithsnyk","id":16},{"text":"odsComponentStageBuildOpenShiftImage","hash":"_odscomponentstagebuildopenshiftimage","id":17},{"text":"odsComponentStageImportOpenShiftImage","hash":"_odscomponentstageimportopenshiftimage","id":18},{"text":"odsComponentStageImportOpenShiftImageOrElse","hash":"_odscomponentstageimportopenshiftimageorelse","id":19},{"text":"odsComponentStageRolloutOpenShiftDeployment","hash":"_odscomponentstagerolloutopenshiftdeployment","id":20},{"text":"odsComponentStageUploadToNexus","hash":"_odscomponentstageuploadtonexus","id":21}]},"97":{"id":97,"text":"OpenDevStack provides a Jenkins Shared Library which offers two pipelines: A pipeline to build components, odsComponentPipeline. This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. As a user, you will mostly interface with this pipeline. A pipeline to orchestrate releases with multiple components, odsOrchestrationPipeline. It supports the orchestration of multiple repositories into a live application using the Release Manager quickstarter. A pipeline to provision quickstarters, odsQuickstarterPipeline. This pipeline is useful for quickstarter authors. The implementation was originally based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/jenkins-shared-library/index.html","titles":[{"text":"Background","hash":"_background","id":1}]},"98":{"id":98,"text":"Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsOrchestrationPipeline( debug: true, odsImageTag: '3.x' ) The release manager quickstarter comes with a Jenkinsfile that is already setup like this. The library automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside a release manager component’s metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. If you use this type ODS expects to find JUnit XML test results. If you do not have any test results the pipeline will fail. If you are deploying something where JUnit XML test results are not available consider using Repository Type: ods-service. This type designates ODS components designed for running some service. Examples include repositories based on the airflow-cluster quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. If no url parameter is provided for a repository configuration in a release manager component’s metadata.yml, the library will attempt to resolve it based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, our library automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. By default the shared library will rebuild all type ods components, no matter which ones changed. In order to allow partial building, that is based on changes one has done to the components, the following needs to be configured in metadata.yml allowPartialRebuild : true If one repository should always be rebuilt, even if partial rebuild is configured on root level, forceRebuild : true can be set at repository level, e.g. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B forceRebuild : true By default the shared library will always pull the agent image from the internal docker repository. Depending on the cluster node setup, this may decrease execution performance. In order to re-use loaded images, a knob in the Jenkinsfile configuration of the stage odsOrchestrationPipeline can be turned on: alwaysPullImage: true The library automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process by the release manager component. Note: when you configure a Jira service in the release manager component’s metadata.yml, our library expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the library will fall back to the document chapter templates located in your release manager component’s docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. The library supports the activation of various capabilities through the capabilities: field in metadata.yml. capabilities: - Zephyr The Zephyr for Jira capability currently supports: Reporting the result of a test execution to Zephyr for Jira This section will guide you through the \"environment promotion\" feature of the orchestration pipeline. It is assumed have the release manager quickstarter already provisioned and configured in your project. Typically, software is running in different environments, such as one environment for development (DEV), one for quality assurance (QA), and one for production (PROD - this is what end-users of the software consume). Developers work on on the software in the development environment, and once they finish one version (a state) of the software, they bring that version to the QA environment, and once this version is deemed production-ready it is brought to the production environment so that users can consume the new version. The environment promotion feature of the orchestration pipeline automates moving a certain version of the software from one environment to the next. Developers only have to tell the orchestration pipeline if a new version should be built (in DEV) and packaged as an installable \"release bundle\", or if an existing \"release bundle\" should be promoted to either the QA or the production environment. The environment promotion feature is part of the regular orchestration pipeline. Therefore, the promotion is executed from various Jenkins stages. It is not possible to change the process itself, but you can customize how the promotion happens exactly for each of your software components. The components of your software are defined in the repositories section of the metadata.yml file in the release manager repository. In order for the orchestration pipeline to know which state of each component should be promoted, it needs to have some knowledge about how version control in your repositories is organised. Everything depends on a user-supplied build parameter named version to the Jenkins pipeline. Other input parameters do not have any impact on source code lookup. When no version is given, the orchestration pipeline will default to WIP (work in progress). In this scenario, source code for each repository is taken from the configured branch in the metadata.yml file (defaulting to master if no branch is specified there). When a version is given, source code will be taken from a branch release/$VERSION in each repository. When this branch does not exist yet, it will be created (based on the configured branch in metadata.yml) by the pipeline. Subsequent runs with the same version input will take the source code from the created release branch - changes to the configured branch will have no effect on this version! This is by design: it allows some developers to work on new features on the mainline branch (typically master) while others polish the release branch. To this end, the orchestration pipeline allows to enable separate development environments per version to isolate changes in OpenShift resources (see section \"Environments\" further down). The orchestration pipeline applies the same branching rules to the release manager repository - it will create a release branch per version. There is one small caveat here: Jenkins only considers the Jenkinsfile from the branch which is configured for a pipeline. That means that for a pipeline setup against master, Jenkins will always execute the latest Jenkinsfile from master, even when you pass an explicit version to the pipeline. The orchestration pipeline will read e.g. the metadata.yml file from the matching release branch, but the Jenkinsfile itself will be from master. Usually, this should not be an issue as you should not make changes to the Jenkinsfile of the release manager repository anyway. A specific \"release bundle\" is identified by four data points: a version (as outlined above), a changeId, a build number and an environment. The version, changeId and environment are user-supplied input parameters to the release manager pipeline, the build number is calculated automatically. The changeId can be any string meaningful to the user, its value does not have any effect on the operation of the orchestration pipeline. The environment input variable (such as DEV) will be shortened to a single-letter token (e.g. D). Technically speaking, a release bundle is a certain state of the release manager repository and the state of each linked repository at that time. This state is identified by a Git tag. For example, a release bundle with version=1, changeId=1234, buildNumber=0 and environment=DEV is identified by the Git tag v1-1234-0-D. This tag is set on the release manager repository, and all repositories the metadata.yml refers to at this time. The orchestration pipeline assumes three \"conceptual\" environments: DEV, QA and PROD (with short token forms D, Q and P). Those environments are strictly ordered - a state should go from DEV to QA, and then from QA to PROD. To ensure that software progresses along the DEV → QA → PROD path, release bundles from environment DEV can only be installed into QA, and only a release bundle from QA can be installed into PROD. Installing a release bundle from DEV into PROD is not allowed. Each \"conceptual\" environment is mapped to an OpenShift namespace: DEV to $PROJECT-dev (e.g. foo-dev) QA to $PROJECT-test (e.g. foo-test. Note that it is NOT -qa!) PROD to $PROJECT-prod (e.g. foo-prod) Keep in mind that when you create a new project with OpenDevStack, you get three OpenShift namespaces: foo-dev (your DEV environment) foo-test (your QA environment - unfortunately not named -qa for historical reasons) foo-cd (where Jenkins runs and the pipelines such as the orchestration pipeline are executed) So while there is a corresponding namespace for DEV and QA, there is no namespace corresponding to the PROD environment out-of-the-box. This is because it is assumed that your PROD environment is likely on another cluster altogether. To create foo-prod on another cluster, you (or someone with appropriate rights) can run the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-project.sh. Then you need to tell orchestration pipeline two things: where the API of the external cluster is, and the credentials with which to access it. A typical configuration is: id: foo ... repositories: [ ... ] environments: prod: apiUrl: https://api.example.com credentialsId: foo-cd-foo-prod This assumes you have the API token credentials stored in a secret of type kubernetes.io/basic-auth named foo-prod in the foo-cd namespace. This secret needs to be synced with Jenkins (which is achieved by labeling it with credential.sync.jenkins.openshift.io=true). The stored credentials need to belong to a serviceaccount with rights to admin the foo-prod namespace. The easiest way to setup all of this is by running the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-sa-secret.sh, which makes use of the output of the create-target-project.sh ran earlier. It is also possible to have the PROD environment on the same cluster, then you simply create a foo-prod namespace next to foo-dev and foo-test, and allow the foo-cd:jenkins account to admin that project. In that case, you do not need to configure anything in metadata.yml as the default configuration assumes the same cluster. The opposite is also possible: you can configure the QA environment to be on a different cluster than the DEV environment - simply follow the instructions above to create a foo-test namespace. As mentioned in the \"Source Code Organisation\" section, the orchestration pipeline allows to enable separate development environments to isolate different versions. When this mode is enabled, pipeline runs with version=WIP will deploy into the $PROJECT-dev as usual, but pipeline runs with version=X will deploy into $PROJECT-dev-X. If $PROJECT-dev-X does not exist yet, it will be created on the fly (by cloning $PROJECT-dev with its serviceaccounts and rolebindings). For the creation to work, the jenkins serviceaccount running the pipeline needs to have self-provisioner permissions (which need to be granted by a cluster admin). To enable (up to three) separate development environments, you can set versionedDevEnvs to true in the config map of your Jenkinsfile, like this: def config = [debug: true, odsImageTag: 'x.x', versionedDevEnvs: true] Let’s start by assuming you have a project FOO with two components, X and Y. These components are defined under the repositories section in the metadata.yml file of the release manager repository. When you want to create a new release, you start the orchestration pipeline with input parameters - we will use version 1 and change ID 1234 in this example. The environment should be DEV. At the end of the pipeline run, you’ll have a release bundle identified by the tag v1-1234-0-D. This release can later be promoted as-is to QA. Once it is installed there, the same release bundle will be tagged with v1-1234-0-Q which can then be promoted to PROD (where it will be tagged with v1-1234-0-P). To create a release bundle, the orchestration pipeline will first trigger the build of each component. Then, it will export all resources in your OpenShift namespace ($PROJECT-$ENVIRONMENT, here foo-dev) belonging to the component. By convention, this means all resources labeled with app=$PROJECT-$COMPONENT (e.g. app=foo-x). Any resources without such a label will NOT be part of the release bundle. The exported resources are stored in a template.yml file (an OpenShift template) located in the openshift-exported folder within each component repository. Further, the container image SHA of the running pod is retrieved and stored in the file image-sha in the same folder. Once done, the orchestration pipeline will commit the two files, tag the commit with v1-1234-0-D and push to the remote. After this process has been done for all repositories, the same tag is also applied to the release manager repository. At this stage, the \"dev release bundle\" is complete and can be installed into QA. To trigger the installation of an existing release bundle, the user needs to supply a version and changeId which has previously been used to create a release bundle. In our example, supplying version=1, changeId=1234 and environment=QA will promote the release bundle identified by v1-1234-0-D to the QA environment and tag it with v1-1234-0-Q. Now that we have a \"QA release bundle\", we can promote it to PROD by supplying version=1, changeId=1234 and environment=PROD. As outlined above, a release bundle is essentially a state of all involved Git repositories. Each component repository contains two artifacts: a container image SHA OpenShift resource configuration (expressed in an OpenShift template) You cannot modify the image SHA (it is the result of what the component pipeline builds), but you can influence the OpenShift template. One reason to do so is that e.g. routes or ConfigMap values will need to differ between environments, and you need to tell the orchestration pipeline to parametrize the templates, and to supply the right values when the templates are applied in the target environment. When the orchestration pipeline exports configuration, it has no way to tell which values should actually be parameters. For example, you might have a route x.foo-dev.dev-cluster.com in DEV, and want this to be x.foo-test.dev-cluster.com in QA and x.foo-prod.prod-cluster.com in PROD. In the exported template, the value x.foo-dev.dev-cluster.com will be hardcoded. To fix this, you can create three files in the release manager repository, dev.env, qa.env and prod.env. These files may contain PARAM=value lines, like this: dev.env X_ROUTE=x.foo-dev.dev-cluster.com qa.env X_ROUTE=x.foo-test.dev-cluster.com prod.env X_ROUTE=x.foo-prod.prod-cluster.com All three files need to list the exact same parameters - otherwise applying the templates will fail. Once those param files are present, the orchestration pipeline will pick them up automatically. When you create a release bundle (in DEV), the param file is applied \"in reverse\", meaning that any concrete param value (on the right) will be substituted with the param key (on the left) in the template. Later when the template is applied in e.g. QA, the param keys are replaced with the concrete values from qa.env. It is necessary to have all the param files completed before you create a release bundle - if you want to change e.g. the value of a parameter in the prod.env file afterwards, you will need to create a new release bundle (as they are identified by Git tags, which do not move when you make new commits on the release branch). Next to parametrizing templates, you can also adjust how the export is done. As the export is using Tailor, the best way to customize is to supply a Tailorfile in the openshift-exported folder, in which you can define the options you want to set, such as excluding certain labels or resource types, or preserving specific fields in the live configuration. Please see Tailor’s documentation for more information. It is also possible to have different configuration files per environment if you suffix with the $PROJECT, e.g. Tailorfile.foo-dev. If you have component-specific parameters that differ between environments, a lightweight way to add these is via parameter files located in the openshift-exported folder matching the target project such as foo-dev.env, foo-test.env and foo-prod.env. These files are picked up automatically without special setup in a Tailorfile. In the process described above, the OpenShift configuration is exported and stored in the repositories in openshift-exported. This approach is easy to get started with, but it does have limitations: There is no defined state: whatever gets exported is what will be promoted, even if a certain configuration was meant to be only temporary or is specific to e.g. only the DEV environment. There is little traceability: as configuration is done through the OpenShift web interface, it is not known who did the change and when, and no chance for other team members to review that change. The parametrization of the exported template might produce incorrect results as it is just a string search-and-replace operation without further knowledge of the meaning of your configuration values. To overcome these issues, it is possible to author the OpenShift templates yourself instead of exporting them. The fastest way to start with this is by renaming the folder openshift-exported (containing the exported template) to openshift. From this point on, the orchestration pipeline will skip the export, and apply whatever is defined in the openshift folder. If you are new to writing OpenShift templates, please read https://github.com/opendevstack/tailor#template-authoring. When you author templates, you can also store the secrets in the param files GPG encrypted (.env.enc files). To achieve this, you need to create a private/public keypair for Jenkins, store the private key in a secret called tailor-private-key in your foo-cd namespace, and sync it as a Jenkins credentials item. Once the .env.enc files are encrypted against the public key, the orchestration pipeline will automatically use the private key to decrypt the params on-the-fly. Please see Working with Secrets for more information. For versioned, separate DEV environments, pulling images from the foo-cd namespace is not possible (because the foo-cd:jenkins serviceaccount does not have admin rights in foo-cd and therefore can’t grant access to it) Tagging means we are pointing to a concrete SHA of a Git repository. This enforces that no manual editing of exported config can happen between promotion to QA and promotion to PROD, which in effect forces everything to be parameterized properly. JIRA always triggers the master branch of the release manager, which means the Jenkinsfile is always taken from master (and NOT from the correct release branch - only metadata.yml etc. are read from the release branch) There is only one QA namespace, preventing to test multiple releases at the same time. The secret of the serviceaccount in the target cluster is known to the orchestration pipeline (as a Jenkins credential synced from OpenShift), therefore developers with edit/admin rights in the CD namespace have access to that secret Tags could manually be set / moved (this can be prevented in Bitbucket by administrators) Passwords etc. in the OpenShift configuration are stored in clear text in the export (this can be prevented by authoring templates and using a private key for encryption of param files) During export, the templates are parameterized automatically, but this is done using string search-and-replace and unwanted replacements might occur (this can be prevented by authoring the templates manually). By default, SonarQube scans (and reports) are only generated for the master branch of each component. As the orchestration pipeline automatically creates release branches for each version, no scans and reports are created on those. This can be changed by configuring sonarQubeBranch: '*'` in each component’s Jenkinsfile, however keep in mind that quality trends etc. will be mixed up if you use the free version of SonarQube as that version does not have support for multiple branches. An existing QA-tag cannot be deployed again in PROD. This has been intentionally designed that way as any change to PROD needs its unique change ID, which results in a new tag.","title":"Orchestration Pipeline","component":"opendevstack","version":"3.x","name":"orchestration-pipeline","url":"/opendevstack/3.x/jenkins-shared-library/orchestration-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Building of components & partial deployments","hash":"_building_of_components_partial_deployments","id":12},{"text":"Optimization of runtime performance","hash":"_optimization_of_runtime_performance","id":13},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":14},{"text":"Additional Capabilities","hash":"_additional_capabilities","id":15},{"text":"Zephyr for Jira","hash":"_zephyr_for_jira","id":16},{"text":"Environment Promotion","hash":"_environment_promotion","id":17},{"text":"What is the \"environment promotion\" feature?","hash":"_what_is_the_environment_promotion_feature","id":18},{"text":"Source Code Organisation","hash":"_source_code_organisation","id":19},{"text":"Release bundles","hash":"_release_bundles","id":20},{"text":"Environments","hash":"_environments","id":21},{"text":"Walkthrough","hash":"_walkthrough","id":22},{"text":"Customizing release bundle creation","hash":"_customizing_release_bundle_creation","id":23},{"text":"Authoring OpenShift configuration","hash":"_authoring_openshift_configuration","id":24},{"text":"Known Limitations","hash":"_known_limitations","id":25}]},"99":{"id":99,"text":"This pipeline allows to have a minimal Jenkinsfile for a quickstarter by providing all language-agnostic provision aspects. The goal is to duplicate as little as possible between quickstarters. This pipeline is NOT for building components. It is only to be used when you are authoring a (new) quickstarter itself. If you are building a component (an application), please refer to the component pipeline. Load the shared library in your Jenkinsfile like this: def odsNamespace = env.ODS_NAMESPACE ?: 'ods' def odsGitRef = env.ODS_GIT_REF ?: 'master' def odsImageTag = env.ODS_IMAGE_TAG ?: 'latest' library(\"ods-jenkins-shared-library@${odsGitRef}\") odsQuickstarterPipeline( imageStreamTag: \"${odsNamespace}/jenkins-agent-golang:${odsImageTag}\", ) { context -> odsQuickstarterStageCopyFiles(context) stage('Write go.mod') { dir(context.targetDir) { sh \"go mod init module example.com/foo/bar\" } } odsQuickstarterStageCreateOpenShiftResources(context) odsQuickstarterStageRenderJenkinsfile(context) odsQuickstarterStageRenderSonarProperties(context) } There are many built-in stages like odsQuickstarterStageCopyFiles that you can use, please see Stages for more details. odsQuickstgarterPipeline can be customized by passing configuration options like this: odsQuickstgarterPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10mi. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300mi. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. When you write custom stages inside the closure passed to odsQuickstgarterPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsQuickstgarterPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsQuickstgarterPipeline starts. cdUserCredentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. packageName Package name, retrieved from PACKAGE_NAME build parameter. group Group, retrieved from GROUP build parameter. odsNamespace Central namespace where images are located, retrieved from ODS_NAMESPACE build parameter. odsImageTag Image tag used for the agent pod, retrieved from ODS_IMAGE_TAG build parameter. odsGitRef Git ref, retrieved from ODS_GIT_REF build parameter. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. gitUrlHttp URL of the Git repository to push to. The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsQuickstgarterPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each built-in stage (like odsQuickstarterStageCreateOpenShiftResources) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsQuickstarterStageCreateOpenShiftResources( context, [directory: 'common/foobar'] ) Copies files from ${context.sourceDir}/files to ${context.targetDir}. There are no configuration options. Uses a set of OpenShift templates to create resources in OpenShift. The resources are created both in -dev and -test namespace. Tailor is used to apply the templates, and fed with a parameter file if it exists. Available options: Option Description directory Directory in which templates are located, defaults to ${context.sourceDir}/openshift. envFile Parameter file to use, defaults to ${context.sourceDir}/ocp.env selector Label selector to constrain tailor apply to, defaults to app=${context.projectId}-${context.componentId}. Processes a Jenkinsfile template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId @component_type@ ⇒ context.sourceDir @git_url_http@ ⇒ context.gitUrlHttp @ods_image_tag@ ⇒ context.odsImageTag @ods_git_ref@ ⇒ context.odsGitRef Available options: Option Description source Jenkinsfile template to use, defaults to Jenkinsfile.template target Jenkinsfile filename, defaults to Jenkinsfile Processes a sonar-project.properties template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId Available options: Option Description source sonar-project.properties template to use, defaults to sonar-project.properties.template target sonar-project.properties filename, defaults to sonar-project.properties Forks a component from ODS Available options: Option Description odsComponent the component from (github) ODS to fork","title":"Quickstarter Pipeline","component":"opendevstack","version":"3.x","name":"quickstarter-pipeline","url":"/opendevstack/3.x/jenkins-shared-library/quickstarter-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Advanced","hash":"_advanced","id":4},{"text":"Agent customization","hash":"_agent_customization","id":5},{"text":"Stages","hash":"_stages","id":6},{"text":"odsQuickstarterStageCopyFiles","hash":"_odsquickstarterstagecopyfiles","id":7},{"text":"odsQuickstarterStageCreateOpenShiftResources","hash":"_odsquickstarterstagecreateopenshiftresources","id":8},{"text":"odsQuickstarterStageRenderJenkinsfile","hash":"_odsquickstarterstagerenderjenkinsfile","id":9},{"text":"odsQuickstarterStageRenderSonarProperties","hash":"_odsquickstarterstagerendersonarproperties","id":10},{"text":"odsQuickstarterStageForkODS","hash":"_odsquickstarterstageforkods","id":11}]},"100":{"id":100,"text":"Table of Contents How to develop and run it locally How to deploy to OpenShift Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Consuming REST APIs via curl Pre Flight Checks Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Jenkins (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 11 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git To run it locally two spring profiles are provided: odsbox and odsbox_quickstarters`. The profile odsbox configures the application to connect to the ODS development environment (ODSBOX). Use this command to start it from the command-line: ./gradlew bootRun --args='--spring.profiles.active=odsbox,odsbox_quickstarters' Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 In order to test your changes in a real environment, you should deploy the provisioning app in OpenShift. To do so, you need to have an existing OpeDevStack project (consisting of -dev, -test and -cd namespaces). If you don’t have one yet, you can create one via the provisioning app in the central namespace. Now you can make use of the ods-provisioning-app quickstarter to set up the Bitbucket repository in your Bitbucket space. You can either register the quickstarter in the provisiong app in the central namespace, and then provision it from there; or use the script in https://github.com/BIX-Digital/ods-contrib/tree/master/quickstart-with-jenkins. Once you have provisioned the quickstarter, the first build will create a container image and place it in the ImageStream, using the commit SHA as image tag. To deploy this image in the central namespace, you have to tag that image into the central namespace. From your local machine, run: oc tag -dev/: ods/ods-provisioning-app: Then, in ods-configuration/ods-core.env, set PROV_APP_FROM_IMAGE to ods/ods-provisioning-app: and run the deployment using: make install-provisioning-app The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js). ODS 3.x contains a new single page app UI (based on Angular) as an experimental feature located in the client folder. In order to use the UI a feature flag frontend.spa.enabled must be set to true in application.proprties. Please refer to client README on how to setup local development for the frontend code. The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Basic Auth authentication is the recommended way to consume REST API. How to enable Basic Auth authentication is explained in Authentication Crowd Configuration. The following sample script could be used to provision a new project, add a quickstarter to a project or remove a project. It uses Basic Auth to authenticate the request. #!/usr/bin/env bash set -eu # Setup these variables # PROVISION_API_HOST=://: # BASIC_AUTH_CREDENTIAL=: # PROVISION_FILE=provision-new-project-payload.json PROV_APP_CONFIG_FILE=\"${PROV_APP_CONFIG_FILE:-prov-app-config.txt}\" if [ -f $PROV_APP_CONFIG_FILE ]; then cat $PROV_APP_CONFIG_FILE source $PROV_APP_CONFIG_FILE else echo \"No config file found, assuming defaults, current dir: $(pwd)\" fi # not set - use post as operation, create new project COMMAND=\"${1:-POST}\" echo echo \"Started provision project script with command (${COMMAND})!\" echo echo \"... encoding basic auth credentials in base64 format\" BASE64_CREDENTIALS=$(echo -n $BASIC_AUTH_CREDENTIAL | base64) echo echo \"... sending request to '\"$PROVISION_API_HOST\"' (output will be saved in file './response.txt' and headers in file './headers.txt')\" echo RESPONSE_FILE=response.txt if [ -f $RESPONSE_FILE ]; then rm -f $RESPONSE_FILE fi if [ ${COMMAND^^} == \"POST\" ] || [ ${COMMAND^^} == \"PUT\" ]; then echo echo \"create or update project - ${COMMAND^^}\" if [ ! -f $PROVISION_FILE ]; then echo \"Input for provision api (${PROVISION_FILE}) does not EXIST, aborting\\ncurrent: $(pwd)\" exit 1 fi echo \"... ${COMMAND} project request payload loaded from '\"$PROVISION_FILE\"'\"´ echo echo \"... displaying payload file content:\" cat $PROVISION_FILE echo http_resp_code=$(curl --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --data @\"$PROVISION_FILE\" \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) elif [ ${COMMAND^^} == \"DELETE\" ] || [ ${COMMAND^^} == \"GET\" ]; then echo \"delete / get project - ${COMMAND^^}\" if [ -z $2 ]; then echo \"Project Key must be passed as second param in case of command == delete or get!!\" exit 1 fi http_resp_code=$(curl -vvv --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project/$2\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) else echo \"ERROR: Command ${COMMAND} not supported, only GET, POST, PUT or DELETE\" exit 1 fi echo \"curl request successful...\" echo echo \"... displaying HTTP response body (content from './response.txt'):\" if [ -f ${RESPONSE_FILE} ]; then cat ${RESPONSE_FILE} else echo \"No request (body) response recorded\" fi echo echo \"... displaying HTTP response code\" echo \"http_resp_code=${http_resp_code}\" echo if [ $http_resp_code != 200 ] then echo \"something went wrong... endpoint responded with error code [HTTP CODE=\"$http_resp_code\"] (expected was 200)\" exit 1 fi echo \"provision project request (${COMMAND}) completed successfully!!!\" The PROVISION_FILE should point to a json file that defines the payload for the provision of a new project. This is an example: { \"projectName\": \"\", \"projectKey\": \"\", \"description\": \"project description\", \"projectType\": \"default\", \"cdUser\": \"project_cd_user\", \"projectAdminUser\": \"\", \"projectAdminGroup\": \"\", \"projectUserGroup\": \"\", \"projectReadonlyGroup\": \"\", \"bugtrackerSpace\": true, \"platformRuntime\": true, \"specialPermissionSet\": true, \"quickstarters\": [] } For the provisioning of a quickstarter set the command from POST to value PUT instead. Following an example of the PROVISION_FILE for quickstarter provisioning: { \"projectKey\":\"\", \"quickstarters\":[{ \"component_type\":\"docker-plain\", \"component_id\":\"be-docker-example\" }] } The provisioning of new project requires the creation of project in different servers (jira, bitbucket, confluence, openshift, etc…​) In case of an exception happens this process will be interrupted. This will leave the provision of a new project as incomplete. To avoid this situation a series of checks called \"Pre Flight Checks\" were implemented. These checks verify that all required conditions are given in the target system (jira, bitbucket, confluence) before provision a new project. Following some samples of response of the provision new project endpoint POST api/v2/project Pre Flight Check failed: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"UNEXISTANT_USER\",\"error-message\":\"user 'cd_user_wrong_cd_user' does not exists in bitbucket!\"}]} Pre Flight Check due an exception: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"EXCEPTION\",\"error-message\":\"Unexpected error when checking precondition for creation of project 'PROJECTNAME'\"}]} Pre Flight Check successfully passed and project was created: HTTP CODE: 200 OK { \"projectName\": \"MYPROJECT\", \"description\": \"My new project\", \"projectKey\": \"MYPROJECT\", ... } Failed Response due to exception after Pre Flight Checks succesfully passed: HTTP CODE: 500 Internal Server Error An error occured while creating project [PROJECTNAME ], reason [component_id 'ods-myproject-component106' is not valid name (only alpha chars are allowed with dashes (-) allowed in between. ] - but all cleaned up! The provision new project endpoint POST api/v2/project accepts a url parameter called onlyCheckPreconditions. By setting this parameter to true (POST api/v2/project?onlyCheckPreconditions=TRUE) only the Pre Flight Checks will be executed. This could be usefull for the development of new Pre Flight Checks or for integration scenarios. In this later case one could imagine to set this parameter to TRUE to verify all preconditions before creating a project. Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API","title":"Provisioning App: Internal architecture / Development","component":"opendevstack","version":"3.x","name":"architecture","url":"/opendevstack/3.x/provisioning-app/architecture.html","titles":[{"text":"How to develop and run it locally","hash":"_how_to_develop_and_run_it_locally","id":1},{"text":"How to deploy to OpenShift","hash":"_how_to_deploy_to_openshift","id":2},{"text":"Frontend Code","hash":"_frontend_code","id":3},{"text":"Backend Code","hash":"_backend_code","id":4},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":5},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":6},{"text":"Consuming REST APIs via curl","hash":"_consuming_rest_apis_via_curl","id":7},{"text":"Pre Flight Checks","hash":"_pre_flight_checks","id":8},{"text":"Response examples:","hash":"_response_examples","id":9},{"text":"Option \"onlyCheckPreconditions=TRUE\":","hash":"_option_onlycheckpreconditionstrue","id":10},{"text":"Link collection","hash":"_link_collection","id":11}]},"101":{"id":101,"text":"Table of Contents Quickstarters Permissions Project/Space types based on templates Custom permissions and group-to-project-role mappings Add Webhook Proxy URL to jira project properties based on project type Error Handling Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Basic Auth authentication Authentication to third party apps via technical users FAQ Available quickstarters can be provided in the container via /quickstarters/quickstarters.properties. In the context of OpenShift, this file is supplied by the ConfigMap quickstarters.properties. The quickstarters defined there will be displayed to the users in the UI when they modify an existing project. When the provisioning app is installed for the first time, a default set of quickstarters (from the ods-quickstarters repository) is seeded. As each installation can configure the available quickstarters differently, the quickstarters.properties ConfigMap is not updated automatically when updating ODS. A quickstarter needs to have two mandatory entries: quickstarters.properties jenkinspipeline.quickstarter..desc= jenkinspipeline.quickstarter..repo= For example: quickstarters.properties jenkinspipeline.quickstarter.be-java-springboot.desc=Backend - SpringBoot/Java jenkinspipeline.quickstarter.be-java-springboot.repo=ods-quickstarters This means that in order to provision the quickstarter, the provisioning app will start a Jenkins pipeline based on the Jenkinsfile located in the opendevstack/ods-quickstarters repository, in the folder be-java-springboot. The UI will display the quickstarter as Backend - SpringBoot/Java. Apart from the required properties, there are also optional properties: quickstarters.properties jenkinspipeline.[some-job-name].create-webhook -> whether a default webhook should be created for this repo or not (true by default) jenkinspipeline.[some-job-name].branch -> a branch differing from ods.git-ref property jenkinspipeline.[some-job-name].jenkinsfile -> a path to the Jenkinsfile differing from [some-job-name]/Jenkinsfile When the quickstarter properties are modified, the provisioning app needs to be restarted for the changes to have effect. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three special groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with tight read & write roles Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) Furthermore if you need to define default permission for openshift (e.g. to setup membership permission for cluster admins) you can add this to your application properties: jenkinspipeline.create-project.default-project-groups=ADMINGROUP= In case special permissions sets are defined this the default project groups will be appended to the lis of permissions sets. The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, Custom permission configuration makes possible to configure each Project type template with a specific permission-scheme-id on project creation. Any new Jira project of a specific project type will be then set with the same permission-schemed-id. Additionally, mappings of project roles to the special groups (defined above: admin, user and readonly group) have to be configured, so that the special groups are added to the jira project roles of the new project. These capabilities make possible for Jira Admin to define a main permission scheme that will be \"reused\" for every new project. Another big benefit is that release them from the manual task of mapping the special groups to the permission scheme project roles. To configure a project-template-name with a specific permission-schemed-id you need to add these properties to your configuration: jira.project-templates..name=UTest project template jira.project-templates..permission-scheme-id= if the permission-scheme-id is configured you will have to provide group-to-project-role mapping configuration. If a permission-schemd-id is defined, then the following project-to-* properties have to be configured. Otherwise the provisioning app will fail to start. Like the permission-scheme-id the value of these properties has to be in this case an existant project role id in Jira, that you will need to get from your Jira server in advance. jira.project-project-template-name.<>.role-mapping.project-role-for-admin-group= jira.project-project-template-name.<>.role-mapping.project-role-for-user-group= jira.project-project-template-name.<>.role-mapping.project-role-for-readonly-group= Another way to set a permission-scheme-id with the corresponding project-to-role-* mappings is by API call. You can define following properties in the payload of the create project API call: { ... \"specialPermissionSchemeId\": \"\" \"projectRoleForAdminGroup\": \"\", \"projectRoleForUserGroup\": \"\", \"projectRoleForReadonlyGroup\": \"\", ... } A given configuration will be overwritten by these payload properties. You will find more details about the provisioning app REST API in this section: Consuming REST APIs via curl. If no permission-scheme-id with the corresponding project-to-role-* mappings are provided neither by configuration nor in the create project payload, then the default behaviour will be applied, which in this case will create a new permission scheme as explained in the section Permissions. It is possible to configure the Provisioning App to add to jira project the Webhook Proxy URL as project property. Jira provides an REST API for this purpose (Jira Properties API) This functionality can be configured for each project type. To enable this you will need to: Enable this capability for a given project type add the a property like: jira.project.template.add-webhook-proxy-url-as-project-property.=true Define the jira endpoint as template by adding this property: jira.project.template.webhook-proxy-url-endpoint-template.=/api/2/project/%PROJECT_KEY%/properties/WEBHOOK_PROXY.URL These 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Define the jira endpoint payload as template that will be added to the set jira property endpoint call jira.project.template.webhook-proxy-url-payload-template.={\\\"WEBHOOK_PROXY.URL\\\", \\\"%PROPERTY_VALUE%\\\"} For the payload template also these 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false. There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Basic Auth Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence and Bitbucket is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. An example of plain oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link Alternatively if your identity provider is Azure AD, a configuration example is given in application-azure.properties application-azure.properties provision.auth.provider=oauth2 (1) provision.auth.provider.oauth2.user-info-uri=userInfo (2) (3) # Application ID (also called Client ID) spring.security.oauth2.client.registration.azure.client-id=> spring.security.oauth2.client.registration.azure.client-secret= # It's suggested the logged in user should at least belong to one of the below groups # If not, the logged in user will not be able to access any authorization controller rest APIs azure.activedirectory.user-group.allowed-groups=opendevstack-administrators,opendevstack-users (4) azure.activedirectory.environment=global-v2-graph azure.activedirectory.user-group.key=@odata.type azure.activedirectory.user-group.value=#microsoft.graph.group azure.activedirectory.user-group.object-id-key=id azure.activedirectory.tenant-id= (5) oauth2.user.roles.jsonpointerexpression=/claims/roles (6) oauth2.user.use-email-claim-as-username=true (7) (8) idmanager.url=https://login.microsoftonline.com idmanager.realm=${spring.security.oauth2.client.registration.azure.client-id} idmanager.disable-logout-from-idm=true (9) 1 configures oauth2 authentication provider 2 configure user info uri 3 registers in spring security azure oauth2 client id and secret 4 configure allow groups 5 register azure ad tenant 6 the application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 7 configure to use email claim as username 8 configure name of the ProvApp realm 9 instruct ProvApp to not logout from identity management provider This option can be enabled to activate basic auth as additional authentication when using crowd or oauth2 as authentication provider. To enable basic auth this properties needs to be configured: application-azure.properties provision.auth.basic-auth.enabled=true The basic auth authentication needs to connect to an identity manager to authenticate users. Currently only crowd is supported for this purpouse. If you have’ve chosen to use oauth2 as provider you can even enable basic auth to connect to crowd server. For that you will need to add these properties to your configuration: # crowd properties (needed for basic auth) crowd.local.directory=~/dev/temp crowd.application.name= crowd.application.password= crowd.server.url= crowd.cookie.domain= The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence and Bitbucket. The used credentials are read from a pair of properties. For Example, bitbucket.admin_password and bitbucket.admin_user properties are used for Bitbucket, confluence.admin_user and confluence.admin_password are used for Confluence, etc. application-oauth2.properties # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall() If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project. What is the default permission schema in Jira? the default permission schema in Jira is named Default Permission Scheme Which role is missing in Jira default permission schema if the project creator cannot access it? The default permission schema named Default Permission Scheme needs the role owner to be added to permission Browser Projects. Otherwise the project creator (role owner) will not be able to access the project.","title":"Provisioning App: Configuration Guide","component":"opendevstack","version":"3.x","name":"configuration","url":"/opendevstack/3.x/provisioning-app/configuration.html","titles":[{"text":"Quickstarters","hash":"_quickstarters","id":1},{"text":"Permissions","hash":"_permissions","id":2},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":3},{"text":"Custom permissions and group-to-project-role mappings","hash":"_custom_permissions_and_group_to_project_role_mappings","id":4},{"text":"Project type custom permissions scheme id configuration","hash":"_project_type_custom_permissions_scheme_id_configuration","id":5},{"text":"Project type group-to-project-role mappings","hash":"_project_type_group_to_project_role_mappings","id":6},{"text":"Overwriting custom permissions scheme id and group-to-project-role mappings per API call","hash":"_overwriting_custom_permissions_scheme_id_and_group_to_project_role_mappings_per_api_call","id":7},{"text":"Add Webhook Proxy URL to jira project properties based on project type","hash":"_add_webhook_proxy_url_to_jira_project_properties_based_on_project_type","id":8},{"text":"Error Handling","hash":"_error_handling","id":9},{"text":"Authentication Configuration","hash":"_authentication_configuration","id":10},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":11},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":12},{"text":"Basic Auth authentication","hash":"_basic_auth_authentication","id":13},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":14},{"text":"FAQ","hash":"_faq","id":15}]},"102":{"id":102,"text":"Table of Contents Basic idea & usage FAQ This application creates new OpenDevStack projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as Jira, Confluence, Bitbucket and Jenkins. An admin creates new ODS project. This in turn creates: a Jira Project (name based on project key) a Confluence Space (name based on project key) if OpenShift was selected - a Bitbucket Project (name based on project key). Within this project two default repositories are created: -oc-config-artifacts for all OpenShift YAML resources used during export/import as well as -design for any design artifacts (e.g. sketches) if OpenShift was selected - the required Openshift projects named -dev, -test and -cd. Internally those are created and configured using a Jenkins pipeline. A normal user creates new components by provisioning quickstarters. This can be done by picking the project to modify in the UI and then selecting the desired quickstarter. This creates: a Bitbucket repository within the chosen project named -. This repository has a webhook configured which will start a new Jenkins job each time a new commit is pushed. OpenShift resources based on the chosen quickstarter Why are three OpenShift projects created when I provision a new project? The -dev and -test namespaces are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the Component Pipeline In contrast to this, the -cd namespace hosts a project-specific instance of Jenkins Master and Webhook Proxy. When a build is triggered, builder pods (= deployments of Jenkins agents) are created in this project. This was a cautious design choice to give a project team as much power as possible when it comes to configuration of Jenkins.","title":"Provisioning Application","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/provisioning-app/index.html","titles":[{"text":"Basic idea & usage","hash":"_basic_idea_usage","id":1},{"text":"FAQ","hash":"_faq","id":2}]},"103":{"id":103,"text":"This agent is used to build Go code. The image is built in the global ods project and is named jenkins-agent-golang. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-golang:latest. Go 1.14.2 golangci-lint 1.25.0 Not (yet) Nexus package manager aware and no special HTTP Proxy configuration.","title":"Go Jenkins agent","component":"opendevstack","version":"3.x","name":"golang","url":"/opendevstack/3.x/jenkins-agents/golang.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"104":{"id":104,"text":"This agent is used to build Java code, through Maven or Gradle. The image is built in the global ods project and is named jenkins-agent-maven. It can be referenced in a Jenkinsfile with ods/jenkins-agent-maven. Nexus configuration for Maven & Gradle HTTP proxy awareness for both builders n/a","title":"Maven / Gradle Jenkins agent","component":"opendevstack","version":"3.x","name":"maven","url":"/opendevstack/3.x/jenkins-agents/maven.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"105":{"id":105,"text":"This agent is used to build Nodejs based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs10-angular. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs10-angular. Nexus configuration HTTP proxy awareness Angular CLI & Cypress dependencies pre-installed n/a","title":"Nodejs 10 - Angular Jenkins agent","component":"opendevstack","version":"3.x","name":"nodejs10-angular","url":"/opendevstack/3.x/jenkins-agents/nodejs10-angular.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"106":{"id":106,"text":"This agent is used to build / execute Python code. The image is built in the global ods project and is named jenkins-agent-python. It can be referenced in a Jenkinsfile with ods/jenkins-agent-python Python 3.8 pip virtualenv No special HTTP Proxy configuration.","title":"Python Jenkins agent","component":"opendevstack","version":"3.x","name":"python","url":"/opendevstack/3.x/jenkins-agents/python.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"107":{"id":107,"text":"This agent is used to build Scala code through SBT (Scala build tool). The image is built in the global ods project and is named jenkins-agent-scala. It can be referenced in a Jenkinsfile with ods/jenkins-agent-scala. SBT 1.1.6 HTTP proxy aware Nexus aware In case HTTP Proxy config is injected through environment variables (including NO_PROXY), Nexus configuration is disabled because of an SBT bug.","title":"Scala Jenkins agent","component":"opendevstack","version":"3.x","name":"scala","url":"/opendevstack/3.x/jenkins-agents/scala.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"108":{"id":108,"text":"This document describes how you can create your own quickstarter. At the same time, you should be able to find all information required to make changes to an existing quickstarter. Technically speaking, a quickstarter is just a Jenkins pipeline that fills an existing repository with files. How this is done, and what exactly is run in the pipeline is up to the quickstarter author. Typically though, the pipeline makes use of the quickstarter pipeline from the Jenkins shared library, which removes the need to write lots of boilerplate such as running a agent pod, cloning sources, copying files and pushing at the end to the component repository. The rest of the guide assumes that you are using this pipeline. As the Jenkins pipeline runs on a Jenkins agent image, you as the author need to pick either an existing agent image (see \"Jenkins agent Images\" in the navigation on the left), or create your own. The only technical requirement is to have a Jenkinsfile, but depending on the purpose of the quickstarter, a quickstarter should provide the following: A Jenkinsfile in the resulting repository. The best way to do this is by placing a Jenkinsfile.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderJenkinsfile. A sonar-project.properties file in the resulting repository. The best way to do this is by placing a sonar-project.properties.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderSonarProperties. Test setup, e.g. a framework such as JUnit. Test results need to be published in JUnit XML reporting file format. The results need to be stored at build/test-results/test or be configured to a different location. Code Coverage: tests should determine code coverage, and report this to SonarQube. Support for Nexus (pulling dependencies from there) HTTP proxy awareness Documentation. Both for the quickstarter itself (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/quickstarters/pages, following the quickstarter template) and any Jenkins agent image (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/jenkins-agents/pages, following the agent image template). If you write any custom stages in the quickstarter pipeline, you have access to the pipeline context. Usually, quickstarters are triggered through the provisioning app. However, in order to try a new quickstarter, or to try changes to an existing quickstarter which are made in a branch, you can use the quickstart-with-jenkins/run.sh script in the BIX-Digital/ods-contrib repository to provision a quickstarter without registering it with the provisioning app. See its help for usage. It is highly recommended to use the jenkins-agent-base image as a base image. Otherwise it is likely that some features of the shared pipeline don’t work. The jenkins-agent-base image in turn is based on another base image, e.g. provided by RedHat. The easiest way to get started is to look ath other agent images, such as Go and see how that implements its requirements. If you are just building an image for yourself, do the following: Copy the folder from one of the Jenkins agents to your local machine, and adjust as needed. For sure you’ll need to update the Dockerfile. Also, change the names in the ocp-config folder and delete the Tailorfile in there. Note that the BuildConfig points to a repository and a branch. You will need to push your sources to a matching location. Create the OpenShift resources in your *-cd project via Tailor, e.g. tailor -n foo-cd --param REPO_BASE=https://bitbucket.example.com/scm --param ODS_IMAGE_TAG=2.x …​ Start a build in the OpenShift web console. Reference the built image from your Jenkinsfile like this: imageStreamTag: 'foo-cd/jenkins-agent-bar:latest' If you want to contribute your Jenkins agent image to OpenDevStack, make sure to add documentation according to the agent image template.","title":"Authoring Quickstarters","component":"opendevstack","version":"3.x","name":"authoring-quickstarters","url":"/opendevstack/3.x/quickstarters/authoring-quickstarters.html","titles":[{"text":"Creating / Modifying a quickstarter","hash":"_creating_modifying_a_quickstarter","id":1},{"text":"Creating / Modifying a Jenkins agent image","hash":"_creating_modifying_a_jenkins_agent_image","id":2}]},"109":{"id":109,"text":"Use this quickstarter when you want to use nginx server wrapped within OpenResty dynamic web platform. With this quickstarter you can run many different lightweight server implementations like API gateways and HTTP/TCP/UDP reverse proxies. ├── docker - Contains Dockerfile for the build │ ├── lua - Directory for custom Lua modules │ │ └── server-error.lua - Example of server error response module with Lua │ ├── Dockerfile - Definition of your nginx gateway container │ ├── entrypoint.sh - Enables runtime configurations and runs openresty │ └── nginx.conf - The nginx configuration ├── Jenkinsfile - Contains Jenkins build configuration ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager OpenResty ODS Jenkins Shared Library Simply start to configure your nginx.conf to fit your needs. Also, you can develop and/or use different Lua modules. In order to route/proxy to services in the same namespace you do not need to define environment variables for their ports and/or hosts. OpenShift already loads them into the container’s environment by following a convention like _SERVICE_HOST and _SERVICE_PORT. Please, follow the example provided and comments in the nginx.conf file. One can add official Lua modules by using opm. In the following code snipped one can see how to add an official Lua module through docker build stage. Inside your Dockerfile: RUN opm install zmartzone/lua-resty-openidc Then, one can load such module dependency in new modules like: local http = require(\"resty.openidc\") lua-resty-openidc module is already provided with the default Dockerfile. Lua integration in nginx requires following the Directives provided in its architecture. Notice the importance of the execution order of the directives. Most of the directives require being defined inside your server locations. See next some possibilities one can make use of 1 - Managing access with access_by_lua_block With this directive one can integrate with Identity Providers via different auth/z standars, such as simple HTTP Basic Auth, OAuth, OIDC: access_by_lua_block { require(\"your-auth-module\").authenticate() } 2 - Managing content with content_by_lua_block This directive handles content definition. See the provided server-error.lua module example; by loading the right ENV variables in nginx.conf, you can add in your error location block a custom server error handling: location = /50x.html { content_by_lua_block { require(\"server-error\").make_error() } } 3 - Handle incoming requests with rewrite_by_lua_block One can also make use of the rewrite directive, for example, for filtering/rewriting incoming requests coming from your clients: rewrite_by_lua_block { require(\"filter-requests-headers\").run_filter() } 4 - Handle body responses with body_filter_by_lua_block Filter the body responses comming from your Backend services. For example, one could filter any error response, so to assure filtering stack traces from a JSON object response when running on production: body_filter_by_lua_block { require(\"filter-error-response\").filter_stack_traces() } There are two steps: Build the container image. Deploy. This quickstarter uses jenkins-agent-base N/A","title":"Backend - nginx (be-gateway-nginx)","component":"opendevstack","version":"3.x","name":"be-gateway-nginx","url":"/opendevstack/3.x/quickstarters/be-gateway-nginx.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Routing to your services","hash":"_routing_to_your_services","id":5},{"text":"Adding offical Lua modules","hash":"_adding_offical_lua_modules","id":6},{"text":"Using Lua modules","hash":"_using_lua_modules","id":7},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":8},{"text":"Builder agent used","hash":"_builder_agent_used","id":9},{"text":"Known limitations","hash":"_known_limitations","id":10}]},"110":{"id":110,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. This quickstarter uses Golang builder agent. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"3.x","name":"be-golang-plain","url":"/opendevstack/3.x/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"111":{"id":111,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 8 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). Under the hook this quickstarter runs the spring boot cli init command. The quickstarter uses the latest available spring boot cli version to generate the spring boot project. This is implemented in the script init.sh (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project will be generated and pushed to your git repository. The generated project requires java 8 and include the required gradle build and wrapper artifact. The generated spring boot project contains following folders: src (maven based java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,jersey,data-jpa,h2,lombok,data-rest,restdocs,security\"), which are defined in the script init.sh (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 8 or later version is required to run gradlew and compile java classes. The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. This quickstarter uses Maven builder agent Jenkins builder agent. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"3.x","name":"be-java-springboot","url":"/opendevstack/3.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":11},{"text":"Builder agent used","hash":"_builder_agent_used","id":12},{"text":"Known limitations","hash":"_known_limitations","id":13}]},"112":{"id":112,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter is simmple WEB-server written on Python using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── run.sh - This bash script solves issue with permissions for a container user ├── src │ ├── main.py - This file is the main entry point in the project. │ └── requirements.txt - This file contains a list of required Python modules to run application ├── tests │ ├── __init__.py │ ├── main_test.py - Unit testing src/main.py │ ├── pytest.ini - pytest configuration file │ └── requirements.txt - required Python modules for the Test Suite and IDE integration ├── .coveragerc - Coverage configuration file ├── metadata.yml - Component metadata ├── mypy.ini - mypy configuration file ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - This file contains SonarQube configuration settings Python 3.8 gunicorn flask pytest mypy flake8 The project is production ready when deployed in OpenShift thanks to gunicorn. It is recommended when you are developing a Python project to use separated environments. For this purpose usually one can use virtualenv package. # Command install virtualenv package (run only once) pip install virtualenv # Creates virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) virtualenv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r src/requirements.txt # Start your application python src/main.py The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: pip install -r tests/requirements.txt Lint - Runs mypy and flake8 for increasing code quality: mypy src flake8 --max-line-length=120 src Test - Runs pytest and generates xUnit and code coverage reports: cd src/ python -m pytest --junitxml=tests.xml --cov-report term-missing --cov-report xml --cov=. ../tests/ Build - Builds the application: copies src folder into docker/dist folder. This quickstarter uses Python builder agent Jenkins builder agent. NA","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"3.x","name":"be-python-flask","url":"/opendevstack/3.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"113":{"id":113,"text":"This is a Play Framework 2.8.0 quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an reactive Web Application / REST API based on the Scala Language. An example Play Web Application is generated with a Controller and some tests. . ├── Jenkinsfile ├── app │ ├── controllers │ │ └── HomeController.scala │ └── views │ ├── index.scala.html │ └── main.scala.html ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ ├── messages │ └── routes ├── docker │ └── Dockerfile ├── project │ ├── build.properties │ ├── plugins.sbt ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── main.js │ └── stylesheets │ └── main.css ├── sonar-project.properties ├── test │ └── controllers │ └── HomeControllerSpec.scala └── .scalafmt.conf This project is generated by SBT using SBTs template generation via the new command. The template used is an adapted version of the official Play Scala Seed Template. It will generate a Play Scala project using version 2.8.0 of Play with Scala version 2.13.1. It uses the logstash-logback-encoder to output logmessages in logstash format. It uses Scalafmt to check/format the source files consistently. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing Or run for running locally in development mode with continous compiling. The application will be accessible under http://localhost:8080 The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - checks source files formatting, runs the tests and builds and copies the artifacts for creating the docker image to the docker directory. This quickstarter uses the Scala Jenkins agent. NA","title":"Backend Scala Playframework Quickstarter (be-scala-play)","component":"opendevstack","version":"3.x","name":"be-scala-play","url":"/opendevstack/3.x/quickstarters/be-scala-play.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"114":{"id":114,"text":"This is a node (v10) quickstarter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains a basic setup for Docker, Jenkins, SonarQube and OpenShift. The package json is generated by simply using npm init -y, while the tsconfig is generated using tsc --init --skipLibCheck --outDir \"./dist\". The dependencies mentioned below are added to plain package.json file. On top of that, test, build and start script commands are customized to get your node/express application up and running with typescript. ├── Jenkinsfile - Contains Jenkins build configuration ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── sum.ts - Sample function │ ├── index.ts - Entrypoint, This runs first ├── __test__ │ ├── sum.spec.ts - Sample test ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration Express (^4.17.1) Jest (^26.0.0) for Unit Testing Typescript (^3.9.5) On top of the mentioned frameworks above, we use libraries: Jest Junit (^10.0.0) @types/node (^14.0.13) When you push your code, your runtime and test code will be compiled using node v10. After deployment the compiled code also runs in node v10. If you developed your code and tests using a different node version locally, this might cause some problems. This is why we made the tsconfig.json file to be compatible with node v10. So bear in mind that any changes to compiler options might result in compilation and runtime errors. Here are our related changes to tsconfig.json file below: \"compilerOptions\": { \"lib\": [\"es2018\"], \"module\": \"commonjs\", \"target\": \"es2018\" } npm install forms the project root to install all the dependencies npm run build transpiles the typescript code to /dist folder npm run start starts the node server npm run test runs tests located under /dist folder, prints the jest output under /build folder and reports test coverage. The report located under /coverage_output folder is then picked by Sonarqube. The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command is executed to build the application and then the build is copied to the docker/dist folder. Unit Testing : npm run test command is executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"3.x","name":"be-typescript-express","url":"/opendevstack/3.x/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Libraries","hash":"_libraries","id":4},{"text":"Node version","hash":"_node_version","id":5},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":6},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"115":{"id":115,"text":"Use this quickstarter when you want to start from a plain Dockerfile only, without any framework on top. A good usecase here is a Dockerfile you found on GitHub which you want to run with OpenDevStack features, or that you need to \"OpenShiftify\", by setting an (non-root) execution user, etc. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - SonarQube Configuration None, except for the ODS jenkins shared library. Amend the generated Dockerfile as needed. Whatever is in the /docker folder will be passed to oc start build as the docker context. You can add other files to that context as needed: def stageBuild(def context) { stage('Build') { // copy any other artifacts, if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } In case you want to run unit tests, you can add a corresponding statement to stageUnitTest: def stageUnitTest(def context) { stage('Unit Test') { // add your unit tests here, if needed } } Assuming your component contains source code you want to have delivered by the Release Manager, the execution of tests and the reporting of their results is mandatory. For this, your component will have to…​ define name, description, supplier, and version metadata for your component in files/release-manager.yml place the test results in the xUnit XML format in a path known to context.testResults (defaults to build/test-results/test) provide these test results to the Jenkins JUnit plugin via its junit step function. Feel free to look out for examples in our existing quickstarters, such as be-java-springboot. none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"3.x","name":"docker-plain","url":"/opendevstack/3.x/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"116":{"id":116,"text":"Provision a shared Jupyter Notebook within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile ├── docker │ ├── Dockerfile │ ├── jupyter_notebook_config.json │ ├── requirements.txt │ └── run.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.8 Jupyter The quickstarter sets up two pods in OpenShift. The ds-jupyter-notebook instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-agent-base Consider if sufficient computing resources can be provided by the OpenShift cluster.","title":"Data Science Jupyter Notebook","component":"opendevstack","version":"3.x","name":"ds-jupyter-notebook","url":"/opendevstack/3.x/quickstarters/ds-jupyter-notebook.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"117":{"id":117,"text":"This boilerplate enables data scientists to develop, serve, version models within a CI/CD pipeline hosted on OpenShift with the goal in mind that one does not have to take care/change much of the needed pipeline and infrastructure. For pull requests and discussion regarding direction, please pull in @hugowschneider, @sklingel and @gerardcl The boilerplate provides a two pod setup in OpenShift, one pod for training service and one pod for prediction service. From one Dockerfile, under docker folder, both training and prediction services are built. If required, one can edit it in order to provide different dependency management workflows for each service. The training service provides a pod that is able to reproduce/retrain the model that is developed in the current commit either locally on OpenShift or execute the training on a remote linux system using ssh. The training process is wrapped into a flask server to be able to monitor and possible restart the training process. Moreover, the training service offers an endpoint for downloading the created model afterwards. Additionally, unittests and integration tests are executed on the training pod, in order to not depend on operating dependencies in the jenkins agent. The prediction service provides a simple flask service for getting new predictions out of your model by making json posts to the prediction REST endpoint. The prediction service is already built with the newly trained model from the training pod. The Jenkinsfile organizes the correct succession of spinning up the training, executing it and starting the new deployment of the prediction service. Additionally, it triggers unittest ensuring the code is functionally before a new training process is started. Moreover, integration tests are run against the reproduced model wrapped into the prediction REST endpoint to ensure that the reproduced model (performance) behaves as expected also when wrapped in the flask service. External files that are needed either for building your model or docker images are stored under resources. For demonstration purposes a training and test csv file is stored in resources. This approach has to be reevaluated for each new use case, considering data size and confidentiality. The src folder contains the infrastructure coded needed for providing the services in OpenShift in src/services. Custom code for developing your prediction service is organized in the src/model package. In the (common) src/requirements.txt you can specify python dependencies for training, prediction and tests. To keep it simple, there is only one requirements.txt for both pods. The test directory mirrors the structure of the src, either for unittests or integration tests using the python unittest framework. To run your own customized models there is usually no need to change either the Jenkinsfile, OpenShift setup or the training and prediction microservices. Custom model code will go under src/model and can be organized in custom packages like showcased with the src/model/data_cleaning and src/model/feature_prep. In general, it can be organized as the users prefers. There are no further restrictions for developing the in the style you want, for the exception to provide the mandatory functions and attributes in src/model/model_wrapper.py for the `ModelWrapper class: prep_and_train: is called by the train script (which one can customize) and expects a pandas dataframe (current implementation). The train script is called by the training service prep_and_predict: is called by the predict endpoint service from the prediction service. It consumes the json post as a dictionary. The predict endpoint executes prep_and_predict. Good practice: source_features, specifying the name that are used a input for the model. This features include really the source columns from which also more complicated features are derived within the model boundaries Good practice: target_variable, name of the variable that should be used as target for a possible supervised approach. As well as the train function in the src/trainer.py. It specifies how the model should be trained. Make sure your specified all dependencies in the requirements.txt. It is recommended to develop your code against the python interpreter & dependencies specified in the docker images. This can be easily achieved, either by using an IDE that supports that (e.g. PyCharm) or by doing manually in the docker container. In order to ensure complete reproducibility, in case train and/or test data can’t be committed to a git repository due to size or confidentiality/data privacy considerations, data versioning can be achieved using the built in dvc data version capabilities.` Moreover, technical user account is needed so that the CI/CD pipeline is able to pull the data dependencies from the remote data versioning repository. Do the following steps in order to make use of the data versioning capabilities Initialize the quickstarter repository as a dvc repository: dvc init Setup the a remote repository on a remote ssh machine, e.g. Data Lake dvc remote add ssh://:/ Configure authentification. For local development you can set your own user account, assuming it has access to or use a technical user account. dvc remote modify user and set the prompt for password, so that you don’t commit your password to the repository dvc remote modify ask_password True Start adding files that should be tracked by data versioning dvc add this will create a new file with meta information about called .dvc. This meta file needs to be tracked with git, so that it is ensured that each git commit is linked with a specific data version git add .gitignore .dvc Modify your train() and potentially the integration tests to pull the data dependencies from the remote repository. A helper class is provided in src/services/remote/dvc/data_sync.py that can be used as follows: from services.infrastructure.remote.dvc.data_sync import DataSync syncer = DataSync(dvc_data_repo, dvc_ssh_user, dvc_ssh_password) syncer.pull_data_dependency(file_name) Commit your code and push the data versioned files to the remote repository git commit dvc push -r git push In order for a successful Jenkins build, the following environment variables need to be set in the training pod deployment: DSI_DVC_REMOTE, DSI_SSH_USERNAME, `DSI_SSH_PASSWORD An example implementation of a custom model is given in src/model, to demonstrate how to organize custom code. A Logistic Regression using scikit-learn with some (unnecessary) feature cleaning and engineering is trained on the iris data flower set. Iris flower data set. (n.d.). In Wikipedia. Retrieved January 7, 2019, from https://en .wikipedia.org/wiki/Iris_flower_data_set Training Build Config name: -training-service variables: None Deployment Config name: -training-service variables: DSI_EXECUTE_ON: LOCAL DSI_TRAINING_SERVICE_USERNAME: auto generated username DSI_TRAINING_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Prediction Build Config name: -prediction-service variables: None Deployment Config name: -prediction-service variables: DSI_TRAINING_BASE_URL: http://-training-service..svc:8080 DSI_TRAINING_SERVICE_USERNAME: username of the training service DSI_TRAINING_SERVICE_PASSWORD: password of the training service DSI_PREDICTION_SERVICE_USERNAME: auto generated username DSI_PREDICTION_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Remote training allows you to run your training outside of the OpenShift training pod on a linux node using a ssh connection. A conda environment is installed in the remote node and the requirements specified in src/requirements.txt are installed. Once this step is finished the training is executed on that node and the trained model is transferred back to the training pod. To enable remote training set the DSI_EXECUTE_ON variable in OpenShift to SSH and specify the connection information in the environment variables: DSI_SSH_HOST, DSI_SSH_PORT, DSI_SSH_USERNAME and DSI_SSH_PASSWORD. / : Return all information about the training service /start : Starts the training. /finished : Checks if the current traning task is finished /getmodel : Download the latest trained model /predict : Return all information about the training service payload: Should be a json containing the data necessary for prediciton. The payload is not pre defined, but it is defined by the trainined model There is not need for any kind of payload in all endpoints. Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_EXECUTE_ON Where the train should be executed LOCAL, SSH DSI_TRAINING_SERVICE_USERNAME Username to be set as default username for accessing the services string, required DSI_TRAINING_SERVICE_PASSWORD Password to be set as default password for accessing the services string, required Following variables are applicable if DSI_EXECUTE_ON=SSH DSI_SSH_HOST SSH host name where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) host names or ip addresses DSI_SSH_PORT SSH host port where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) port numbers (Default: 22) DSI_SSH_USERNAME SSH username for remote execution string\\ DSI_SSH_PASSWORD SSH password for remote execution string DSI_SSH_HTTP_PROXY HTTP proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_SSH_HTTPS_PROXY HTTPS proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_DVC_REMOTE Name of the dvc remote repository that has been initialized with dvc string Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_TRAINING_BASE_URL The base url where the prediction service should get the model from url (e.g. https://training.OpenShift.svc DSI_TRAINING_SERVICE_USERNAME Username of the training service string, required DSI_TRAINING_SERVICE_PASSWORD Password of the training service string, required DSI_PREDICTION_SERVICE_USERNAME Username to be set as default username for accessing the service string, required DSI_PREDICTION_SERVICE_PASSWORD Password to be set as default password for accessing the service string, required The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Prepare build Sonarqube checks Build training image Deploy training pod Unittests Execute/reproduce training either on openshift pod or in ssh remote machine Integration test against the newly trained model wrapped in the flask /prediction endpoint Build prediction image Deploy prediction service jenkins-agent-python Python 3.8 Python Flask 1.1.2 Not ready for R models yet In the case of building the docker image from behind a proxy and encountering certificate issues, adding a -k to the curl command can mitigate that, consider however the implications of disabling certificate Consider moving to ssh remote server training, if you expect high and long computational load during training phase. It might cause unnecessary stress on the openshift cluster, otherwise.","title":"Data Science Industrialization Boilerplate","component":"opendevstack","version":"3.x","name":"ds-ml-service","url":"/opendevstack/3.x/quickstarters/ds-ml-service.html","titles":[{"text":"Basic Setup","hash":"_basic_setup","id":1},{"text":"Container services","hash":"_container_services","id":2},{"text":"Jenkins","hash":"_jenkins","id":3},{"text":"External Files","hash":"_external_files","id":4},{"text":"src - the heart of your service","hash":"_src_the_heart_of_your_service","id":5},{"text":"test","hash":"_test","id":6},{"text":"How to Code Your Own Models","hash":"_how_to_code_your_own_models","id":7},{"text":"How to Develop your Model Locally","hash":"_how_to_develop_your_model_locally","id":8},{"text":"Data Versioning","hash":"_data_versioning","id":9},{"text":"Example & Example Dataset","hash":"_example_example_dataset","id":10},{"text":"Structure of the quick starter","hash":"_structure_of_the_quick_starter","id":11},{"text":"Remote Training","hash":"_remote_training","id":12},{"text":"Endoints","hash":"_endoints","id":13},{"text":"Training Endpoint","hash":"_training_endpoint","id":14},{"text":"Prediction Endpoint","hash":"_prediction_endpoint","id":15},{"text":"Environment Variables for training","hash":"_environment_variables_for_training","id":16},{"text":"Environment Variables for prediction","hash":"_environment_variables_for_prediction","id":17},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":18},{"text":"Builder agent used","hash":"_builder_agent_used","id":19},{"text":"Frameworks used","hash":"_frameworks_used","id":20},{"text":"Known limitions","hash":"_known_limitions","id":21}]},"118":{"id":118,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── docker - This folder contains Docker configuration settings and main R Shiny app │ ├── Dockerfile │ └── app.R ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-agent-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"3.x","name":"ds-rshiny","url":"/opendevstack/3.x/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"119":{"id":119,"text":"cypress e2e testing quickstarter project This is a cypress e2e testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile ├── README.md ├── files │ ├── README.md │ ├── build │ │ ├── integration │ │ │ └── main.spec.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── cypress.json │ ├── fixtures │ │ └── example.json │ ├── integration │ │ └── main.spec.ts │ ├── package.json │ ├── plugins │ │ └── index.js │ ├── support │ │ ├── commands.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tslint.json ├── init.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager This project is generated by Angular CLI cypress TypeScript Run command npm install in project directory to install npm packages Run npm run e2e to execute the end-to-end tests via cypress against the test instance of the front end Run npm run watch to develop the e2e test. The tests will automatically rebuild and run, if you change any of the source files. The test will run against a local instance of the front end, e.g. localhost:4200. This destination is configurable in cypress.json. Provide credentials for a test user by defining them in a file called secrets.json inside the base directory. This file should have the following format: { \"e2e\": { \"testUserName\": \"User Name\", \"testUserPassword\": \"xxxx\" } } Please note: secrets.json is mentioned in .gitignore to prevent it from being added to version control. Please keep it this way. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there is the following stage: stageTest - Lint the TypeScript code by running npm install and npm run lint, and transpiles it to JavaScript and run the tests with the npm run build command. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. For now the URL of the front end instance to test is hard-coded inside the package.json file. There should be a better solution for handing this over. It is also possible to run npm run e2e-at with an additional parameter, e.g. npm run e2e-at https://domain.com.","title":"End-to-end tests with cypress (e2e-cypress)","component":"opendevstack","version":"3.x","name":"e2e-cypress","url":"/opendevstack/3.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"120":{"id":120,"text":"spock, geb and unirest e2e testing quickstarter project This is a spock, geb and unirest e2e testing project quickstarter with basic setup for Jenkins, SonarQube and Gradle. . ├── Jenkinsfile ├── README.md ├── sonar-project.properties ├── src │ ├── test │ │ └── acceptance │ │ │ └── groovy │ │ │ │ └── DemoAcceptanceSpec.groovy │ │ │ └── java │ │ │ └── DemoAcceptanceTest.java │ │ └── installation │ │ │ └── groovy │ │ │ │ └── DemoInstallationSpec.groovy │ │ │ └── java │ │ │ └── DemoInstallationTest.java │ │ └── integration │ │ │ └── groovy │ │ │ │ └── DemoIntegrationSpec.groovy │ │ │ └── java │ │ | └── DemoIntegrationTest.java │ │ └── resources │ │ └── application.properties │ │ └── GebConfig.groovy │ │ └── SpecHelper.groovy ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── build.gradle ├── gradlew └── gradlew.bat The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. This project is generated by Gradle spock geb unirest Run command gradlew test in project directory to execute the end-to-end tests via spock/geb against the Google Home page and demo jUnit 5 tests. You will see the results inside a new folder 'build' in project directory. . └── build └── test-results ├── acceptance-groovy │ └── TEST-DemoAcceptance.xml ├── acceptance-java │ └── TEST-DemoAcceptanceTest.xml ├── installation-groovy │ └── TEST-DemoInstallation.xml ├── installation-java │ └── TEST-DemoInstallationTest.xml ├── integration-groovy │ └── TEST-DemoIntegration.xml └── integration-java └── TEST-DemoIntegrationTest.xml You can see how a Java Junit 5 test are developed showing the Demo*Test.java files. You can see how a Groovy Spock/Geb test are developed showing the Demo*Spec.groovy files. The url to test with Geb is configured in the property config.application.url inside application.properties Inside GebConfig.groovy you could change the default navigator (CHROME) The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile.template, there is the following stage: stageTest - Run the programed e2e test with this order: installation-java installation-groovy integration-java integration-groovy acceptance-java acceptance-groovy All the results are stashed and published through Jenkins jUnit publisher. This quickstarter uses Maven builder agent Jenkins builder agent. NA","title":"End-to-end tests with Spock, Geb and Unirest (e2e-spock-geb)","component":"opendevstack","version":"3.x","name":"e2e-spock-geb","url":"/opendevstack/3.x/quickstarters/e2e-spock-geb.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Gradle Support","hash":"_gradle_support","id":3},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":4},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":5},{"text":"Frameworks used","hash":"_frameworks_used","id":6},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":7},{"text":"Customization - how do you start to configure your test","hash":"_customization_how_do_you_start_to_configure_your_test","id":8},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"121":{"id":121,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json This project is generated by Angular CLI Angular CLI Angular Typescript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: stageBuild - Builds the application by running npm install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. This will also create test coverage analysis data which will then be transfered to SonarQube during odsComponentStageScanWithSonar stageLint - Runs ng lint profiler by running command npm run lint. odsComponentStageScanWithSonar - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. Please note: By default the applciation is always build as full production build including all sorts of optimizations. In addition source maps will be added except for builds that are triggered from master. This can be changed by configuring (additional) build configurations within angular.json and by using them via stageBuild or package.json. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"3.x","name":"fe-angular","url":"/opendevstack/3.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"122":{"id":122,"text":"Ionic quickstarter project This quickstarter generates an Ionic 3 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/Typescript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. It scaffolds a tabbed app containing 3 basic pages (home, about and contact). . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── config - This folder contains Webpack and sass configuration settings ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── resources - This folder contains resources by platform ios, android ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.ts │ │ ├── app.html │ │ ├── app.module.ts │ │ ├── app.scss │ │ └── main.ts │ ├── assets │ ├── environments │ │ ├── environment.dev.ts | | |__ environment.e2e.ts │ │ └── environment.ts │ ├── pages │ ├── providers │ ├── theme │ ├── index.html │ ├── manifest.json │ ├── polyfills.ts │ ├── service-worker.js │ ├── test.ts │ └── tsconfig.spec.json ├── www ├── .angular-cli.json - This file contains Angular project configuration settings ├── config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── .ionic.config.json - This file contains Ionic project configuration ├── karma.conf.js ├── protractor.conf.js ├── tsconfig.json └── tslint.json Ionic CLI Ionic Framework Angular Typescript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g ionic Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following main stages for this quickstarter: Build - Installs the dependencies of your project with yarn install, generates the build by running npm run ionic:build, if the merged git branch is master it creates the production build with npm run ionic:build --prod. Finally, it copies the output folder www into docker/dist. Unit Test - Runs unit test cases by executing yarn test command. If any test fails, the build is marked as failed. This will also create test coverage analysis data which will then be transfered to SonarQube. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. SonarQube Analysis - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"3.x","name":"fe-ionic","url":"/opendevstack/3.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known Limitation","hash":"_known_limitation","id":7}]},"123":{"id":123,"text":"Table of Contents Overview Available, official quickstarters Backend Quickstarter Frontend Quickstarter Data Science Quickstarter E2E Test Quickstarter ODS Contribution Quickstarter Authoring quickstarters Quickstarters are basically templates that help to start out with a component quickly. A quickstarter provides a specific technology, potentially with a framework setup already, such as Java with Springboot in the case of the be-java-springboot quickstarter. Compared to starting out from scratch, using a quickstarter typically helps by: setting up a repository in Bitbucket with webhooks to trigger Jenkins builds shipping a Jenkinsfile with a pipeline that builds and deploys the component (delegating most of the work to the shared library) providing a basic test setup with xUnit reports and code coverage integrating with SonarQube out-of-the-box (including code coverage report) setting up OpenShift resources to build and run the component creating a boilerplate application with one or more sample endpoints Quickstarters are used from the Provisioning App, which allows to add a component to an existing project by running a quickstarter from the configured list of available quickstarters. This list can contain quickstarters from the official repository, ods-quickstarters, or from some other repository such as internally hosted ones in your Bitbucket instance. Backend - Gateway/Nginx Backend - Go Backend - Java/SpringBoot Backend - TypeScript/Express Backend - Python/Flask Backend - Scala/Play Frontend - Angular Mobile - Ionic Data Science - Machine Learning Data Science - Jupyter Notebook Data Science - R-Shiny E2E test - Cypress E2E test - Spock / Geb ODS Fork - Document Generation Service ODS Fork - Provisioning Application Next to those, there is a \"blank\" quickstarter (Docker/Plain) allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences. As mentioned above, it is possible to supply your own quickstarters. Pleasee see the authoring quickstarters guide on how to make completely new quickstarters or how to adapt existing quickstarters to your needs.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Available, official quickstarters","hash":"_available_official_quickstarters","id":2},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":3},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":4},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":5},{"text":"E2E Test Quickstarter","hash":"_e2e_test_quickstarter","id":6},{"text":"ODS Contribution Quickstarter","hash":"_ods_contribution_quickstarter","id":7},{"text":"Authoring quickstarters","hash":"_authoring_quickstarters","id":8}]},"124":{"id":124,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-document-generation-svc None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc N/A","title":"Contribution ODS Document Generation Service (ods-document-gen-svc)","component":"opendevstack","version":"3.x","name":"ods-document-gen-svc","url":"/opendevstack/3.x/quickstarters/ods-document-gen-svc.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"125":{"id":125,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-provisioning-app None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app N/A","title":"Contribution ODS Provisioning Application (ods-provisioning-app)","component":"opendevstack","version":"3.x","name":"ods-provisioning-app","url":"/opendevstack/3.x/quickstarters/ods-provisioning-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"126":{"id":126,"text":"The release manager supports the orchestration of multiple repositories into a live application. . ├── docs # Fall-back document chapter templates for (LeVA) compliance reports. ├── Jenkinsfile # The release manager pipeline. ├── README.md └── metadata.yml # Configuration of the release manager pipeline and its repositories. The release manager automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. This type designates ODS components designed for running some service. Examples include repositories based on the be-gateway-nginx quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. If no url parameter is provided for a repository configuration in the metadata.yml, the release manager will attempt to resolve it based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, the release manager automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. The release manager automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process. Note: when you configure a Jira service in metadata.yml, the release manager expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the release manager will fall back to the document chapter templates located in the docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. If you want your target environment to be created from an existing source environment such as dev or test on the fly, you need to provide the environment and sourceEnvironmentToClone parameters to your pipeline, respectively. Their values will be combined with your project ID in the form ${project-id}-${environment} to create the project (namespace) name in your OpenShift cluster.","title":"Release Manager","component":"opendevstack","version":"3.x","name":"release-manager","url":"/opendevstack/3.x/quickstarters/release-manager.html","titles":[{"text":"File Structure","hash":"_file_structure","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":12},{"text":"Automated Cloning of Environments","hash":"_automated_cloning_of_environments","id":13}]},"127":{"id":127,"text":"Tailor has been developed for OpenShift 3.11. Back in the days, Helm 2 required the use of a privileged Tiller service and did not work well with OpenShift-specific resources. With Helm 3 and OpenShift 4, this situation has changed. While Tailor also works in an OpenShift 4 cluster, OpenShift has integrated Helm into its product, and Helm has a huge and growing community. Therefore, it is recommended to use Helm instead of Tailor in an OpenShift 4 cluster. Tailor is based on OpenShift templates, which define the Kubernetes resources to apply. Helm uses a different templating language / engine, but in the end the templates also describe Kubernetes resources. Therefore, migration effort is relatively low as one only needs to change the syntax of the definition, not the definition itself. Further, there are differences between the CLI of the two tools and not all features of Tailor are available in Helm and vice-versa. Once migration to Helm is complete, it is also recommended to look at the best practices in the Helm community and adopt these. This document will describe how to adopt resources deployed using Tailor into a Helm release for OpenDevStack installation. There are basically two options how to approach this: you can either adopt your existing OpenShift resources to chart templates, or you can start a clean installation. Once the templates have been made ready, you can continue the installation/update following the normal process In order to adopt the resources into a Helm release you can use the following script https://github.com/opendevstack/ods-core/blob/master/scripts/tailor2helm.sh In this case you will need to remove all existing resources for the component that has been previously deployed using Tailor, you can check existing resources like this: oc -n ods get all -l app=foo-bar Check more information about migration from tailor to helm and their differences in https://github.com/opendevstack/tailor/wiki/Migrating-from-Tailor-to-Helm","title":"Migrating from Tailor to Helm","component":"opendevstack","version":"4.x","name":"helm-migration","url":"/opendevstack/latest/administration/helm-migration.html","titles":[{"text":"Templates preparation","hash":"_templates_preparation","id":1},{"text":"Option 1: Adopting OpenShift resources","hash":"_option_1_adopting_openshift_resources","id":2},{"text":"Option 2: Clean Installation","hash":"_option_2_clean_installation","id":3},{"text":"Sources","hash":"_sources","id":4}]},"128":{"id":128,"text":"ODS makes use of and provides a few container images. This document will detail which container images are used, how contaienr images are built during an ODS installation, and how images are consumed by users of ODS. There are three broad categories of images: Images used in the central ODS namespace Images used in the *-cd namespace of each ODS project Application images used in the -dev and -test namespace Every category has different lifecycles. Those images are owned by ODS admins. Examples of such images include the SonarQube image and the Nexus image. All of the images used by containers in the central ODS namespace are built by ODS during its installation. No container uses a vanilla image as provided by e.g. DockerHub or quay.io. Each image is created through a BuildConfig, and placed into an ImageStream. The BuildConfig defines which Dockerfile is used, and which base image is used to build from. The base image can be pulled from DockerHub (e.g. in case of SonarQube or Nexus), but it can also be from another registry (e.g. in case for the Jenkins Master image, it might be from registry.access.redhat.com or registry.redhat.io). The images are built during installation or upgrade of ODS, and tagged with the value of the configuration parameter ODS_IMAGE_TAG. Once an image has been built, it is not changed until a new build is triggered - that means that even if the base image changes, it has no effect on the images in the central ODS namespaces unless an admin triggers a new build for that image. Further, a new image does not necessarily equal an update to the deployment. Admins have to ensure that new deployments are rolled out so that the new images get picked up. Those images are also owned by ODS admins, and also built in the central ODS namespace like the first category, but the deployments are running in each ODS project. The images in this catgeory are the Jenkins related images (master, agents, webhook-proxy), and potentially also the image for the document generation service. Note that building a new image in the central ODS namespace does not equal an update of the deployments in each *-cd project. This is because no image triggers are defined on the DeploymentConfig resources. While having such a trigger sounds convenient at first, it is actually not desirable. The main reason is that the rollouts started from an image trigger cannot be controlled, leading to simultaneous restarts which runs the risk of putting a huge amount of load on the cluster. A downside of not having a trigger is that it is cumbersome for ODS admins to rollout bugfixes and security patches to running instances such as the Jenkins Master or the webhook proxy. At the moment, there is no easy, automated, solution to this. However, you might be interested in an experimental tool, oc-batch-rollout, which allows admins to trigger rollouts in a controlled fashion. Those images are owned by ODS users and are built using BuildConfig resources in the respective namespace. The build is triggered from the Jenkins pipeline. The BuildConfig refers to a Dockerfile in the application repository, which refers to an image (typically from DockerHub) in its FROM instruction. Which image gets pulled from DockerHub is completely dependent on which image tag is specified in the FROM instruction. Authors of the Dockerfile are free to be as specific or inspecific as they want, e.g. they could point to the latest tag or use a more stable version published by the base image owner. Therefore, updates to the base image of application images take effect on every build. Once an application runs in a pod though, its image is not automatically updated when the base image changes in DockerHub. Also it is important to note that updates to the Dockerfile in a quickstarter have no effect on an application, even if the application was originally provisioned using that same quickstarter. The reason is that there is no ongoing link between a quickstarter (which is like a template) and the created component (which is like an instance). Depending on the category of the image as outlined above, vulnerabilities in those image have different impact, and also different mitigation paths. Vulnerabilities in application images have a high impact, but mitigation is relatively easy. If the vulnerability is within the base image, and the latest image of the currently used image tag has the vulnerability fixed, one simply needs to trigger a new Jenkins job, which builds a new image, and deploys that new image. If the image tag referenced in the FROM instruction of the Dockerfile does not contain the security fix, one can attempt to change to an image tag which is not vulnerable. Finally, the vulnerability might not be in the base image, but in the Dockerfile of the application, in which the security fix can be applied there. Vulnerabilities in images used in the -cd namespace of each ODS project are a bit harder to mitigate. This is because the vulnerability can be in the base image or in the ODS customisation of it. Further, to actually fix the vulnerability in the running container, one needs to built a new vulnerabilty-free image and have that rolled out to each -cd namespace (remember there are no automatic image triggers). Vulnerabilities in images used in the central ODS namespace are very similar to this. However, since all deployments in the ODS namespace are controlled by the ODS administrator, updating them is easier from a process perspective then the containers in the *-cd namespaces.","title":"Image Lifecycles","component":"opendevstack","version":"4.x","name":"image-lifecycle","url":"/opendevstack/latest/administration/image-lifecycle.html","titles":[{"text":"Categories of images","hash":"_categories_of_images","id":1},{"text":"Images used in the central ODS namespace","hash":"_images_used_in_the_central_ods_namespace","id":2},{"text":"Images used in the *-cd namespace of each ODS project","hash":"_images_used_in_the_cd_namespace_of_each_ods_project","id":3},{"text":"Application images used in the -dev and -test namespace","hash":"_application_images_used_in_the_dev_and_test_namespace","id":4},{"text":"Vulnerabilities in images","hash":"_vulnerabilities_in_images","id":5}]},"129":{"id":129,"text":"This page is outdated. Please follow the new installation guide instead. However, some parts are still missing there so you might find this page useful. The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables. The ansible role definitions are located in the ods-core repository at infrastructure-setup/ansible/roles Note that there are two different types of roles: roles starting with modified or local; these roles are modified by the OpenDevStack members and are maintained by them all other roles, e.g geerlingguy.git, which are copied roles from ansible galaxy. The roles from ansible galaxy are specified in the requirements.yml file. In order to migrate to a new version of the role, you need to specify the version in the requirements.yml file run ansible-galaxy install Example: update geerlingguy.git to version 2.1.0 Update requirements.yml: - src: geerlingguy.git version: 2.1.0 Call ansible-galaxy install: export ANSIBLE_VAULT_PASSWORD_FILE=/vagrant/ansible/.vault_pass.txt && ansible-galaxy install -r requirements.yml -p roles - andrewrothstein.openshift-origin-client-tools (v1.0.9) is already installed, skipping. - geerlingguy.nginx (2.6.2) is already installed, skipping. - geerlingguy.docker (2.0.4) is already installed, skipping. - downloading role 'git', owned by geerlingguy - downloading role from https://github.com/geerlingguy/ansible-role-git/archive/2.1.0.tar.gz - extracting geerlingguy.git to /vagrant/ansible/roles/geerlingguy.git - geerlingguy.git (2.1.0) was installed successfully","title":"Infrastructure Setup","component":"opendevstack","version":"4.x","name":"infrastructure-setup","url":"/opendevstack/latest/administration/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1},{"text":"How to update ansible roles","hash":"_how_to_update_ansible_roles","id":2}]},"130":{"id":130,"text":"This document will guide you through installing / maintaining an OpenDevStack installation. Installing OpenShift is out of scope for this guide. We assume you have an OpenShift 3.11 cluster running already. If so, ensure that the cluster nodes have vm.max_map_count set to at least 262144, otherwise you’ll not be able to install SonarQube later on. You may change this setting via sudo sysctl -w vm.max_map_count=262144. If you do not have an OpenShift cluster yet, and just want to try things out, you may use oc cluster up to spin up a temporary cluster. Note that this will only work on Linux and we recommend to have at least 16GB RAM and 32GB of available disk space. From now on we assume you work from a Bash terminal (Cygwin / Linux). In this terminal, you’ll ned a recent git version (>= 2.13.2) and a recent jq version (>= 1.5, see https://stedolan.github.io/jq/) in your $PATH. Before you can install OpenDevStack (no matter whether locally or on another server) you need to have the ODS repositories available on your local machine. For this purpose, ODS provides a script to setup all required repositories with the same Git ref easily. This script needs to be downloaded to the umbrella directory which should hold all ODS respositories. The following example shows how to do this for the master version, please use the exact version you want to install (e.g. v4.0.0): UMBRELLA_DIR=~/opendevstack GIT_REF=master mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF After running this script, all required repositories should be available locally. Go to ods-core and run: make prepare-config If you want to install OpenDevStack for the first time, leave the BitBucket URL empty. After the configuration is prepared (which means that a directory ods-configuration will be created if it does not exist yet), fill out all the parameters in ods-core.env in directory ods-configuration for your installation. Add all files of directory ods-configuration to git and commit the result. You don’t need to push yet, this will be done later. \"Preparing\" also updates the sample files and checks if any params are present in the sample files but missing from the real file. If you are using windows Cygwin or WSL remember to change ending line CRLF to LF before commit ods-core.env, you can find more information on configure Git ending line At this stage you have to setup the Atlassian suite (Jira, Confluence, Bitbucket, Crowd) if it does not exist yet. If you already have an installation the Atlassian suite, you now need to configure it to work with OpenDevStack. Documentation for the installation and configuration of the Atlassian suite is missing at the moment. The general setup is described in https://github.com/opendevstack/ods-core/tree/master/infrastructure-setup, but this will likely need adaption to your specific environment. After Crowd is running, ensure that there is a user corresponding to the CD_USER_ID_B64/CD_USER_PWD_B64 parameters in ods-core.env. On Bitbucket, there must be an OPENDEVSTACK project filled with the necessary repositories such as ods-core. To set them up, use: make prepare-bitbucket-repos Notice that prepare-bitbucket-repos expects a running Atlassian suite (it will not spin up a new Bitbucket instance). Then, update them with the latest state so that they can be used e.g. from BuildConfig resources in OpenShift: make push-local-repos You also need to update ods-configuration, which can be done via: git remote add origin git push -u origin master Finally, it is required to create a Git ref in the ods-jenkins-shared-library which matches the ODS version you want your users to consume (as specified by ODS_IMAGE_TAG in the configuration): make set-shared-library-ref We use Tailor to handle OpenShift templates and keep OpenDevStack resources in sync. Tailor is a tool which needs to be installed on your local machine. Please see its installation instructions for your platform. Following are the version requirements: OpenDevStack version Tailor version 3.x >= 1.2.2 2.x >= 0.13.1 1.2.x = 0.9.3 1.1.x = 0.9.3 1.0.x = 0.9.1 0.1.x = 0.8 OpenDevStack needs one central project in OpenShift, which will hold all shared resources such as images or deployments. This project is typically called ods, but you can customize this in the configuration via ODS_NAMESPACE. For the following steps, you must be logged into OpenShift (using oc login --token=) with a user that has cluster-admin rights. In ods-core run: make install-ods-project A central Nexus deployment is used to proxy packages and to store artifacts. In ods-core run: make install-nexus Afterwards, run the initial configuration: make configure-nexus In the course of this you will be prompted to set a new admin password. The configure-nexus target is not idempotent yet, so it cannot be used for upgrading! A central SonarQube deployment is used to analyze source code. In ods-core run: make install-sonarqube This will launch an instance of SonarQube. The script will prompt for a new admin password. Once this has been set, an auth token for the Jenkins pipelines will be generated. Both values are automatically written into ods-configuration/ods-core.env, which you then need to commit and push. Also, you have to add the cd-user as a user in the project permissions of your Bitbucket OpenDevStack project. Read permission is sufficient. Central Jenkins images (master, agent, webhook proxy) are used by every ODS project. In ods-core run: make install-jenkins Then, there are further Jenkins agent images for each quickstarter technology. To create those images, run the following from ods-quickstarters: make install-jenkins-agent At this stage you can setup or modify the image stream for the Document Generation service. In ods-core run: make install-doc-gen At this stage you can setup or modify the provisioning application. In ods-core run: make install-provisioning-app Congratulations! At this point you should have a complete ODS installation. Try it out by provisioning a new project with the provisioning application.","title":"OpenDevStack Setup","component":"opendevstack","version":"4.x","name":"installation","url":"/opendevstack/latest/administration/installation.html","titles":[{"text":"Server prerequisites","hash":"_server_prerequisites","id":1},{"text":"Local Setup","hash":"_local_setup","id":2},{"text":"Repositories","hash":"_repositories","id":3},{"text":"Configuration","hash":"_configuration","id":4},{"text":"Atlassian Suite","hash":"_atlassian_suite","id":5},{"text":"Bitbucket Repositories","hash":"_bitbucket_repositories","id":6},{"text":"OpenDevStack environment in OpenShift","hash":"_opendevstack_environment_in_openshift","id":7},{"text":"Tailor","hash":"_tailor","id":8},{"text":"Central ODS project","hash":"_central_ods_project","id":9},{"text":"Nexus","hash":"_nexus","id":10},{"text":"SonarQube","hash":"_sonarqube","id":11},{"text":"Jenkins","hash":"_jenkins","id":12},{"text":"Document Generation service","hash":"_document_generation_service","id":13},{"text":"Provisioning Application","hash":"_provisioning_application","id":14}]},"131":{"id":131,"text":"Table of Contents Realm master Users Realm opendevstack Groups Users Client ods-provisioning-app Keycloak is an open source identity and access managment tool. OpenDevStack uses eigther Atlassian Crowd or OpenID Connect / OAuth 2.0 protocol for authentication users of provisioning app. The usage of Keycloak is optional. Instead of keycloak, Atlassian Crowd can still be used for authentication. See documentation under ODS-Components → Provisioning App → Configuration Guide regarding the configuration of provisioning app. Setup of keycloak for local-installation is all done without further manual setup actions by starting the vagrant-box idmanager. User Password Roles admin admin keycloak admin There is (beside the master realm) one single OpenDevStack-specific realm: opendevstack. There are two OpenDevStack-specific groups inside the opendevstack realm: opendevstack-administrators opendevstack-users User Password Groups admin1 admin1 opendevstack-administrators opendevstack-users user1 user1 opendevstack-users There is one OpenDevStack-specific client inside the opendevstack realm: ods-provisioning-app. There is a protocoll mapper called Group Mapper that maps the user’s group membership to a token claim with name roles.","title":"Keycloak","component":"opendevstack","version":"4.x","name":"keycloak","url":"/opendevstack/latest/administration/keycloak.html","titles":[{"text":"Realm master","hash":"_realm_master","id":1},{"text":"Users","hash":"_users","id":2},{"text":"Realm opendevstack","hash":"_realm_opendevstack","id":3},{"text":"Groups","hash":"_groups","id":4},{"text":"Users","hash":"_users_2","id":5},{"text":"Client ods-provisioning-app","hash":"_client_ods_provisioning_app","id":6}]},"132":{"id":132,"text":"In ODS 2, there was a central namespace cd, alongside 3 namespace dedicated to the provisioning app: prov-cd, prov-dev and prov-test. In ODS 3, there is only one namespace ods, which contains the whole OpenDevStack installation. When updating from ODS 2 to ODS 3, you will need to move the services running in cd, prov-cd and prov-test to ods. In detail: SonarQube is moving from cd to ods Nexus is moving from cd to ods Jenkins (Master and Webhook Proxy) is moving from prov-cd to ods Provisioning App is moving from prov-test to ods The Provisioning App will make use of the Jenkins instance in ods to provision new ODS projects. Apart from the instances, also all build configurations and image streams are moving from cd to ods, which means all users need to pull images from the new namespace. With that in mind, we can start the update procedure! Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. To do so, run the following and select the version you want to install (3.x). make sync-repos If your OpenDevStack installation is based on a custom branch (such as 3.acme), then you need to create a pull request on BitBucket from 3.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor. 3.x requires Tailor 1.2.2. Run: make prepare-config In 2.x, the Jenkins master base image was pulled from the openshift namespace. The agent base image could have been pulled from that namespace as well, or directly from a registry. In 3.x, the master can also be pulled directly from a registry. The advantage of this is that you do not need to worry about the import policy set in the openshift namespace, which can have suprising results (e.g. your base image never updating even though a fix has been released by RedHat). The behaviour is defined by a new configuration parameter, JENKINS_MASTER_BASE_FROM_IMAGE. Further, in 2.x you had to pick (via JENKINS_AGENT_BASE_IMAGE) whether you wanted to use Dockerfile.centos7 or Dockerfile.rhel7. However, both files contained the same instructions. Therefore, those were combined into a single Dockerfile and you only need to choose which base image to use via JENKINS_AGENT_BASE_FROM_IMAGE (like before). After you have updated/added/removed all parameters with your desired values, commit and push the result. Next you need to update all OpenShift resources (such as DC or BC). Review the diff produced by Tailor carefully before applying changes. In ods-core, run: make install-ods-project make install-jenkins make install-nexus make install-doc-gen In ods-quickstarters, run: make install-jenkins-agent With OpenDevStack version 3.x the \"production\" instance of the Provisioning App is moving from the prov-test to the ods namespace. The following steps describe how to perform the change: Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Install the Provisioning App in the ods namespace make install-provisioning-app Copy backed up data to new instance oc cp ./history ods/:/opt/provision Depending on your use of the Provisioning App you can either: delete all prov-* namespaces if you are only interested in running a \"production\" instance. only delete the data under /opt/provision/history in the prov-test namespace if you want to keep your setup. With OpenDevStack version 3.x SonarQube is moving from the cd namespace to the ods namespace. The following outlines the procedure for SonarQube: Create the SonarQube build resources in ods using make apply-sonarqube-build Start build of SonarQube image in ods using make start-sonarqube-build Scale down the SonarQube pod in cd Create a backup of the old data using make ODS_NAMESPACE=cd backup-sonarqube Create the SonarQube deploy resources in ods using make apply-sonarqube-deploy Scale down the SonarQube pod in ods Upload backup to new Postgres pod: oc -n ods cp sonarqube/sonarqube.sql :/var/lib/pgsql/ Start a bash in the Postgres pod: oc rsh -n ods pod/ bash and start a psql session. Drop the sonarqube database (DROP DATABASE sonarqube) and create a new, empty one (CREATE DATABASE sonarqube OWNER sonarqube). Then quit from psql. Import the backup with psql sonarqube System\". Then, start a bash in the SonarQube pod: oc rsh -n ods pod/ bash and remove /opt/sonarqube/data/es6. Afterwards, restart the server from the UI (there’s a button on the \"Administration > System\" page). Booting will take some time (depending on the amount of data to process) as a full re-index is performed. Call make configure-sonarqube to verify the new installation is correctly configured. Now delete the old SonarQube route in cd. Create a new route in ods with the same host as the old route so that projects using the old URL don’t break. Checking for secure routes has been removed from the core, but is still available at https://github.com/BIX-Digital/ods-contrib.","title":"","component":"opendevstack","version":"4.x","name":"update-2-to-3","url":"/opendevstack/latest/administration/update-2-to-3.html","titles":[{"text":"New central namespace","hash":"_new_central_namespace","id":1},{"text":"Update your OpenDevStack repositories","hash":"_update_your_opendevstack_repositories","id":2},{"text":"Backup","hash":"_backup","id":3},{"text":"Tailor","hash":"_tailor","id":4},{"text":"Configuration","hash":"_configuration","id":5},{"text":"OpenShift resources","hash":"_openshift_resources","id":6},{"text":"Provisioning App changes","hash":"_provisioning_app_changes","id":7},{"text":"SonarQube changes","hash":"_sonarqube_changes","id":8},{"text":"Secure route removal","hash":"_secure_route_removal","id":9}]},"133":{"id":133,"text":"Learn all about how to update your OpenDevStack repositories and the running installation of it. Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. First, you need a clone of each repository in BitBucket which should be updated on your local machine. Once this has been done, you need to fetch new refs from github.com/opendevstack. To do so, add a remote pointing to it like this: git remote add ods https://github.com/opendevstack/.git Now you are ready to update the refs. It is recommended to update both the master branch and, unless you want to live off the bleeding edge, a release branch such as 2.x. Use the steps shown below: # Ensure you have the latest refs from ODS locally git fetch ods # Update master git checkout master git reset --hard ods/master git push origin master # Update 2.x git checkout 2.x git reset --hard ods/2.x git push origin 2.x If your OpenDevStack installation is based on a custom branch (such as 2.acme), then you need to create a pull request on BitBucket from 2.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Updating consists of two parts: following the general update procedure (applicable to all version updates) and a version specific update procedure. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor to the version corresponding to your new OpenDevStack version, which is noted at the start of each version specific update procedure. Then, update/add/remove the configuration parameters (located in ods-configuration). To do this, use the ./update script located in ods-core/configuration-sample. Next, run tailor update in ods-core and ods-quickstarters to bring all OCP resources (such as DC or BC) into sync. Review the diff produced by Tailor carefully, especially around changes to PVCs. After all OCP resources have been updated, you need to start a build for all build configs in the cd namespace to create new images. Also, the provisioning app should be updated. To do that, run tailor update in each ocp-config folder, and then trigger a build in Jenkins to redeploy the service. Now that the general procedure has been completed, you need to apply all the update notes below which apply to your version change. 2.x requires Tailor 0.11.0. Secure route checking has been removed for version 3.x as this is an optional step. The code now is available at https://github.com/BIX-Digital/ods-contrib. Go to ods-core/check-ocp-secure-routes/ocp-config and run tailor update to setup a cron job that will check exposed routes once a day (see https://github.com/opendevstack/ods-core/pull/280). As each project may use a specific CD user now, you have to configure the username of the global CD user. To do so, add username: Y2RfdXNlcg== to secret cd/cd-user-token. The shared-images namespace is no longer part of OpenDevStack. If you do not have any users that use images from that namespace, you may simply delete it via oc delete project shared-images. Otherwise, you can leave it in place and remote it when you see fit. Rundeck is longer part of OpenDevStack and can simply be removed. Images in the cd namespaces should be pullable from all authenticated users. This permission is required for the new project provisioning approach to work: oc adm policy add-cluster-role-to-group system:image-puller system:authenticated -n cd oc adm policy add-role-to-group view system:authenticated -n cd Further, -dev and -test namespaces should be able to pull images from the corresponding *-cd namespaces to make it easy to shared base images within a project (see https://github.com/opendevstack/ods-core/issues/293). It is recommended to grant these rights for every project in your cluster. If you don’t do this, users will have to add the permissions manually if they want to use this flow. 2.x allows the webhook proxy to build repositories in external projects if configured (see https://github.com/opendevstack/ods-core/issues/229). This feature is required for the new quickstarter provisioning approach to work. Therefore, it is recommended to tag a webhook proxy images built from the 2.x branch or v2.0 tag with latest so that all webhook proxies in the cluster get updated. Review the ConfigMap of the provisioning app in prov-dev and prov-test. Depending on your requirements, you might want to configure additional quickstarters (jenkinspipeline.quickstarter…​) and/or change the readable repositories of the project specific users (scm.global.readablerepos.opendevstack[x]) 1.2.x requires Tailor 0.10.2. The new functionality to create documents via Jenkins requires the presence of an image for the DocGen service. In an upcoming release, this will be integrated nicely. For 1.2.x, the image needs to be built once during the update procedure. The recommended way to do this is to build the image in the prov namespaces and then move the image tag into the cd namespace. The first step is to create a pipeline oc -n prov-cd process -f pipeline.yml --param REPO_BASE= --param TRIGGER_SECRET= | oc -n prov-cd create -f -, where pipeline.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: docgen-production spec: nodeSelector: {} output: {} postCommit: {} resources: {} runPolicy: Serial source: git: ref: production uri: ${REPO_BASE}/opendevstack/ods-document-generation-svc.git sourceSecret: name: cd-user-with-password type: Git strategy: jenkinsPipelineStrategy: jenkinsfilePath: Jenkinsfile type: JenkinsPipeline triggers: - generic: secret: ${TRIGGER_SECRET} type: Generic parameters: - name: TRIGGER_SECRET required: true - name: REPO_BASE required: true description: Path to repository, e.g. https://cd_user@bitbucket.domain.com/scm Then, create the BuildConfig and ImageStream in prov-dev using oc -n prov-dev process -f bc-is.yml | oc -n prov-dev create -f -, where bc-is.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: creationTimestamp: null labels: app: prov-docgen name: docgen spec: failedBuildsHistoryLimit: 5 successfulBuildsHistoryLimit: 5 nodeSelector: null output: to: kind: ImageStreamTag name: docgen:latest postCommit: {} resources: {} runPolicy: Serial source: binary: {} type: Binary strategy: dockerStrategy: {} type: Docker triggers: [] - apiVersion: image.openshift.io/v1 kind: ImageStream metadata: labels: app: prov-docgen name: docgen spec: dockerImageRepository: docgen lookupPolicy: local: false Note that this points to the production branch of ods-document-generation-svc - ensure this branch is present. After all is setup, start a build in Jenkins, and then move the built image to the cd namespace: oc tag prov-dev/docgen:latest cd/docgen:latest 1.1.x requires Tailor 0.9.4. There are no further mandatory changes apart from the general procedure described above when updating from 1.0.x. Users are highly recommended to take a look at the updates done to the boilerplates, especially the Jenkinsfile and Dockerfile. E.g. the Python quickstarter is now building an image containing all dependencies instead of installing them during runtime. 1.0.x requires Tailor 0.9.3. There is a new webhook proxy now, which proxies webhooks sent from BitBucket to Jenkins. As well as proxying, this service creates and deletes pipelines on the fly, allowing to have one pipeline per branch. To update: Setup the image in the cd project by running tailor update in ods-core/jenkins/ocp-config. Build the image. Setup the webhook proxy next to each Jenkins instance. E.g., go to ods-project-quickstarters/ocp-templates/templates and run oc process cd//cd-jenkins-webhook-proxy | oc create -f- -n xyz-cd. Repeat for each project. For each component, follow the following steps: In Jenkinsfile: Set the shared library version to 1.0.x. Replace stageUpdateOpenshiftBuild with stageStartOpenshiftBuild. Remove stageCreateOpenshiftEnvironment and stageTriggerAllBuilds. Adapt the build logic to match the latest state of the quickstarter boilerplates. Remove verbose: true config (replace with debug: true if you want debug output). Configure branchToEnvironmentMapping, see README.md. If you used environment cloning, also apply the instructions for that. In docker/Dockerfile: Adapt the content to match the latest state of the quickstarter boilerplates. No Nexus upload build artifact is required anymore, use a copy in Jenkins shell command to docker folder (see in any boilerplate how it is done now). In BitBucket, remove the existing \"Post Webhooks\" and create a new \"Webhook\", pointing to the new webhook proxy. The URL has to be of the form https://webhook-proxy-$PROJECT_ID-cd.$DOMAIN?trigger_secret=$SECRET. As events, select \"Repository Push\" and \"Pull request Merged + Declined\". If you want to build the provisioning app automatically when commits are pushed to BitBucket, add a webhook as described in the previous section. 1.0.x makes use of the BUILD_URL env variable automatically set by Jenkins. This env variable might be null in your Jenkins master. To fix this, copy https://github.com/opendevstack/ods-core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovy into each Jenins master to /var/lib/jenkins/init.groovy.d/url.groovy. 1.0.x sets image labels on the BuildConfig in Jenkins. It does this by issuing a JSON patch replace request to /spec/output/imageLabels. This path was not present in prior versions, which can lead to the following error: Error from server: jsonpatch replace operation does not apply: doc is missing key: /spec/output/imageLabels. For newly provisioned components, this has been fixed with https://github.com/opendevstack/ods-project-quickstarters/pull/188. For existing components, add the path to the BuildConfig manually by editing the YAML in OpenShift.","title":"Update Guide for OpenDevStack administrators","component":"opendevstack","version":"4.x","name":"update-older","url":"/opendevstack/latest/administration/update-older.html","titles":[{"text":"How to update your OpenDevStack repositories","hash":"_how_to_update_your_opendevstack_repositories","id":1},{"text":"How to update your OpenDevStack installation","hash":"_how_to_update_your_opendevstack_installation","id":2},{"text":"General update procedure","hash":"_general_update_procedure","id":3},{"text":"Backup","hash":"_backup","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Configuration","hash":"_configuration","id":6},{"text":"OCP resources","hash":"_ocp_resources","id":7},{"text":"Images","hash":"_images","id":8},{"text":"Provisioning App","hash":"_provisioning_app","id":9},{"text":"1.2.x to 2.x","hash":"_1_2_x_to_2_x","id":10},{"text":"Setup secure route checking","hash":"_setup_secure_route_checking","id":11},{"text":"Project specific CD users","hash":"_project_specific_cd_users","id":12},{"text":"Deprecation of shared-images namespace","hash":"_deprecation_of_shared_images_namespace","id":13},{"text":"Rundeck removal","hash":"_rundeck_removal","id":14},{"text":"Image puller rights","hash":"_image_puller_rights","id":15},{"text":"Rollout new webhook proxy instances","hash":"_rollout_new_webhook_proxy_instances","id":16},{"text":"Configure the provisioning app","hash":"_configure_the_provisioning_app","id":17},{"text":"1.1.x to 1.2.x","hash":"_1_1_x_to_1_2_x","id":18},{"text":"Prepare installation for release manager quickstarter","hash":"_prepare_installation_for_release_manager_quickstarter","id":19},{"text":"1.0.x to 1.1.x","hash":"_1_0_x_to_1_1_x","id":20},{"text":"0.1.0 to 1.0.x","hash":"_0_1_0_to_1_0_x","id":21},{"text":"Update xyz-cd projects","hash":"_update_xyz_cd_projects","id":22},{"text":"Update components (information for ODS users)","hash":"_update_components_information_for_ods_users","id":23},{"text":"Update provisioning app","hash":"_update_provisioning_app","id":24},{"text":"Fix Jenkins master BUILD_URL","hash":"_fix_jenkins_master_build_url","id":25},{"text":"Fix JSON patch replace error in Jenkins build","hash":"_fix_json_patch_replace_error_in_jenkins_build","id":26}]},"134":{"id":134,"text":"Please refer to the contribution guide in the PMC repository.","title":"Development Guide","component":"opendevstack","version":"4.x","name":"development","url":"/opendevstack/latest/contributing/development.html","titles":[]},"135":{"id":135,"text":"OpenDevStack documentation is build with Antora. As we release new versions of OpenDevStack with new or changed functionality and configuration, it should always be clear which documentation applies to which release. Thus we follow the philosophy: manage documetation as code. This means: Storing content in a version control system alongside with the code. Separating content, configuration, and presentation Reusing shared materials (Don’t repeat yourself) Antora is a static site generator by the folks behind the AsciiDoctor project that follows this practices. The engine converts a collection of version controlled documentation written in AsciiDoc into an HTML site. Documentation is spread across multiple repositories. In each repository, there is a docs folder containing the documentation. We use one \"distributed\" component named opendevstack (see Component structure documentation), and each docs folder adds one or more named modules into that component. The navigation for the component is located in the ods-core repository. Additionally, we have the ods-documentation repository which contains the Playbook and the ods-docs-ui repository containing UI customization. A guide for building the documentation locally is provided in the ods-documentation README. Issue a pull request against the repository containing the documentation you add / modify. Once this is merged, the documentation website will get updated automatically (via a daily cronjob). The documentation will be build on Travis and pushed back to the ods-documentation repository. The .travis.yml file is located in the ods-documentation project.","title":"The OpenDevStack documentation","component":"opendevstack","version":"4.x","name":"documentation","url":"/opendevstack/latest/contributing/documentation.html","titles":[{"text":"Why we chose Antora","hash":"_why_we_chose_antora","id":1},{"text":"How is the documentation organized?","hash":"_how_is_the_documentation_organized","id":2},{"text":"How to build the site locally?","hash":"_how_to_build_the_site_locally","id":3},{"text":"How to contribute documentation","hash":"_how_to_contribute_documentation","id":4},{"text":"How is the documentation built on Github?","hash":"_how_is_the_documentation_built_on_github","id":5}]},"136":{"id":136,"text":"When we started with the OpenShift container platform we were blown away by the 100s of possibilities to use it, but there was nothing along the lines of “This is how you make it work for your org”. What we wanted is to enable developers to quickly introduce Continous Delivery and standardized technology archetypes. We call this lean, empowered governance. OpenDevStack (ODS) is how we achieve this. It is, to a large extent, tooling sitting in between your local software development (your machine/editor), and the running software in the target environemnt (OpenShift etc.). As such, most of ODS functionality is within and related to the CI/CD process. ODS has no overlap with your local environment, such as the editor you use to develop software. ODS is not a project management solution, rather it makes use of the Atlassian suite (Jira, Confluence, Bitbucket). ODS does not run your software application. ODS only deploys your software into a target environment (= OpenShift, but deployment could really be anywhere, such as AWS etc.). ODS is not a replacement for tools in the container space - rather it is one coherent offering of a selection of existing (open-source) tools. ODS is comprised of core functionality, and a configurable set of so-called quickstarters. Quickstarters can be seen as software templates, which can be instantiated in your project to create a component of your application quickly, with all the integration / configuration setup out-of-the box. The officially supplied quickstarters include, but are not limited to: Java (Spring Boot), Python (Flask), Scala (Play), Go, Angular, Ionic, Jupyter, RShiny. The core ODS functionality offers the following: A central provisioning application (the “entry point of ODS”) which allows to: provision new projects and provision components from aforementioned quickstarters within those projects A central Nexus instance to store and retrieve software artefacts. A central SonarQube instance to statically analyze the software components of a project. Customized Jenkins Master and Jenkins agent base images that are integrated with e.g. Bitbucket, OpenShift, Nexus and SonarQube. Each project runs its own Jenkins Master instance using the centrally provided image. A Jenkins Shared Library which can be used from each software component to cover most CI/CD functionality. The shared library offers all language-agnostic features, such as checking out source code, running static analysis, building container images, and deploying artefacts into the target environment. Each component only needs to add in their Jenkinsfile language-specific functionality such as building artefacts (e.g. JAR files). A release manager component which can be installed in each project to generate GxP documents from Jenkins pipeline runs (through the use of a centrally provided document generation service image). Quickstarters provide the following: Jenkins agent images that can be used during pipeline runs to build a specific language / framework Boilerplate of a specific language / framework with a \"Hello World\" example A Jenkinsfile integrating the Jenkins shared library and providing basic artefact building for the specific language / framework Integration with SonarQube, Nexus, OpenShift etc. as required When quickstarters are provisioned through the provisioning application, a repository is created on Bitbucket for the new component. The repository is populated with the boilerplate, and immediately built and deployed via Jenkins through the ODS integration. Developers can start to work on features straight away without setting up CI/CD and integrating various services. The following pictures the different parts ODS is made out of: Below is a diagram detailing the flow of an OpenDevStack CI/CD pipeline: Each major ODS release is identified by a version such as 2, 3, 4 and so on. Administrators of ODS can either: install from master to follow the cutting edge install from 2.x, 3.x, etc. branches to stay on a major version, but get bug fixes (minor versions) install from v2.0.0, v3.0.0, etc. tags to pin an exact version use a custom branch / tag such as 2.acme or 3.custom etc. to run ODS with customizations Users of ODS simply consume the version installed by their ODS administrators. A major update (e.g. 2.x to 3.x or 3.x to 4.x) is, from a user perspective, an explicit update. This means that although admins update the ODS installation in the cluster, users still have to explicitly adopt that change (e.g. by updating their Jenkins image reference and so on). Therefore, a major version change is accompanied by an update guide like Update to 3.x. For admins, a major update might mean that configuration options have to be changed or migration steps have to be taken, as well as rebuilding and rolling out all images etc. A minor update (consuming changes/bugfixs on a release branch such as 3.x) is, from a user perspective, an implicit update. This means that only admins have to make a change to the ODS installation in the cluster. Users should get those changes automatically, without the need to explicitly adopt it. Therefore, there is no update guide for minor updates. For admins, a minor update should (typically) not require changing configuration options nor performing migration steps - only rebuilding and rolling out some (or all) images should be needed. Each version is tracked as a GitHub project. The current major version is 4, the next one will be 5. See project page for details. OpenShift 4 support (keeping 3.11 compatibility) Support for Kubernetes-native Deployment resources and Helm 3 within component pipeline dropped machine learning quickstarter Integration with Aqua Security Implement health checks for quickstarters Rename central namespace to ODS, and extend with running provisioning app Install provisioning app and document generation service from pre-built images Quickstarter pipeline Merge of MRO (now: orchestration pipeline) into general shared pipeline Automation of SonarQube and Nexus setup Decorate Bitbucket pull requests with SonarQube analysis Promote images between environments if possible (instead of rebuilding) New (single page) app user interface as optional feature Removal of Rundeck (replace with Jenkins jobs) New quickstarter concept (multiple repo support) Project specific technical users CPU and memory quota support Initial version of document generation service and MRO pipeline Incremental improvements. Initial release.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"What ODS isn’t","hash":"_what_ods_isnt","id":2},{"text":"High-Level Overview of ODS","hash":"_high_level_overview_of_ods","id":3},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":4},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":5},{"text":"Versioning","hash":"_versioning","id":6},{"text":"Roadmap","hash":"_roadmap","id":7},{"text":"4.2 (Target Date: End-of-Feb 2022)","hash":"_4_2_target_date_end_of_feb_2022","id":8},{"text":"4 (November 2021)","hash":"_4_november_2021","id":9},{"text":"3 (August 2020)","hash":"_3_august_2020","id":10},{"text":"2 (December 2019)","hash":"_2_december_2019","id":11},{"text":"1.2 (October 2019, using old versioning scheme)","hash":"_1_2_october_2019_using_old_versioning_scheme","id":12},{"text":"1.1 (June 2019, using old versioning scheme)","hash":"_1_1_june_2019_using_old_versioning_scheme","id":13},{"text":"1.0 (November 2018, using old versioning scheme)","hash":"_1_0_november_2018_using_old_versioning_scheme","id":14}]},"137":{"id":137,"text":"Jenkins master deployments are using an image built in the central ODS namespace. This image is a customisation of an upstream Jenkins master image provided by RedHat. Jenkins agent images are also built in the central ODS namespace, and are also based on upstream images provided by RedHat. The exact Jenkins version which is used is determined by which RedHat base image tag is used, and depending on the used tag, at which time the ODS image is built. To update Jenkins (master and agents), the following steps need to be taken: Configure new versions Update BuildConfig resources Create new images Rollout new deployments The following will guide you through this process. To configure a new version of Jenkins, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core and ods-quickstarters repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-quickstarters,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change JENKINS_MASTER_BASE_FROM_IMAGE and JENKINS_AGENT_BASE_FROM_IMAGE in ods-configuration/ods-core.env to your desired image tags. Commit the change and push it to Bitbucket. If the configured tag is a moving target, you might not need to change it at all and you can simply continue with the next step. Next, you should ensure that the Jenkins BuildConfig resources in the central ODS namespace are up-to-date, then trigger new builds so that new images with the changed base images get built. Finally, new deployments should be rolled out which use the newly built image. All of this can be done from the ods-core repository: make install-jenkins This target depends on the targets apply-jenkins-build, start-jenkins-build, and apply-jenkins-deploy which execute the steps described above (and can of course also be executed individually). Only the Jenkins master deployment in the central ODS namespace gets updated automatically using this command. Updating Jenkins master deployments in each *-cd namespace is a separate task for which no ODS automation exists at the moment. Finally, you also need to rebuild all technology-specific Jenkins agent images. For the Jenkins agent images delivered with the official quickstarters, this can be done from the ods-quickstarters repository: make install-jenkins-agent If you have other quickstarters which use custom Jenkins agents, you will also have to rebuild those.","title":"Jenkins Administration","component":"opendevstack","version":"4.x","name":"administration","url":"/opendevstack/latest/jenkins/administration.html","titles":[{"text":"Updating Jenkins to a new version","hash":"_updating_jenkins_to_a_new_version","id":1}]},"138":{"id":138,"text":"We have a base image for different jenkins agents. The concrete agent images are then configured as part of the quickstarters. The base image contains the following customizations: SonarQube Scanner SonarQube CNES Report Plugin Tailor Helm Skopeo Snyk - used to scan and monitor projects vulnerable third-party dependencies (only installed if SNYK_DISTRIBUTION_URL is configured) Aqua Scanner CLI - used to scan local images and interact with the Aqua Server (only installed if AQUASEC_SCANNERCLI_URL is configured) Trivy Scanner - used to scan filesystem and generate “software bill of materials” SBOM report Setting of enterprise proxy (based on HTTP_PROXY presence) Support for custom certificates (based on APP_DNS presence) When the container image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins agent works also on OpenShift clusters in enterprises that use a web proxy. The base jenkins agent is used by all ODS builder agents","title":"ODS Jenkins Agent base","component":"opendevstack","version":"4.x","name":"agent-base","url":"/opendevstack/latest/jenkins/agent-base.html","titles":[]},"139":{"id":139,"text":"OpenDevStack provides several customized Jenkins container images based on the official OpenShift images.","title":"Jenkins","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/jenkins/index.html","titles":[]},"140":{"id":140,"text":"The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.18 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 workflow-cps-global-lib:2.13 junit:1.28 blueocean:1.18.0 workflow-durable-task-step:2.28 openshift-sync:1.0.44 Jenkins offers to deploy post-initialization scripts. Table 1. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins location based on the OpenShift route sonarqube.groovy Sets the SonarQube server URL and auth token based on the exposed environment variables ods-jenkins-shared-library.groovy Registers ods-jenkins-shared-library as a global library The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the SonarQube server. SONAR_AUTH_TOKEN this is the SonarQube auth token that is generated when deploying and configuring sonarqube Jenkins email notifications need manual configuration: The SMTP server parameters that need to be defined are found under menu option: Jenkins → Manage Jenkins → Configure System → Extended E-mail Notification It is also mandatory to define the System Admin e-mail address, this is defined under menu option: Jenkins → Manage Jenkins → Configure System → Jenkins Location Once Jenkins is configured, you will also need to define the recipients of the email notifications by definining emailextRecipients parameter in your odsComponentPipeline context, in your components' Jenkinsfile, like: ... odsComponentPipeline( ... emailextRecipients: ['email1@foo.bar', 'email2@foo.bar'], ... ) { context -> ...","title":"Jenkins Master","component":"opendevstack","version":"4.x","name":"master","url":"/opendevstack/latest/jenkins/master.html","titles":[{"text":"Configured Plugins","hash":"_configured_plugins","id":1},{"text":"Init scripts","hash":"_init_scripts","id":2},{"text":"Email notifications","hash":"_email_notifications","id":3}]},"141":{"id":141,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables can be set on the DeploymentConfig and are read by the webhook proxy: Variable Description ACCEPTED_EVENTS Comma-separated list of handled Bitbucket events. Defaults to repo:refs_changed,pr:declined,pr:merged,pr:deleted. ALLOWED_CHANGE_REF_TYPES Comma-separated list of Bitbucket change refs. Defaults to BRANCH, which means tags do not create pipelines nor forward to them. If you want this to happen, specify e.g. BRANCH,TAG. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. For security reasons, by default the webhook proxy allows only its own project and the opendevstack project to be passed as a project parameter. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be removed after they have been merged. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"4.x","name":"webhook-proxy","url":"/opendevstack/latest/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"142":{"id":142,"text":"The ods-core repository contains a build recipe for a central Nexus instance. The remainder of this document describes how that setup is done, and how it can be modified and updated. The Nexus deployment is using an image built in the central ODS namespace. This image is a customisation of the official Nexus image on DockerHub. The Nexus version which is used is determined by which image tag from DockerHub is used, and depending on tag, at which time the ODS image is built. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html To update Nexus, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of Nexus, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change NEXUS_IMAGE_TAG in ods-configuration/ods-core.env to your desired image tag. Commit the change and push it to Bitbucket. Next, you should ensure that the Nexus BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image with the changed base image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-nexus This target depends on the targets apply-nexus-chart and start-nexus-build which execute the steps described above (and can of course also be executed individually). There is also a configure-nexus target. However, this is not executed as part of install-nexus as it is not idempotent yet (which means it cannot be used against an existing Nexus deployment). For a simple Nexus version update, you don’t need to change any configuration, but if you switch between ODS versions you should keep an eye on Nexus configuration.","title":"Nexus Administration","component":"opendevstack","version":"4.x","name":"administration","url":"/opendevstack/latest/nexus/administration.html","titles":[{"text":"Updating Nexus to a new version","hash":"_updating_nexus_to_a_new_version","id":1}]},"143":{"id":143,"text":"","title":"Nexus","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/nexus/index.html","titles":[]},"144":{"id":144,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"4.x","name":"sysenv-requirements","url":"/opendevstack/latest/ods-core/sysenv-requirements.html","titles":[]},"145":{"id":145,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a agent pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"4.x","name":"troubleshooting","url":"/opendevstack/latest/ods-core/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins agent - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_agent_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"146":{"id":146,"text":"The ods-core repository contains a build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this document describes how that setup is done. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OpenShift project cd, inside the sonarqube-app secret. The SonarQube deployment is using an image built in the central ODS namespace. This image is based on the https://hub.docker.com/_/sonarqube, as can be seen in the ODS Dockerfile. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html If the previous version was configured to use Atlassian Crowd as Authentication provider, run the script https://github.com/opendevstack/ods-core/tree/master/scripts/migrate-sonar-users.sh in order to migrate current users to use Saml as Authentication provider. To update SonarQube, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of SonarQube, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change SONAR_VERSION in ods-configuration/ods-core.env to your desired version. Commit the change and push it to Bitbucket. Next, you should ensure that the SonarQube BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-sonarqube This target depends on the targets apply-sonarqube-chart, start-sonarqube-build and configure-sonarqube which execute the steps described above (and can of course also be executed individually).","title":"SonarQube Administration","component":"opendevstack","version":"4.x","name":"administration","url":"/opendevstack/latest/sonarqube/administration.html","titles":[{"text":"Modifying configurations, plugins, etc.","hash":"_modifying_configurations_plugins_etc","id":1},{"text":"Updating SonarQube to a new version","hash":"_updating_sonarqube_to_a_new_version","id":2}]},"147":{"id":147,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This file needs to be located in the root of the repository you want to have analysed. For example: # Project Key (required) sonar.projectKey=test-spring-boot # Project Name (optional, this is what is shown in the main list) sonar.projectName=test-spring-boot # Comma-separated paths to directories with sources (required) sonar.sources=src # Forced Language (optional) sonar.language=java # Encoding of the source files (optional but recommended as default is ASCII) sonar.sourceEncoding=UTF-8 # Plugin-specific settings sonar.java.binaries=build/classes sonar.java.libraries=build/libs sonar.junit.reportPaths=build/test-results/test The general settings are documented at https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/analysis-parameters. There’s a prebuilt stage (odsComponentStageScanWithSonar) that you can use, see https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/component-pipeline.html#_odscomponentstagescanwithsonar for details. The team behind SonarQube also published SonarLint, a plugin currently available for IntelliJ, Eclipse, Visual Studio, VS Code and Atom that lets you scan while coding in your IDE. It also integrates with a SonarQube Server, so that you can scan with the servers rule settings. For further information please see https://www.sonarlint.org/intellij/howto.html. For the server connected mode, the SonarQube URL has to be set to your SonarQube deployment. Be aware that this does not connect you with the SonarQube Server in OpenShift, therefore you might have other rule settings locally than the ones set on server. That said, here’s what you need to do on your host to have a local SonarQube instance: docker pull sonarqube docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube ./gradlew sonarqube Running these commands will let you see at http://localhost:9000 your project reports, for any branch. Please, note that you are not running with an embedded database in this case, so it is only for temporary testing, do not expect historic report.","title":"SonarQube","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/sonarqube/index.html","titles":[{"text":"sonar-project.properties file","hash":"_sonar_project_properties_file","id":1},{"text":"Scanning in Jenkins pipelines","hash":"_scanning_in_jenkins_pipelines","id":2},{"text":"Scanning locally: SonarLint IDE Plugin","hash":"_scanning_locally_sonarlint_ide_plugin","id":3},{"text":"Scanning locally: SonarQube Docker Container","hash":"_scanning_locally_sonarqube_docker_container","id":4}]},"148":{"id":148,"text":"Table of Contents Required steps Update image tags of Jenkins deployments Update Jenkinsfiles in Git repositories Grant image-puller rights to your *-cd namespace Component resource constraints Notable changes Component deployment behaviour Jenkins slave NodeJS 8 New Tailor version Deprecation of shared-services namespace New features SonarQube quality gates Skopeo Common / Known Issues Learn all about how to update your OpenDevStack based project to ODS 2.x. It is assumed that you are updating from ODS 1.2.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (2.x), and trigger a deployment. Edit every Jenkinsfile. The shared library should point to 2.x, e.g.: library identifier: 'ods-library@2.x', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) Also, the image used to run the pipeline in should point to 2.x, e.g.: odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven:2.x\", ... ) This step is not strictly necessary, but recommended as projects created with version 2.x will have those rights by default. Having this setup will enable you to use the *-cd namespace for common base images to reduce build times. Run the following, replacing $PROJECT_ID with your project ID: oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-test -n $PROJECT_ID-cd oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-dev -n $PROJECT_ID-cd Note that you need to be an admin on your project in order to run those commands. For more information, see ods-core#293. Newly created components now have memory quotas (ods-quickstarters#12) and CPU quotas (ods-quickstarters#74) configured. It is recommended (though not required) to configure resource constraints for existing components as well. If you are unsure which values to set, refer to the new defaults and check the current usage in the \"Metrics\" section in OpenShift. In the shared library, rollouts will be triggered manually now when no config/image trigger exists on the DeploymentConfig. The cd/jenkins-slave-nodejs8-angular image has been discontinued. Please update to cd/jenkins-slave-nodejs10-angular. For more information, see ods-quickstarters#71. Tailor has been updated to 0.11.0 in the Jenkins slaves, see ods-core#290. The shared-images namespace (containing common base images) has been removed from new ODS 2.0 installation. For existing installations, it is likely being kept for some time by the cluster administrator to enable users to react to this change. If you use a component based on the ds-jupyter-notebook or ds-rshiny quickstarters, you should switch to using the new authentication approach, which is uing an OpenShift OAuth proxy instead of a Nginx service. See ods-quickstarters#46. If you use the Airflow Quickstarter, its base images should now be built in your *-cd namespace See ods-quickstarters#60. It is now possible to opt-in to failing the build if the SonarQube scan fails the quality gate defined in SonarQube. To enable this, change the call of stageScanForSonarqube(context) to stageScanForSonarqube(context, true). For more information, see ods-jenkins-shared-library#22. When working with images, you may make use of Skopeo, which is now part of the Jenkins slaves. See ods-core#253. When provisioning new components, you must use a name that differs from the component type, otherwise some quickstarters fail. E.g. when creating a new component of type fe-react, you cannot name it fe-react but must choose another name like my-app. For more information, see https://github.com/opendevstack/ods-provisioning-app/issues/336.","title":"Update Guide to version 2.x for OpenDevStack users","component":"opendevstack","version":"4.x","name":"2x","url":"/opendevstack/latest/update-guides/2x.html","titles":[{"text":"Required steps","hash":"_required_steps","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Update Jenkinsfiles in Git repositories","hash":"_update_jenkinsfiles_in_git_repositories","id":3},{"text":"Grant image-puller rights to your *-cd namespace","hash":"_grant_image_puller_rights_to_your_cd_namespace","id":4},{"text":"Component resource constraints","hash":"_component_resource_constraints","id":5},{"text":"Notable changes","hash":"_notable_changes","id":6},{"text":"Component deployment behaviour","hash":"_component_deployment_behaviour","id":7},{"text":"Jenkins slave NodeJS 8","hash":"_jenkins_slave_nodejs_8","id":8},{"text":"New Tailor version","hash":"_new_tailor_version","id":9},{"text":"Deprecation of shared-services namespace","hash":"_deprecation_of_shared_services_namespace","id":10},{"text":"New features","hash":"_new_features","id":11},{"text":"SonarQube quality gates","hash":"_sonarqube_quality_gates","id":12},{"text":"Skopeo","hash":"_skopeo","id":13},{"text":"Common / Known Issues","hash":"_common_known_issues","id":14}]},"149":{"id":149,"text":"Table of Contents New central ods namespace Update image tags of Jenkins deployments Jenkins Shared Library changes Renamed pipelines and stages Reduced boilerplate Changed agent images Changed context properties Different image tags Changes to Jenkins agent images General upgrade to Python 3.8 Airflow Cluster Jenkins agent no longer supported Learn all about how to update your OpenDevStack based project to ODS 3.x. It is assumed that you are updating from ODS 2.x. One of the biggest changes in ODS 3 is that there is a new central namespace, named ods. This namespace hosts the complete ODS installation, such as a provisioning app, Nexus, SonarQube, and images for Jenkins (master and agent). This central namespace replaces the previous namespaces cd (which hosted Nexus, SonarQube, etc.) as well as prov-test, prov-dev and prov-cd (which hosted the provisioning app). As a user, you will be affected by this change insofar as the images you use for the Jenkins master instance and Jenkins agent nodes will need to be retrieved from ods instead of cd (see next section). Further, depending on the migration done by the administrator, the URLs of Nexus, SonarQube and the provisioning app might have changed. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (3.x), and trigger a deployment. Note that you also need to change the namespace of the images from cd to ods (see above). Since ODS 2, it is also recommended to remove any image triggers from jenkins and webhook-proxy, so that any image changes are only rolled out by yourself. If you choose to remove the image trigger, ensure that the imagePullPolicy is set to Always to always get the latest 3.x image when you deploy. If the administrator of your ODS cluster chose to use a custom Bitbucket project for the 3.x installation, then you’ll need to set the environment variable ALLOWED_EXTERNAL_PROJECTS= for the webhook-proxy DeploymentConfig. Otherwise you will not be able to provision quickstarters. 3.x ships with the three pipelines instead of just one. In 2.x, the shared library offered one pipeline to build components, named odsPipeline. This has been renamed to odsComponentPipeline to make its purpose clearer and to distinguish it from the other pipelines, odsQuickstarterPipeline (to provision quickstarters) and odsOrchestrationPipeline (to orchestrate multiple repositories using the release manager). To provide backwards compatibility, odsPipeline is still available, but deprecated and will be removed in ODS 4. In line with this change, the stages have been renamed too, which also makes them easier to distinguish from custom stages written by yourself in the Jenkinsfile. As with the pipeline, the old stages are still available but slated for removal in ODS 4. Here’s a list of the changes: stageScanForSonarqube is now odsComponentStageScanWithSonar stageScanForSnyk is now odsComponentStageScanWithSnyk stageStartOpenshiftBuild is now odsComponentStageBuildOpenShiftImage stageDeployToOpenshift is now odsComponentStageRolloutOpenShiftDeployment stageUploadToNexus is now odsComponentStageUploadToNexus Please note the new casing (e.g. OpenShift instead of Openshift). Further, the new stages all take the same two arguments: IContext context and Map config = [:]. Please see the documentation for details. In particular, some options which would previously have been set on odsPipeline can and should be set on the stage where they are used (however all options have been kept for backwards compatibility). A Jenkinsfile in 2.x looks roughly like this: def final projectId = 'foo' def final componentId = 'bar' def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def dockerRegistry node { dockerRegistry = env.DOCKER_REGISTRY } @Library('ods-jenkins-shared-library@2.x') _ odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-golang:2.x\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: ['master': 'dev'] ) { context -> stageScanForSonarqube(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) } That is a lot of boilerplate. 3.x reduces this dramatically: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: ['master': 'dev'] ) { context -> odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) odsComponentStageRolloutOpenShiftDeployment(context) } Note that the new Jenkinsfile example already uses the new pipeline/stage names as outlined above. Apart from this, it makes use of a new config option, imageStreamTag which removes the need to read the DOCKER_REGISTRY environment variable. If you need it, the image config is still present (e.g. to reference images outside of OpenShift). projectId and componentId are now automatically configured, but can still be set if desired. Up to and including 2.x, Jenkins used \"slave images\" to do its work. They have been renamed to \"agent images\" in 3.x. All new agent images are located in the new central namespace ods. Therefore, you need to update the references in your Jenkinsfile (as shown above): cd/jenkins-slave-base is now ods/jenkins-agent-base cd/jenkins-slave-golang is now ods/jenkins-agent-golang cd/jenkins-slave-maven is now ods/jenkins-agent-maven cd/jenkins-slave-nodejs10-angular is now ods/jenkins-agent-nodejs10-angular cd/jenkins-slave-python is now ods/jenkins-agent-python cd/jenkins-slave-scala is now ods/jenkins-agent-scala The context object available to use in stages has been slimmed down by removing properties unlikely to be useful to author stages (such as resource constraints of the Jenkins agent pod). Please review the documentation in case your authored stages make heavy use of the context object. One notable change to the context object is that bitbucketHost did not include the scheme previously. Now, bitbucketHost is an alias for bitbucketUrl which does include the scheme. This change was made to align the property with nexusHost and nexusUrl, which both include the scheme as well. If you used context.bitbucketHost in one of your Jenkinsfile`s, you may now use `context.bitbucketHostWithoutScheme. A notable addition to the context object is a new property issueId, which exposes the Jira issue ID (such as 123 from branch feature/FOO-123-bar-baz). Previously, images produced by odsComponentStageBuildOpenShiftImage where tagged with context.tagversion, which consisted of the Jenkins build number and the (shortened) Git commit (e.g. 7-cd3e9082). This made it difficult for other processes (unaware of the Jenkins build number) to find those images. The images are now tagged with just the (shortened) Git commit (e.g. cd3e9082). This change also has the huge benefit that it allows to promote images between environments (avoiding to rebuild them) using the new stage odsComponentStageImportOpenShiftImageOrElse. Some agent images (jenkins-agent-maven, jenkins-agent-nodejs10-angular, jenkins-agent-scala) exposed the environment variables NEXUS_HOST and NEXUS_USERNAME/NEXUS_PASSWORD/NEXUS_AUTH. This was not done intentionally, but as a side effect of using those variables during image build time. In 3.x, that has been cleaned up. Now those variables are passed as build arguments to the image build, which means they are no longer accessible as environment variables in the running container. Nexus credentials can and should be accessed from the pipeline context (context.nexusUrl, context.nexusUsername and context.nexusPassword). As a consequence, if a Jenkinsfile relies on the presence of those environment variables without setting them explicitly using withEnv, it will fail to run in 3.x. That said, the Jenkinsfile templates which shipped by default with the quickstarters did not rely on the environment variables - with the exception of fe-ionic which did not set NEXUS_HOST explicitly in the Build stage. Jenkins agent jenkins-agent-python as well as all python related quickstarters (be-python-flask, ds-jupyter-notebook and ds-ml-service) have been upgraded to python 3.8. This is not affecting default provisioned Jenkinsfile for ds-jupyter-notebook nor be-python-flask quickstarters that exist before ODS 3.x. But, ds-ml-service provisoned quickstarters before ODS 3.x need to slightly modify its Jenkinsfile before upgrading to ODS 3.x by just avoiding running any pip install --user (see new Jenkinsfile.template to get a suggested fix, basically using virutalenv; which is the recommended way of working when requiring building python packages). If you provisioned airflow-cluster quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. Therefore, the jenkins-slave-airflow:2.x can be shifted to jenkins-agent-python:3.x when upgrading to ODS 3.x.","title":"Update Guide to version 3.x for OpenDevStack users","component":"opendevstack","version":"4.x","name":"3x","url":"/opendevstack/latest/update-guides/3x.html","titles":[{"text":"New central ods namespace","hash":"_new_central_ods_namespace","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Jenkins Shared Library changes","hash":"_jenkins_shared_library_changes","id":3},{"text":"Renamed pipelines and stages","hash":"_renamed_pipelines_and_stages","id":4},{"text":"Reduced boilerplate","hash":"_reduced_boilerplate","id":5},{"text":"Changed agent images","hash":"_changed_agent_images","id":6},{"text":"Changed context properties","hash":"_changed_context_properties","id":7},{"text":"Different image tags","hash":"_different_image_tags","id":8},{"text":"Changes to Jenkins agent images","hash":"_changes_to_jenkins_agent_images","id":9},{"text":"General upgrade to Python 3.8","hash":"_general_upgrade_to_python_3_8","id":10},{"text":"Airflow Cluster Jenkins agent no longer supported","hash":"_airflow_cluster_jenkins_agent_no_longer_supported","id":11}]},"150":{"id":150,"text":"Table of Contents Update image tags of Jenkins deployments Jenkins Shared Library What’s new? Required changes to adopt 4.x Notes about quickstarters ds-ml-service quickstarter no longer supported ds-jupyter-notebook renamed to ds-jupyter-lab Learn all about how to update your OpenDevStack based project to ODS 4.x. It is assumed that you are updating from ODS 3.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (4.x), and trigger a deployment. ODS has had support for the OpenShift-specific DeploymentConfig resources (controlled by ReplicationControllers) only so far. Now, Kubernetes-native Deployment resources (controlled by ReplicaSets) can be used as well in the component pipeline. Deployment resources are recommended by OpenShift going forward, see https://docs.openshift.com/container-platform/latest/applications/deployments/what-deployments-are.html. Helm 3 is supported now in the component pipeline. This means that Helm (with plugins helm-diff and helm-secrets) can be used as an alternative to Tailor (OpenShift Templates) to define Kubernetes resources in your repository. Helm has some limitations in OpenShift 3.11, but it is the recommended way forward on OpenShift 4. Tailor will be phased out at some point in the future when OpenShift 3.11 is no longer supported by ODS. If you do not author Kubernetes resources in your repository, now is a great time to start with Helm. If you already define OpenShift Templates in your repository and want to switch to Helm, read the migration guide from Tailor to Helm. All ODS component stages understand the branch/branches options now. Those options allow pipeline authors to control for which branches a specific stage should run. As with the branchToEnvironmentMapping option, three types of branch references are supported: exact match (e.g. master, develop - matching branches named master, develop) prefix match (e.g. release/, 'feature/' - matching branches named release/1, feature/foobar) wildcard match (* - matching all branches) If you use Git submodules in your repository, the submodules will now be checked out by Jenkins. This is done automatically when a .gitmodules file is present. Update @Library('ods-jenkins-shared-library@3.x') _ to @Library('ods-jenkins-shared-library@4.x') _ and point to agent images with the 4.x tag, e.g. change imageStreamTag: 'ods/jenkins-agent-golang:3.x' to imageStreamTag: 'ods/jenkins-agent-golang:4.x'. Application images are built in your -cd project now. Previously they were built in your -dev and *-test project. While the update itself should be completely automatic, there are two consequences: You can delete BuildConfig and ImageStream resources from your OpenShift templates (in fact odsComponentStageBuildOpenShiftImage does not run tailor apply anymore). If you made modifications to a BuildConfig you’ll need to re-apply those changes in your *-cd project once the BuildConfig has been migrated there by a pipeline run. ODS 3.x introduced odsComponentStageImportOpenShiftImageOrElse, which allowed to execute some stages only if a container image could not be imported from another namespace or already existed in the current namespace. In ODS 4.x, the check for existing images is only performed in the *-cd namespace. To reflect this, odsComponentStageImportOpenShiftImageOrElse has been deprecated, and is now aliased to the new method, odsComponentFindOpenShiftImageOrElse. The pipeline option imagePromotionSequences has been removed as it is not applicable anymore. odsComponentStageRolloutOpenShiftDeployment rolls out all deployment resources together now. If you had multiple DeploymentConfig resources previously, you had to target each one by specifying the config option resourceName. This is no longer possible - instead the stage iterates over all DeploymentConfig resources with the component label (app=${projectId}-${componentId}). Changes must be made to pipelines that have multiple deployments, such as components based on the ds-jupyter-notebook and ds-rshiny quickstarter. The auto-cloning feature has been removed. If you used this to create ad-hoc namespaces per Jira issue, this is no longer possible now. Changes must be made if your pipeline configured autoCloneEnvironmentsFromSourceMapping. Please see https://github.com/opendevstack/ods-jenkins-shared-library/issues/374 for more information. Versioned development environments in orchestration pipeline are not created automatically anymore. Note that it is still possible to use separate development environments per version, but the namespaces have to be created manually upfront. Take this into account if your pipeline configures versionedDevEnvs: true. Please see https://github.com/opendevstack/ods-jenkins-shared-library/pull/513 for more information. odsComponentStageRolloutOpenShiftDeployment changed its return type because it now supports Deployment resources, as well as multiple deployment resources. Therefore, it returns a map now, where the keys are /, e.g. Deployment/foo and DeploymentConfig/bar. This only affects pipelines that make use of this return value, such as components based on the ds-ml-service and be-fe-mono-repo-plain quickstarter. If you provisioned ds-ml-service quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. It has been set as deprecated due to being superseded by other OpenSource projects like MLflow and Cloud SaaS solutions. The quickstarter ds-jupyter-lab is the new name for the known ds-jupyter-notebook. Which also comes with the newest JupyterLab version 3.","title":"Update Guide to version 4.x for OpenDevStack users","component":"opendevstack","version":"4.x","name":"4x","url":"/opendevstack/latest/update-guides/4x.html","titles":[{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":1},{"text":"Jenkins Shared Library","hash":"_jenkins_shared_library","id":2},{"text":"What’s new?","hash":"_whats_new","id":3},{"text":"Deployment resources","hash":"_deployment_resources","id":4},{"text":"Helm","hash":"_helm","id":5},{"text":"branch/branches options for all stages","hash":"_branchbranches_options_for_all_stages","id":6},{"text":"Support of gitmodules","hash":"_support_of_gitmodules","id":7},{"text":"Required changes to adopt 4.x","hash":"_required_changes_to_adopt_4_x","id":8},{"text":"Notes about quickstarters","hash":"_notes_about_quickstarters","id":9},{"text":"ds-ml-service quickstarter no longer supported","hash":"_ds_ml_service_quickstarter_no_longer_supported","id":10},{"text":"ds-jupyter-notebook renamed to ds-jupyter-lab","hash":"_ds_jupyter_notebook_renamed_to_ds_jupyter_lab","id":11}]},"151":{"id":151,"text":"This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: [ 'master': 'dev', // 'release/': 'test' ] ) { context -> odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage } odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) } odsComponentStageRolloutOpenShiftDeployment(context) } The version in @Library can be any Git revision, such as a branch (e.g. master or 2.x), a tag (e.g. v2.0) or even a specific commit. There are many built-in stages like odsComponentStageScanWithSonar that you can use, please see Stages for more details. odsComponentPipeline can be customized by passing configuration options like this: odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', dockerDir: 'foo' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. notifyNotGreen Whether to send notifications if the build is not successful. Enabled by default. emailextRecipients Notify to this list of emails when notifyNotGreen is enabled. It is empty by default. branchToEnvironmentMapping Define which branches are deployed to which environments, see Git Workflow / Branch to Environment Mapping projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. environmentLimit Number of environments to allow when auto-cloning environments. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. sonarQubeBranch Please use option branch on odsComponentStageScanWithSonar. failOnSnykScanVulnerabilities Deprecated in 3.x! Please use option failOnVulnerabilities on odsComponentStageScanWithSnyk. openshiftBuildTimeout Deprecated in 3.x! Please use option buildTimeoutMinutes on odsComponentStageBuildOpenShiftImage. openshiftRolloutTimeout Deprecated in 3.x! Please use option deployTimeoutMinutes on odsComponentStageRolloutOpenShiftDeployment. testResults Configurable location for xunit test results, in case the build does not put them into build/test-results/test. commitGitWorkingTree Defaulting to false, if set to true, any changes in the working directory added with git add will be committed to the current branch and pushed. When you write custom stages inside the closure passed to odsComponentPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsComponentPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsComponentPipeline starts. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. nexusUrl Nexus URL - value taken from NEXUS_URL. If NEXUS_URL is not present, it will default to NEXUS_HOST (which also includes the scheme). nexusHost is an alias for nexusUrl. nexusUsername Nexus username. nexusPassword Nexus password. nexusUrlWithBasicAuth Nexus URL, including username and password as BasicAuth. nexusHostWithBasicAuth is an alias for nexusUrlWithBasicAuth. sonarQubeEdition Edition of SonarQube in use, determined by SONAR_EDITION (defaults to community). environment The environment which was chosen as the deployment target, e.g. dev. targetProject Target project, based on the environment. E.g. foo-dev. cdProject CD project. E.g. foo-cd. groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. selector Selector common to all resources of component, defaults to app=${projectId}-${componentID} (e.g. app=foo-be-auth). gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. shortGitCommit Short Git commit SHA (first 8 chars) to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message (sanitized). gitCommitRawMessage Git commit message (raw). gitCommitTime Git commit time in RFC 3399. issueId Jira issue ID if any present in either commit message or branch name (e.g. 123 from commit message FOO-123: Bar or branch feature/FOO-123-bar). If the issue ID is present in both, the branch name has precedence. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the pipeline according to your needs by configuring the pipeline option branchToEnvironmentMapping. The setting could look like this: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'hotfix/': 'hotfix', '*': 'review' ] There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OpenShift. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OpenShift. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsComponentPipeline( branchToEnvironmentMapping: [:], podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if Bitbucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate By default, the component pipeline uses existing OpenShift resources, and just creates new images / deployments related to them. However, it is possible to control all OpenShift resources in code, following the infrastructure-as-code approach. This can be done by defining the resources as OpenShift templates in the directory openshift of the repository, which will then get applied by Tailor when running the pipeline. The advantage of this approach: All changes to OpenShift resources are traceble: who did the change and when? Moving your application between OpenShift projects or even clusters is trivial Changes to your application code that require a change in configuration (e.g. a new environment variable) as well can be done together in one commit. If you have an existing component for which you want to enable this feature, you simply need to run: mkdir -p openshift tailor -n foo-dev export -l app=foo-bar > openshift/template.yml Commit the result and the component pipeline should show in the ouput whether there has been drift and how it was reconciled. When using this approach, you need to keep a few things in mind: Any changes done in the OpenShift web console will effectively be reverted with each deploy. When you store templates in code, all changes must be applied to them. You can always preview the changes that will happen by running tailor diff from your local machine. DeploymentConfig resources allow to specify config and image triggers (and ODS configures them by default like this). When deploying via Tailor, it is recommended to remove the image trigger, otherwise you might trigger two deployments: one when config (such as an environment variable) changes, and one when the image changes. When you remove the image trigger, it is crucial to add the internal registry to the image field, and to configure imagePullPolicy: Always for the container (otherwise you might roll out old images). If you want to use encrypted secrets with Tailor, you have to create a keypair for Jenkins so that the pipeline can use it to decrypt the parameters. The easiest way to do this is to create an OpenShift secret named tailor-private-key and sync it with Jenkins as a credential. Example: tailor secrets generate-key jenkins@example.com oc -n foo-cd create secret generic tailor-private-key --from-file=ssh-privatekey=private.key oc -n foo-cd label secret tailor-private-key credential.sync.jenkins.openshift.io=true Controlling your OpenShift resources in source code enables a lot of other use cases as well. For example, you might want to preview changes to a component before merging the source code. By using Tailor to deploy your templates, you can create multiple running components from one repository, e.g. one per feature branch. Following are some steps how to achieve this: First, add 'feature/': 'dev' to the branchToEnvironmentMapping. Then, create new variables in the pipeline block: def componentSuffix = context.issueId ? \"-${context.issueId}\" : '' def suffixedComponent = context.componentId + componentSuffix With this in place, you can adapt the rollout stage: odsComponentStageRolloutOpenShiftDeployment( context, [ tailorSelector: \"app=${context.projectId}-${suffixedComponent}\", tailorParams: [\"COMPONENT_SUFFIX=${componentSuffix}\"] ] ) And finally, in your openshift/template.yml, you need to add the COMPONENT_SUFFIX parameter and append ${COMPONENT_SUFFIX} everywhere the component ID is used in deployment relevant resources (such as Service, DeploymentConfig, Route). That’s all you need to have automatic previews! You might want to clean up when the code is merged, which can be achieved with something like this: stage('Cleanup preview resources') { if (context.environment != 'dev') { echo \"Not performing cleanup outside dev environment\"; return } def mergedIssueId = org.ods.services.GitService.mergedIssueId(context.projectId, context.repoName, context.gitCommitRawMessage) if (mergedIssueId) { echo \"Perform cleanup of suffix '-${mergedIssueId}'\" sh(\"oc -n ${context.targetProject} delete all -l app=${context.projectId}-${context.componentId}-${mergedIssueId}\") } else { echo \"Nothing to cleanup\" } } The shared library already sets the build status of the built commit. It also provides convenience methods on BitbucketService to interact with pull requests: String createPullRequest(String repo, String fromRef, String toRef, String title, String description, List reviewers) creates a pull request in repo from branch fromRef to toRef. reviewers is a list of bitbucket user names. List getDefaultReviewers(String repo) returns a list of bitbucket user names (not display names) that are listed as the default reviewers of the given repo. String getDefaultReviewerConditions(String repo) returns all default reviewer conditions of the given repo, which can be parsed using readJSON. String getPullRequests(String repo, String state = 'OPEN') returns all open pull requests, which can be parsed using readJSON. Map findPullRequest(String repo, String branch, String state = 'OPEN') tries to find a pull request for the given branch, and returns a map with its ID and target branch. void postComment(String repo, int pullRequestId, String comment) allows to add comment to the PR identified by pullRequestId. To make use of these methods, you need to get an instance of the BitbucketService in your Jenkinsfile like this: Jenkinsfile import org.ods.services.ServiceRegistry import org.ods.services.BitbucketService def sayHello(def context) { stage('Say Hello') { def bitbucketService = ServiceRegistry.instance.get(BitbucketService) bitbucketService.postComment(context.repoName, 1, \"Hello world\") } } If the subject of the built commit message contains [ci skip], [skip ci] or ***NO_CI***, the pipeline is skipped. # skip pipeline (one-line commit) $ git commit -m \"docs: update README [ci skip]\" # run pipeline (multi-line commit) as it is not part of the subject $ git commit -m \"docs: update README - add section installation - [ci skip]\" The Jenkins build status will be set to NOT_BUILT, the Bitbucket build status to SUCCESSFUL (as there is no \"skipped\" state). The pipeline will start to execute initially, but abort before launching any agent nodes or starting any of the stages defined in the Jenkinsfile. Each built-in stage (like odsComponentStageScanWithSonar) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsComponentStageScanWithSonar(context, [branch: 'production']) Checks if an image for the current commit exists already, otherwise executes the given closure. Example: odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage to build your application package } odsComponentStageBuildOpenShiftImage(context) } The step can be customized using the options resourceName and imageTag. Using this step in your Jenkinsfile allows you to avoid building a container image for the same Git commit multiple times, reducing build times and increasing reliability as you can promote the exact same image from one environment to another. Keep in mind that image lookup works by finding an image tagged with the current Git commit. If you merge a branch into another using a merge commit, the current Git commit SHA will differ from the previously built image tag, even if the actual contents of the repository are the same. To ensure image importing kicks in, use the --ff-only option on git merge (this can also be enabled for pull requests in Bitbucket under \"Merge strategies\"). There are a few consequences when doing so, which should be kept in mind: No merge commit is created, which has the downside that you do not see when a PR was merged, and that the merge commit is a convenient way to find the associated PR. Further, if the latest commit on a branch which you want to merge contains [ci skip], beware that the build on the target branch will also be skipped. That siad, having no merge commit has the upside that your Git history is not polluted by merge commits. Enforcing a fast-forward merge prevents you from merging a branch which is not up-to-date with the target branch. This has the downside that before merging, you may need to rebase your branch or merge the target branch into your branch if someone else updated the target branch in the meantime. While this may cause extra work, it has the upside that you cannot accidentally break the target branch (e.g. tests on your branch may work based on the outdated target branch, but fail after the merge). In summary, using git merge --ff-only provides safety, a clean history and allows to promote the exact same image between environments. The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the sonar-project.properties file in the repository being built. If your SonarQube server edition allows to scan multiple branches (any commercial edition does), then this stage will automatically decorate pull requests in Bitbucket with feedback from SonarQube (if the PR already exists at the time of the Jenkins pipeline run). In debug mode, the sonar-scanner binary is started with the -X flag. If no sonar.projectVersion is specified in sonar-project.properties, it is set to the shortened Git SHA. Option Description analyzePullRequests boolean Whether to analyze pull requests and decorate them in Bitbucket. Turned on by default, however a scan is only performed if the branch property allows it. branch String Branch to scan. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to scan. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and \\ all branches (). Defaults to master for the community edition of SonarQube, and for all other editions (which are capable of handling multiple branches). longLivedBranches List Branch(es) for which no PR analysis should be performed. If not set, it will be extracted from branchToEnvironmentMapping of the context. requireQualityGatePass boolean Whether to fail the build if the quality gate defined in the SonarQube project is not reached. Defaults to false. resourceName String Name of BuildConfig/ImageStream of the image that we want to scan (defaults to context.componentId). BuildOpenShiftImageStage puts the imageRef into a map with the resourceName as key. In order to be able to receive the imageRef for scanning, the resourceName needs to be the same as in BuildOpenShiftImageStage. The \"Aqua Security Scan\" stage scans an image that was previously built in that same pipeline run. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan result on the Aqua platform. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. To get started, make sure you have a ConfigMap in OpenDevStack project namespace (usually ods) in OpenShift that has these fields: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: registry: Refers to a name for the image registry given in the Aqua platform by an Aqua platform admin. secretName: Name of a Secret that contains the credentials of the Aqua platform user that is used for executing the scan. That user needs to have scanner rights. This field is optional, if the property doesn’t exists the system will use the credential 'cd-user-with-password'. url: Base URL of the Aqua platform (including scheme). enabled: If true, the scan always occur in all projects. False to disable the scan. nexusRepository: Name of the repository in Nexus instance to store the results of analysis in HTML format. alertEmails: Optional field. It contains the emails splitted by ',' to send error notifications regarding with Aqua analysis (misconfigurations, etc…​). The mail server must be configured in Jenkins to send the emails. Is possible to disable the analysis at project level. for that is necessary to add in the ConfigMap new properties e.g. like this: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: project.key1.enabled: project.key2.enabled: project.key1.enabled: Property to indicate that key1 (being key1 the key of the project) has the aqua analysis disabled. project.key2.enabled: The same but for key2 project. The \"Trivy Security Scan\" stage scans the filesystem of the cloned repository using Trivy and generates a SBOM report, with CycloneDX format by default. Check Trivy supported formats here. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan report stored in Nexus. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. To get started, edit your Jenkinsfile and add the Trivy stage: ) { context -> ... odsComponentStageScanWithTrivy(context) ... } Option Description additionalFlags List Additional flags for the Trivy CLI. Please refer to the official Trivy CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--debug', '--timeout=10m'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). format String Set the format for the generated report. Defaults to cyclonedx. nexusDataBaseRepository String Name of the Nexus repository used to proxy the location of the database of vulnerabilities located in GitHub. Defaults to docker-group-ods. nexusReportRepository String Name of the Nexus repository where the scan report will be stored. Defaults to leva-documentation. reportFile String Name of the file that will be archived in Jenkins and uploaded in Nexus. Defaults to trivy-sbom.json. resourceName String Name of component that we want to scan. Defaults to context.componentId. scanners String Comma-separated list of what security issues to detect. Defaults to vuln,config,secret,license. vulType String Comma-separated list of vulnerability types to scan. Defaults to os,library. The \"Snyk Security Scan\" stage performs two tasks: It uploads your 3rd party dependencies including their licenses for monitoring. Snyk will then notify developers about new vulnerabilities per email once they are reported to the Snyk Vulnerability Database. It analyses your 3rd party dependencies including their licenses and breaks the build if vulnerable versions are found. To get started, setup an organisation in snyk.io with exactly the same name as your ODS project name. Under \"Settings\", create a service account for this organisation and make a note of the displayed token. Edit your Jenkinsfile and add the Snyk stage: ) { context -> ... odsComponentStageScanWithSnyk(context, [snykAuthenticationCode: ]) ... } It is recommended to read your authentication token dynamically, e.g. from an environment variable or a credential in your Jenkins master. Option Description additionalFlags List Additional flags for the Snyk CLI. Please refer to the official Snyk CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--all-sub-projects', '--show-vulnerable-paths=all'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildFile String Build file from which to gather dependency information. Defaults to build.gradle. failOnVulnerabilities boolean Whether to fail the build when vulnerabilities are found. Defaults to true. organisation String Name of the Snyk organisation. Default to context.projectId. projectName String Name of the Snyk project name. Default to context.componentId. severityThreshold String Severity threshold for failing. If any found vulnerability has a severity equal or higher to the threshold, the snyk test will return with a failure status. Possible values are low, medium, high. Defaults to low. snykAuthenticationCode String Required! Authentication token of a service account within your organisation. Triggers (and follows) a build in the BuildConfig related to the repository being built. The resulting image is tagged with context.shortGitCommit. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildArgs Map Pass build arguments to the image build process. buildTimeoutMinutes Integer Timeout of build (defaults to 15 minutes). buildTimeoutRetries Integer Adjust retries to wait for the build pod status (defaults to 5). dockerDir String Docker context directory (defaults to docker). extensionImageLabels Map Extra image labels added into imageLabels imageLabels Map Pass labels which should be added on the image. Each label will be prefixed with ext.. imageTag String Image tag to apply (defaults to context.shortGitCommit). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). Imports an image from another namespace. By default, the source image is identified using the commit which triggered the pipeline run. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). imagePullerSecret String Name of image-puller secret (optional, used when pulling images from an external source cluster). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). sourceProject String OpenShift project from which to import the image identified by resourceName. sourceTag String Image tag to look for in the sourceProject (defaults to context.shortGitCommit). targetTag String Image tag to apply to the imported image in the target project (defaults to sourceTag). Rolls out the current resources as defined in the component. Without any configuration the stage tries to guess what a user expects. If the component contains a directory name chart, a Helm deployment is assumed. If the component contains a directory name openshift, a Tailor deployment is assumed. If neither exists a Tailor deployment is assumed. Triggers a release or update of an release with Helm. The stage will use the helm command to trigger the release. The command will be executed in the directory referenced by chartDir. If the directory does not exist, the stage will fail. The images used in the deployment will not be tagged or otherwise modified. HELM_DIFF_IGNORE_UNKNOWN_FLAGS=true helm -n play-dev secrets diff upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=example-dev \\ --set imageTag=deadbeef69cafebabe \\ --no-color --three-way-merge --normalize-manifests \\ example-release . || true # run the upgrade helm -n play-dev secrets upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=play-dev \\ --set imageTag=deadbeef69cafebabe \\ example-release . Triggers (and follows) a rollout of the DeploymentConfig related to the repository being built. It achieves this by tagging the image built in odsComponentStageBuildOpenShiftImage with latest. This might already trigger a rollout based on an existing ImageTrigger. If none is set, the stage will start a manual rollout. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In this case, it is recommended to remove any image triggers to avoid duplicate rollouts (one when configuration changes due to a config trigger and one when the image is tagged to latest). In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). chartDir String Directory of Helm chart (defaults to chart). deployTimeoutMinutes Integer Adjust timeout of rollout (defaults to 5 minutes). Caution: This needs to be aligned with the deployment strategy timeout (timeoutSeconds) and the readiness probe timeouts (initialDelaySeconds + failureThreshold * periodSeconds). deployTimeoutRetries Integer Adjust retries to wait for the pod during a rollout (defaults to 5). helmAdditionalFlags List List of additional flags to be passed verbatim to to helm upgrade (empty by default). Only relevant if the directory referenced by chartDir exists. helmDefaultFlags List List of default flags to be passed verbatim to to helm upgrade (defaults to ['--install', '--atomic']). Typically these should not be modified - if you want to pass more flags, use helmAdditionalFlags instead. Only relevant if the directory referenced by chartDir exists. helmDiff boolean Whether to show diff explaining changes to the release before running helm upgrade (true by default). Only relevant if the directory referenced by chartDir exists. helmEnvBasedValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. These must contain a suffix called '.env.yml' - which will be replaced during rollout and deployment, and then added to helmValueFiles Passing a string literal of 'values.env.yaml' will be expanded to their respective environments. For example: 'values.env.yaml' will become 'values.dev.yaml', 'values.test.yaml' or 'values.prod.yaml'. That means creating the usual files that are named after their respective environment are parsed as usual. helmPrivateKeyCredentialsId String Credentials name of the private key used by helm-secrets (defaults to ${context.cdProject}-helm-private-key). The fingerprint must match the one specified in .sops.yaml. Only relevant if the directory referenced by chartDir exists. helmReleaseName String Name of the Helm release (defaults to context.componentId). Change this value if you want to install separate instances of the Helm chart in the same namespace. In that case, make sure to use {{ .Release.Name }} in resource names to avoid conflicts. Only relevant if the directory referenced by chartDir exists. helmValues Map Key/value pairs to pass as values (by default, the key imageTag is set to the config option imageTag). Only relevant if the directory referenced by chartDir exists. helmValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. imageTag String Image tag on which to apply the latest tag (defaults to context.shortGitCommit). openshiftDir String Directory with OpenShift templates (defaults to openshift). selector String Selector scope used to determine which resources are part of a component (defaults to context.selector). tailorExclude String Resource kind exclusion used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile String Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorParams List Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve List Paths to preserve in the live configuration (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPrivateKeyCredentialsId String Credentials name of the private key used by Tailor (defaults to ${context.cdProject}-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector String Selector scope used by Tailor (defaults to config option selector). Only relevant if the directory referenced by openshiftDir exists. tailorVerify boolean Whether Tailor verifies the live configuration against the desired state after application (defaults to false). Only relevant if the directory referenced by openshiftDir exists. When tailor does the rollout, all the created or updated OpenShift resources are automatically labeled to ease their management. This is in contrast to helm rollouts which rely on the chart providing the desired labels. Add labels either via the chart directly or via supplying them in the values or values files. Detailed information about the labelling can be found here. Triggers the upload of an artifact to Nexus. Implementation is based on https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api Option Description artifactId String For repositoryType=maven2: default is context.componentId branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). distributionFile String Filename. Defaults to ${context.componentId}-${context.tagversion}.tar.gz groupId String For repositoryType=maven2: default is the groupId on project level, or in case not set at all org.opendevstack.${context.projectId} repository String Name of the Nexus repository. Defaults to candidates. repositoryType String Type of the Nexus repository. Defaults to maven2. targetDirectory String For repositoryType=raw: default is context.projectId version String For repositoryType=maven2: default is context.tagversion Copies a source image into the project. This is useful to get images into the OpenShift registry so that release manager will accept all images. The primary intention is for helm charts so that external images can be imported. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). sourceCredential String sourceCredential is the token to use, if any, to access the source registry sourceImageUrlIncludingRegistry String Source image to import This needs to be in the following format: [REGISTRY/]REPO/IMAGE[:TAG] tagIntoTargetEnv Boolean true will tag the image from the -cd namespace into the targetEnvironment that the pipeline is running for verifyTLS Boolean verifyTLS allows the stage to ignore certificate validation errors. The default is to verify certificate paths","title":"Component Pipeline","component":"opendevstack","version":"4.x","name":"component-pipeline","url":"/opendevstack/latest/jenkins-shared-library/component-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Git Workflow / Branch to Environment Mapping","hash":"_git_workflow_branch_to_environment_mapping","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Advanced","hash":"_advanced","id":6},{"text":"Agent customization","hash":"_agent_customization","id":7},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":8},{"text":"Deploying OpenShift resources from source code","hash":"_deploying_openshift_resources_from_source_code","id":9},{"text":"Interacting with Bitbucket","hash":"_interacting_with_bitbucket","id":10},{"text":"Skipping pipeline runs","hash":"_skipping_pipeline_runs","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"odsComponentFindOpenShiftImageOrElse","hash":"_odscomponentfindopenshiftimageorelse","id":13},{"text":"odsComponentStageScanWithSonar","hash":"_odscomponentstagescanwithsonar","id":14},{"text":"Options","hash":"_options","id":15},{"text":"odsComponentStageScanWithAqua","hash":"_odscomponentstagescanwithaqua","id":16},{"text":"odsComponentStageScanWithTrivy","hash":"_odscomponentstagescanwithtrivy","id":17},{"text":"Options","hash":"_options_2","id":18},{"text":"odsComponentStageScanWithSnyk","hash":"_odscomponentstagescanwithsnyk","id":19},{"text":"Options","hash":"_options_3","id":20},{"text":"odsComponentStageBuildOpenShiftImage","hash":"_odscomponentstagebuildopenshiftimage","id":21},{"text":"Options","hash":"_options_4","id":22},{"text":"odsComponentStageImportOpenShiftImage","hash":"_odscomponentstageimportopenshiftimage","id":23},{"text":"Options","hash":"_options_5","id":24},{"text":"odsComponentStageRolloutOpenShiftDeployment","hash":"_odscomponentstagerolloutopenshiftdeployment","id":25},{"text":"Helm","hash":"_helm","id":26},{"text":"Tailor","hash":"_tailor","id":27},{"text":"Options","hash":"_options_6","id":28},{"text":"Notable Differences between tailor and helm deployments","hash":"_notable_differences_between_tailor_and_helm_deployments","id":29},{"text":"odsComponentStageUploadToNexus","hash":"_odscomponentstageuploadtonexus","id":30},{"text":"Options","hash":"_options_7","id":31},{"text":"odsComponentStageCopyImage","hash":"_odscomponentstagecopyimage","id":32},{"text":"Options","hash":"_options_8","id":33}]},"152":{"id":152,"text":"OpenDevStack provides a Jenkins Shared Library which offers three pipelines: A pipeline to build components, odsComponentPipeline. This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. As a user, you will mostly interface with this pipeline. A pipeline to orchestrate releases with multiple components, odsOrchestrationPipeline. It supports the orchestration of multiple repositories into a live application using the Release Manager quickstarter. A pipeline to provision quickstarters, odsQuickstarterPipeline. This pipeline is useful for quickstarter authors. The implementation was originally based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/jenkins-shared-library/index.html","titles":[{"text":"Background","hash":"_background","id":1}]},"153":{"id":153,"text":"When a rollout happens via tailor there are labels that are added regardless of whether they are in any template or not. This is in contrast to helm which relies on the charts setting the right labels. This decision avoids an unexpected pause or resume during a rollout. A helm rollout will have only the labels that were specified and OpenDevStack will not try to add, remove or change any labels. If your cluster has operators there could still be some label changes. The shared library automatically labels all OpenShift resources created in order to ease their management. The labels applied are based on the recommendations by: Kubernetes OpenShift Helm Some additional labels, specific to OpenDevStack, are also assigned. The labelling process is automatically applied by both the quickstarter and the component pipelines. The orchestration pipeline does not directly perform any labelling, but the component pipeline will set some label values based on the information provided by the release manager, when available. The labels set are not directly used by OpenDevStack, but are just made available to the users both as information about the resources and as a way to find resources in queries. The recommended labels, when given values according to their intended semantics, can be used by tools that recognise them, including OpenShift and Helm. The values for the labels are set, in decreasing order or priority, from: Values forcibly set by the library, which cannot be customised. Metadata information which can be customised through the metadata.yml file in the component repository. Some labels can get default values when none have been assigned in the previous steps. The labels are also assigned to the template of each Deployment or DeploymentConfig resource. This warrants that any pods created will also be appropriately labeled. Changing the template of a Deployment or DeploymentConfig can trigger a new deployment, if a config-change trigger is in place. A best effort is done to avoid multiple deployments. Note that any paused Deployment or DeploymentConfig will be resumed as part of the rollout stage. This is the list of supported labels: Label Meaning Value Example app.kubernetes.io/name The name of the application name metadata parameter mongodb app.kubernetes.io/instance A unique name identifying the instance of an application Component ID user-db app.kubernetes.io/version The version of the application version metadata parameter 4.0.8 app.kubernetes.io/component The component within the architecture role metadata parameter database app.kubernetes.io/part-of The name of a higher level application this one is part of partOf metadata parameter my-online-shop app.kubernetes.io/managed-by The tool being used to manage the operation of an application Autodetected tailor app.openshift.io/runtime The runtime this application runs on runtime metadata parameter spring-boot app.openshift.io/runtime-version The version of the runtime runtimeVersion metadata parameter 2.1.16.RELEASE helm.sh/chart Helm chart name-version Autodetected chartName-1.0.0 app.opendevstack.org/project Project ID Autodetected my-project app.opendevstack.org/type Type of ODS component type metadata parameter ods-service app.opendevstack.org/system-name The name of the system Autodetected some-system app.opendevstack.org/project-version Version across all components in the project Autodetected 1.0 app.opendevstack.org/work-in-progress Whether this project version is still a work in progress Autodetected true Detailed description of each label and how to customise it, if possible. Please, note that valid label values must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. Most label values will be sanitised before assigning, but it is recommended to specify values following these restrictions. The name of the application. This is the software deployed in this component. There may be other instances of the same software in other components. This label is always assigned and its default value is the component id. This value can be customised by setting the name entry in the metadata.yml file. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This label will not be deleted, if it is already set. A unique name identifying the instance of an application. This label is used when there is more than one instance of the software identified by the app.kubernetes.io/name label. This label is automatically set to the component id and it cannot be customised. This label will only be set if its value differs from the value of app.kubernetes.io/name. Therefore, if the name label is set to its default value (component id), this instance label will not be set. Example: user-db The current version of the application (e.g., a semantic version, revision hash, etc.). This is the version of the software identified by the app.kubernetes.io/name label. This value can be customised by setting the version entry in the metadata.yml file and it has no default value. Example: 4.0.8 This label will not be deleted, if it is already set. The component within the architecture. This is the role this component plays in the architecture. This value can be customised by setting the role entry in the metadata.yml file. A best effort will be made to determine a default value for this: If the quickstarter name starts with be- (but not be-fe-), the default is backend. If the quickstarter name starts with fe-, the default is frontend. If the quickstarter name starts with ds-, the default is subsystem. In any other case, there is no default. This default value can only be determined when provisioning the component for the first time from a given quickstarter. No default value is ever calculated by the component or orchestration pipelines. However, if the default value was set by the quickstarter pipeline, it can be overridden, but not deleted. Example: database Any value can be set, but OpenShift recognises the following values: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. Note that data-science components are assigned the ad-hoc subsystem value by default. This label will not be deleted if it is already set. The name of a higher level application this one is part of. This is used to group components as part of a higher-level application, when suitable. It is not meant to be systematically set to the project id, though it could make sense in some specific cases. Note that there is already an OpenDevStack-specific project label that holds the project id. This label is not compulsory and has no default value. This value can be customised by setting the partOf entry in the metadata.yml file. Example: you are building an online shop, and this component is part of it. You can set app.kubernetes.io/part-of=my-online-shop. This label will be removed, if no value is given for it. The tool being used to manage the operation of an application. This is automatically set to tailor (by default) or helm, for components managed with Helm. This value cannot be customised. Example: tailor The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. This value can be customised by setting the runtime entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This label will be removed, if no value is given for it. The version of the runtime. This value can be customised by setting the runtimeVersion entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if app.openshift.io/runtime is not also specified. Example: 2.1.16.RELEASE This label will be removed, if no value is given for it. This should be the chart name and version: {{ .Chart.Name }}-{{ .Chart.Version | replace \"+\" \"_\" }}. This is autodetected and cannot be customised. Only set when the component is managed by Helm. Note that, as per the specification of the label in Helm documentation, the value is always sanitised by replacing the character + with the character _. This is done before the common sanitising performed to all label values. Example: charName-1.0.0 The project id. This is autodetected and cannot be customised. Example: my-project This label will not be deleted if it is already set. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. Generally, only the two first ones create resources in OpenShift. This value can be customised by setting the type entry in the metadata.yml file and it has no default value. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This label will not be deleted if it is already set. This is currently set by the Release Manager to the config item and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. This is currently set by the Release Manager to the change id and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. Boolean value indicating whether the current project version (change id) is still a work in progress. This is currently set by the release manager from the value of the version build parameter and it cannot be customised. This label will not be deleted if it is already set.","title":"OpenShift resource labelling with tailor","component":"opendevstack","version":"4.x","name":"labelling","url":"/opendevstack/latest/jenkins-shared-library/labelling.html","titles":[{"text":"Overview of tailor labels","hash":"_overview_of_tailor_labels","id":1},{"text":"Usage","hash":"_usage","id":2},{"text":"Detailed description","hash":"_detailed_description","id":3},{"text":"app.kubernetes.io/name","hash":"_app_kubernetes_ioname","id":4},{"text":"app.kubernetes.io/instance","hash":"_app_kubernetes_ioinstance","id":5},{"text":"app.kubernetes.io/version","hash":"_app_kubernetes_ioversion","id":6},{"text":"app.kubernetes.io/component","hash":"_app_kubernetes_iocomponent","id":7},{"text":"app.kubernetes.io/part-of","hash":"_app_kubernetes_iopart_of","id":8},{"text":"app.kubernetes.io/managed-by","hash":"_app_kubernetes_iomanaged_by","id":9},{"text":"app.openshift.io/runtime","hash":"_app_openshift_ioruntime","id":10},{"text":"app.openshift.io/runtime-version","hash":"_app_openshift_ioruntime_version","id":11},{"text":"helm.sh/chart","hash":"_helm_shchart","id":12},{"text":"app.opendevstack.org/project","hash":"_app_opendevstack_orgproject","id":13},{"text":"app.opendevstack.org/type","hash":"_app_opendevstack_orgtype","id":14},{"text":"app.opendevstack.org/system-name","hash":"_app_opendevstack_orgsystem_name","id":15},{"text":"app.opendevstack.org/project-version","hash":"_app_opendevstack_orgproject_version","id":16},{"text":"app.opendevstack.org/work-in-progress","hash":"_app_opendevstack_orgwork_in_progress","id":17}]},"154":{"id":154,"text":"Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@4.x') _ odsOrchestrationPipeline( debug: true, odsImageTag: '4.x' ) The release manager quickstarter comes with a Jenkinsfile that is already setup like this. The library automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside a release manager component’s metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-infra, ods-service, ods-saas-service, ods-test and ods-library. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. If you use this type ODS expects to find JUnit XML test results. If you do not have any test results the pipeline will fail. If you are deploying something where JUnit XML test results are not available consider using Repository Type: ods-service. This type designates ODS components designed for consuming on-prem or cloud services of arbitrary type using infrastructure as code. Such components are based on quickstarters whose names start with inf-. This type designates ODS components designed for documenting vendor-provided SaaS services. This type designates ODS components designed for running services of arbitrary type. Examples include repositories based on the airflow-cluster quickstarter. This type designates ODS components designed for running automated tests against a live application. Such components are based on quickstarters whose names start with e2e-. This type designates ODS components designed for library components. Such components are only build in dev (WIP and assemble mode), and are needed for other components to be built. The library will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, our library automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. By default the shared library will rebuild all type ods components, no matter which ones changed since the last release. In order to build only the components whose source code changed (partial rebuilding as we will call it from now on), the following needs to be configured in metadata.yml allowPartialRebuild : true If one repository should always be rebuilt, even if partial rebuild is configured on root level, forceRebuild : true can be set at repository level, e.g. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B forceRebuild : true It is important to highlight that, despite having configured partial rebuild, the orchestration pipeline will still deploy all the components (both those which changed and which did not) to the target environment. By default the shared library will always pull the agent image from the internal docker repository. Depending on the cluster node setup, this may decrease execution performance. In order to re-use loaded images, a knob in the Jenkinsfile configuration of the stage odsOrchestrationPipeline can be turned on: alwaysPullImage: true By default the orchestration pipeline will create a pod based on the jenkins-base-agent image to do much of its work. In seldom cases, ususally with a lot of repositories, one may hit an out of memory error on the pod named 'mro-XX'. In this case the below memory limit should be adjusted (defaulting to '1Gi') mroAgentMemoryLimit = \"1Gi\" The library automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process by the release manager component. Note: when you configure a Jira service in the release manager component’s metadata.yml, our library expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the library will fall back to the document chapter templates located in your release manager component’s docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. The library supports the activation of various capabilities through the capabilities: field in metadata.yml. capabilities: - Zephyr The Zephyr for Jira capability currently supports: Reporting the result of a test execution to Zephyr for Jira This section will guide you through the \"environment promotion\" feature of the orchestration pipeline. It is assumed have the release manager quickstarter already provisioned and configured in your project. Typically, software is running in different environments, such as one environment for development (DEV), one for quality assurance (QA), and one for production (PROD - this is what end-users of the software consume). Developers work on on the software in the development environment, and once they finish one version (a state) of the software, they bring that version to the QA environment, and once this version is deemed production-ready it is brought to the production environment so that users can consume the new version. The environment promotion feature of the orchestration pipeline automates moving a certain version of the software from one environment to the next. Developers only have to tell the orchestration pipeline if a new version should be built (in DEV) and packaged as an installable \"release bundle\", or if an existing \"release bundle\" should be promoted to either the QA or the production environment. The environment promotion feature is part of the regular orchestration pipeline. Therefore, the promotion is executed from various Jenkins stages. It is not possible to change the process itself, but you can customize how the promotion happens exactly for each of your software components. The components of your software are defined in the repositories section of the metadata.yml file in the release manager repository. In order for the orchestration pipeline to know which state of each component should be promoted, it needs to have some knowledge about how version control in your repositories is organised. Everything depends on a user-supplied build parameter named version to the Jenkins pipeline. Other input parameters do not have any impact on source code lookup. When no version is given, the orchestration pipeline will default to WIP (work in progress). In this scenario, source code for each repository is taken from the configured branch in the metadata.yml file (defaulting to master if no branch is specified there). When a version is given, source code will be taken from a branch release/$VERSION in each repository. When this branch does not exist yet, it will be created (based on the configured branch in metadata.yml) by the pipeline. Subsequent runs with the same version input will take the source code from the created release branch - changes to the configured branch will have no effect on this version! This is by design: it allows some developers to work on new features on the mainline branch (typically master) while others polish the release branch. To this end, the orchestration pipeline allows to enable separate development environments per version to isolate changes in OpenShift resources (see section \"Environments\" further down). The orchestration pipeline applies the same branching rules to the release manager repository - it will create a release branch per version. There is one small caveat here: Jenkins only considers the Jenkinsfile from the branch which is configured for a pipeline. That means that for a pipeline setup against master, Jenkins will always execute the latest Jenkinsfile from master, even when you pass an explicit version to the pipeline. The orchestration pipeline will read e.g. the metadata.yml file from the matching release branch, but the Jenkinsfile itself will be from master. Usually, this should not be an issue as you should not make changes to the Jenkinsfile of the release manager repository anyway. A specific \"release bundle\" is identified by four data points: a version (as outlined above), a changeId, a build number and an environment. The version, changeId and environment are user-supplied input parameters to the release manager pipeline, the build number is calculated automatically. The changeId can be any string meaningful to the user, its value does not have any effect on the operation of the orchestration pipeline. The environment input variable (such as DEV) will be shortened to a single-letter token (e.g. D). Technically speaking, a release bundle is a certain state of the release manager repository and the state of each linked repository at that time. This state is identified by a Git tag. For example, a release bundle with version=1, changeId=1234, buildNumber=0 and environment=DEV is identified by the Git tag v1-1234-0-D. This tag is set on the release manager repository, and all repositories the metadata.yml refers to at this time. The orchestration pipeline assumes three \"conceptual\" environments: DEV, QA and PROD (with short token forms D, Q and P). Those environments are strictly ordered - a state should go from DEV to QA, and then from QA to PROD. To ensure that software progresses along the DEV → QA → PROD path, release bundles from environment DEV can only be installed into QA, and only a release bundle from QA can be installed into PROD. Installing a release bundle from DEV into PROD is not allowed. Each \"conceptual\" environment is mapped to an OpenShift namespace: DEV to $PROJECT-dev (e.g. foo-dev) QA to $PROJECT-test (e.g. foo-test. Note that it is NOT -qa!) PROD to $PROJECT-prod (e.g. foo-prod) Keep in mind that when you create a new project with OpenDevStack, you get three OpenShift namespaces: foo-dev (your DEV environment) foo-test (your QA environment - unfortunately not named -qa for historical reasons) foo-cd (where Jenkins runs and the pipelines such as the orchestration pipeline are executed) So while there is a corresponding namespace for DEV and QA, there is no namespace corresponding to the PROD environment out-of-the-box. This is because it is assumed that your PROD environment is likely on another cluster altogether. To create foo-prod on another cluster, you (or someone with appropriate rights) can run the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-project.sh. Then you need to tell orchestration pipeline two things: where the API of the external cluster is, and the credentials with which to access it. A typical configuration is: id: foo ... repositories: [ ... ] environments: prod: apiUrl: https://api.example.com credentialsId: foo-cd-foo-prod This assumes you have the API token credentials stored in a secret of type kubernetes.io/basic-auth named foo-prod in the foo-cd namespace. This secret needs to be synced with Jenkins (which is achieved by labeling it with credential.sync.jenkins.openshift.io=true). The stored credentials need to belong to a serviceaccount with rights to admin the foo-prod namespace. The easiest way to setup all of this is by running the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-sa-secret.sh, which makes use of the output of the create-target-project.sh ran earlier. It is also possible to have the PROD environment on the same cluster, then you simply create a foo-prod namespace next to foo-dev and foo-test, and allow the foo-cd:jenkins account to admin that project. In that case, you do not need to configure anything in metadata.yml as the default configuration assumes the same cluster. The opposite is also possible: you can configure the QA environment to be on a different cluster than the DEV environment - simply follow the instructions above to create a foo-test namespace. As mentioned in the \"Source Code Organisation\" section, the orchestration pipeline allows to enable separate development environments to isolate different versions. When this mode is enabled, pipeline runs with version=WIP will deploy into the $PROJECT-dev as usual, but pipeline runs with version=X will deploy into $PROJECT-dev-X. The $PROJECT-dev-X environment has to be created beforehand (e.g. by cloning $PROJECT-dev with its serviceaccounts and rolebindings). To enable this feature, set versionedDevEnvs to true in the config of your Jenkinsfile, like this: def config = [debug: true, odsImageTag: 'x.x', versionedDevEnvs: true] If one of your components take longer than 10 minutes (this is the default value) to be promoted from one environment to another, the Release Manager pipeline will exit due to this timeout. You can increase this timeout by setting the openshiftRolloutTimeoutMinutes per environment in the Release Manager repository in the metadata.yml file. Similarly, the number of retries is configurable with the openshiftRolloutTimeoutRetries property. The following example establishes a timeout of 120 minutes for both qa and prod environments with a total number of 3 retries. ... environments: prod: apiUrl: https://... credentialsId: ... openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 qa: openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 ... Let’s start by assuming you have a project FOO with two components, X and Y. These components are defined under the repositories section in the metadata.yml file of the release manager repository. When you want to create a new release, you start the orchestration pipeline with input parameters - we will use version 1 and change ID 1234 in this example. The environment should be DEV. At the end of the pipeline run, you’ll have a release bundle identified by the tag v1-1234-0-D. This release can later be promoted as-is to QA. Once it is installed there, the same release bundle will be tagged with v1-1234-0-Q which can then be promoted to PROD (where it will be tagged with v1-1234-0-P). To create a release bundle, the orchestration pipeline will first trigger the build of each component. Then, it will export all resources in your OpenShift namespace ($PROJECT-$ENVIRONMENT, here foo-dev) belonging to the component. By convention, this means all resources labeled with app=$PROJECT-$COMPONENT (e.g. app=foo-x). Any resources without such a label will NOT be part of the release bundle. The exported resources are stored in a template.yml file (an OpenShift template) located in the openshift-exported folder within each component repository. Further, the container image SHA of the running pod is retrieved and stored in the file image-sha in the same folder. Once done, the orchestration pipeline will commit the two files, tag the commit with v1-1234-0-D and push to the remote. After this process has been done for all repositories, the same tag is also applied to the release manager repository. At this stage, the \"dev release bundle\" is complete and can be installed into QA. To trigger the installation of an existing release bundle, the user needs to supply a version and changeId which has previously been used to create a release bundle. In our example, supplying version=1, changeId=1234 and environment=QA will promote the release bundle identified by v1-1234-0-D to the QA environment and tag it with v1-1234-0-Q. Now that we have a \"QA release bundle\", we can promote it to PROD by supplying version=1, changeId=1234 and environment=PROD. As outlined above, a release bundle is essentially a state of all involved Git repositories. Each component repository contains two artifacts: a container image SHA OpenShift resource configuration (expressed in an OpenShift template) You cannot modify the image SHA (it is the result of what the component pipeline builds), but you can influence the OpenShift template. One reason to do so is that e.g. routes or ConfigMap values will need to differ between environments, and you need to tell the orchestration pipeline to parametrize the templates, and to supply the right values when the templates are applied in the target environment. When the orchestration pipeline exports configuration, it has no way to tell which values should actually be parameters. For example, you might have a route x.foo-dev.dev-cluster.com in DEV, and want this to be x.foo-test.dev-cluster.com in QA and x.foo-prod.prod-cluster.com in PROD. In the exported template, the value x.foo-dev.dev-cluster.com will be hardcoded. To fix this, you can create three files in the release manager repository, dev.env, qa.env and prod.env. These files may contain PARAM=value lines, like this: dev.env X_ROUTE=x.foo-dev.dev-cluster.com qa.env X_ROUTE=x.foo-test.dev-cluster.com prod.env X_ROUTE=x.foo-prod.prod-cluster.com All three files need to list the exact same parameters - otherwise applying the templates will fail. Once those param files are present, the orchestration pipeline will pick them up automatically. When you create a release bundle (in DEV), the param file is applied \"in reverse\", meaning that any concrete param value (on the right) will be substituted with the param key (on the left) in the template. Later when the template is applied in e.g. QA, the param keys are replaced with the concrete values from qa.env. It is necessary to have all the param files completed before you create a release bundle - if you want to change e.g. the value of a parameter in the prod.env file afterwards, you will need to create a new release bundle (as they are identified by Git tags, which do not move when you make new commits on the release branch). Next to parametrizing templates, you can also adjust how the export is done. As the export is using Tailor, the best way to customize is to supply a Tailorfile in the openshift-exported folder, in which you can define the options you want to set, such as excluding certain labels or resource types, or preserving specific fields in the live configuration. Please see Tailor’s documentation for more information. It is also possible to have different configuration files per environment if you suffix with the $PROJECT, e.g. Tailorfile.foo-dev. If you have component-specific parameters that differ between environments, a lightweight way to add these is via parameter files located in the openshift-exported folder matching the target project such as foo-dev.env, foo-test.env and foo-prod.env. These files are picked up automatically without special setup in a Tailorfile. In the process described above, the OpenShift configuration is exported and stored in the repositories in openshift-exported. This approach is easy to get started with, but it does have limitations: There is no defined state: whatever gets exported is what will be promoted, even if a certain configuration was meant to be only temporary or is specific to e.g. only the DEV environment. There is little traceability: as configuration is done through the OpenShift web interface, it is not known who did the change and when, and no chance for other team members to review that change. The parametrization of the exported template might produce incorrect results as it is just a string search-and-replace operation without further knowledge of the meaning of your configuration values. To overcome these issues, it is possible to author the OpenShift templates yourself instead of exporting them. The fastest way to start with this is by renaming the folder openshift-exported (containing the exported template) to openshift. From this point on, the orchestration pipeline will skip the export, and apply whatever is defined in the openshift folder. If you are new to writing OpenShift templates, please read https://github.com/opendevstack/tailor#template-authoring. When you author templates, you can also store the secrets in the param files GPG encrypted (.env.enc files). To achieve this, you need to create a private/public keypair for Jenkins, store the private key in a secret called tailor-private-key in your foo-cd namespace, and sync it as a Jenkins credentials item. Once the .env.enc files are encrypted against the public key, the orchestration pipeline will automatically use the private key to decrypt the params on-the-fly. Please see Working with Secrets for more information. For versioned, separate DEV environments, pulling images from the foo-cd namespace is not possible (because the foo-cd:jenkins serviceaccount does not have admin rights in foo-cd and therefore can’t grant access to it) Tagging means we are pointing to a concrete SHA of a Git repository. This enforces that no manual editing of exported config can happen between promotion to QA and promotion to PROD, which in effect forces everything to be parameterized properly. JIRA always triggers the master branch of the release manager, which means the Jenkinsfile is always taken from master (and NOT from the correct release branch - only metadata.yml etc. are read from the release branch) There is only one QA namespace, preventing to test multiple releases at the same time. The secret of the serviceaccount in the target cluster is known to the orchestration pipeline (as a Jenkins credential synced from OpenShift), therefore developers with edit/admin rights in the CD namespace have access to that secret Tags could manually be set / moved (this can be prevented in Bitbucket by administrators) Passwords etc. in the OpenShift configuration are stored in clear text in the export (this can be prevented by authoring templates and using a private key for encryption of param files) During export, the templates are parameterized automatically, but this is done using string search-and-replace and unwanted replacements might occur (this can be prevented by authoring the templates manually). By default, SonarQube scans (and reports) are only generated for the master branch of each component. As the orchestration pipeline automatically creates release branches for each version, no scans and reports are created on those. This can be changed by configuring sonarQubeBranch: '*'` in each component’s Jenkinsfile, however keep in mind that quality trends etc. will be mixed up if you use the free version of SonarQube as that version does not have support for multiple branches. An existing QA-tag cannot be deployed again in PROD. This has been intentionally designed that way as any change to PROD needs its unique change ID, which results in a new tag.","title":"Orchestration Pipeline","component":"opendevstack","version":"4.x","name":"orchestration-pipeline","url":"/opendevstack/latest/jenkins-shared-library/orchestration-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-infra","hash":"_repository_type_ods_infra","id":5},{"text":"Repository Type: ods-saas-service","hash":"_repository_type_ods_saas_service","id":6},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":7},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":8},{"text":"Repository Type: ods-library (EXPERIMENTAL feature)","hash":"_repository_type_ods_library_experimental_feature","id":9},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":10},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":11},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":12},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":13},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":14},{"text":"Partial rebuilding of components","hash":"_partial_rebuilding_of_components","id":15},{"text":"Optimization of runtime performance","hash":"_optimization_of_runtime_performance","id":16},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":17},{"text":"Additional Capabilities","hash":"_additional_capabilities","id":18},{"text":"Zephyr for Jira","hash":"_zephyr_for_jira","id":19},{"text":"Environment Promotion","hash":"_environment_promotion","id":20},{"text":"What is the \"environment promotion\" feature?","hash":"_what_is_the_environment_promotion_feature","id":21},{"text":"Source Code Organisation","hash":"_source_code_organisation","id":22},{"text":"Release bundles","hash":"_release_bundles","id":23},{"text":"Environments","hash":"_environments","id":24},{"text":"Customizing the Release Manager configuration","hash":"_customizing_the_release_manager_configuration","id":25},{"text":"Timeouts and retries","hash":"_timeouts_and_retries","id":26},{"text":"Walkthrough","hash":"_walkthrough","id":27},{"text":"Customizing release bundle creation","hash":"_customizing_release_bundle_creation","id":28},{"text":"Authoring OpenShift configuration","hash":"_authoring_openshift_configuration","id":29},{"text":"Known Limitations","hash":"_known_limitations","id":30}]},"155":{"id":155,"text":"This pipeline allows to have a minimal Jenkinsfile for a quickstarter by providing all language-agnostic provision aspects. The goal is to duplicate as little as possible between quickstarters. This pipeline is NOT for building components. It is only to be used when you are authoring a (new) quickstarter itself. If you are building a component (an application), please refer to the component pipeline. Load the shared library in your Jenkinsfile like this: def odsNamespace = env.ODS_NAMESPACE ?: 'ods' def odsGitRef = env.ODS_GIT_REF ?: 'master' def odsImageTag = env.ODS_IMAGE_TAG ?: 'latest' library(\"ods-jenkins-shared-library@${odsGitRef}\") odsQuickstarterPipeline( imageStreamTag: \"${odsNamespace}/jenkins-agent-golang:${odsImageTag}\", ) { context -> odsQuickstarterStageCopyFiles(context) stage('Write go.mod') { dir(context.targetDir) { sh \"go mod init module example.com/foo/bar\" } } odsQuickstarterStageCreateOpenShiftResources(context) odsQuickstarterStageRenderJenkinsfile(context) odsQuickstarterStageRenderSonarProperties(context) } There are many built-in stages like odsQuickstarterStageCopyFiles that you can use, please see Stages for more details. odsQuickstarterPipeline can be customized by passing configuration options like this: odsQuickstarterPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. When you write custom stages inside the closure passed to odsQuickstarterPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsQuickstarterPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsQuickstarterPipeline starts. cdUserCredentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. packageName Package name, retrieved from PACKAGE_NAME build parameter. group Group, retrieved from GROUP build parameter. odsNamespace Central namespace where images are located, retrieved from ODS_NAMESPACE build parameter. odsImageTag ODS image tag. Retrieved from ODS_IMAGE_TAG build parameter. If not set, defaults to latest. odsGitRef ODS Git ref. Retrieved from ODS_GIT_REF build parameter. If not set, defaults to master. agentImageTag Image tag used for the agent pod, retrieved from odsImageTag unless the AGENT_IMAGE_TAG build parameter is set. sharedLibraryRef Git reference used for the Jenkins shared library, retrieved from odsImageTag unless the SHARED_LIBRARY_REF build parameter is set. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. gitUrlHttp URL of the Git repository to push to. The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsQuickstarterPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each built-in stage (like odsQuickstarterStageCreateOpenShiftResources) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsQuickstarterStageCreateOpenShiftResources( context, [directory: 'common/foobar'] ) Copies files from ${context.sourceDir}/files to ${context.targetDir}. There are no configuration options. Uses a set of OpenShift templates to create resources in OpenShift. The resources are created both in -dev and -test namespace. Tailor is used to apply the templates, and fed with a parameter file if it exists. Available options: Option Description directory Directory in which templates are located, defaults to ${context.sourceDir}/openshift. envFile Parameter file to use, defaults to ${context.sourceDir}/ocp.env selector Label selector to constrain tailor apply to, defaults to app=${context.projectId}-${context.componentId}. All the created OpenShift resources are automatically labeled to ease their management. The quickstarter pipeline does a best effort to assign appropriate labels for a new component, based on the information of the quickstarter. This information can be customised by updating the component metadata. Detailed information about the labelling can be found here. Processes a Jenkinsfile template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId @component_type@ ⇒ context.sourceDir @git_url_http@ ⇒ context.gitUrlHttp @ods_image_tag@ ⇒ context.odsImageTag @ods_git_ref@ ⇒ context.odsGitRef @agent_image_tag@ ⇒ context.agentImageTag @shared_library_ref@ ⇒ context.sharedLibraryRef Available options: Option Description source Jenkinsfile template to use, defaults to Jenkinsfile.template target Jenkinsfile filename, defaults to Jenkinsfile Processes a sonar-project.properties template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId Available options: Option Description source sonar-project.properties template to use, defaults to sonar-project.properties.template target sonar-project.properties filename, defaults to sonar-project.properties Forks a component from ODS Available options: Option Description odsComponent the component from (github) ODS to fork","title":"Quickstarter Pipeline","component":"opendevstack","version":"4.x","name":"quickstarter-pipeline","url":"/opendevstack/latest/jenkins-shared-library/quickstarter-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Advanced","hash":"_advanced","id":4},{"text":"Agent customization","hash":"_agent_customization","id":5},{"text":"Stages","hash":"_stages","id":6},{"text":"odsQuickstarterStageCopyFiles","hash":"_odsquickstarterstagecopyfiles","id":7},{"text":"odsQuickstarterStageCreateOpenShiftResources","hash":"_odsquickstarterstagecreateopenshiftresources","id":8},{"text":"odsQuickstarterStageRenderJenkinsfile","hash":"_odsquickstarterstagerenderjenkinsfile","id":9},{"text":"odsQuickstarterStageRenderSonarProperties","hash":"_odsquickstarterstagerendersonarproperties","id":10},{"text":"odsQuickstarterStageForkODS","hash":"_odsquickstarterstageforkods","id":11}]},"156":{"id":156,"text":"Table of Contents How to develop and run it locally How to deploy to OpenShift Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Consuming REST APIs via curl Pre Flight Checks Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Jenkins (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 11 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git To run it locally two spring profiles are provided: odsbox and odsbox_quickstarters`. The profile odsbox configures the application to connect to the ODS development environment (ODSBOX). Use this command to start it from the command-line: ./gradlew bootRun --args='--spring.profiles.active=odsbox,odsbox_quickstarters' Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 In order to test your changes in a real environment, you should deploy the provisioning app in OpenShift. To do so, you need to have an existing OpeDevStack project (consisting of -dev, -test and -cd namespaces). If you don’t have one yet, you can create one via the provisioning app in the central namespace. Now you can make use of the ods-provisioning-app quickstarter to set up the Bitbucket repository in your Bitbucket space. You can either register the quickstarter in the provisiong app in the central namespace, and then provision it from there; or use the script in https://github.com/BIX-Digital/ods-contrib/tree/master/quickstart-with-jenkins. Once you have provisioned the quickstarter, the first build will create a container image and place it in the ImageStream, using the commit SHA as image tag. To deploy this image in the central namespace, you have to tag that image into the central namespace. From your local machine, run: oc tag -dev/: ods/ods-provisioning-app: Then, in ods-configuration/ods-core.env, set PROV_APP_FROM_IMAGE to ods/ods-provisioning-app: and run the deployment using: make install-provisioning-app The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js). ODS 3.x contains a new single page app UI (based on Angular) as an experimental feature located in the client folder. In order to use the UI a feature flag frontend.spa.enabled must be set to true in application.proprties. Please refer to client README on how to setup local development for the frontend code. The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Basic Auth authentication is the recommended way to consume REST API. How to enable Basic Auth authentication is explained in Authentication Crowd Configuration. The following sample script could be used to provision a new project, add a quickstarter to a project or remove a project. It uses Basic Auth to authenticate the request. #!/usr/bin/env bash set -eu # Setup these variables # PROVISION_API_HOST=://: # BASIC_AUTH_CREDENTIAL=: # PROVISION_FILE=provision-new-project-payload.json PROV_APP_CONFIG_FILE=\"${PROV_APP_CONFIG_FILE:-prov-app-config.txt}\" if [ -f $PROV_APP_CONFIG_FILE ]; then cat $PROV_APP_CONFIG_FILE source $PROV_APP_CONFIG_FILE else echo \"No config file found, assuming defaults, current dir: $(pwd)\" fi # not set - use post as operation, create new project COMMAND=\"${1:-POST}\" echo echo \"Started provision project script with command (${COMMAND})!\" echo echo \"... encoding basic auth credentials in base64 format\" BASE64_CREDENTIALS=$(echo -n $BASIC_AUTH_CREDENTIAL | base64) echo echo \"... sending request to '\"$PROVISION_API_HOST\"' (output will be saved in file './response.txt' and headers in file './headers.txt')\" echo RESPONSE_FILE=response.txt if [ -f $RESPONSE_FILE ]; then rm -f $RESPONSE_FILE fi if [ ${COMMAND^^} == \"POST\" ] || [ ${COMMAND^^} == \"PUT\" ]; then echo echo \"create or update project - ${COMMAND^^}\" if [ ! -f $PROVISION_FILE ]; then echo \"Input for provision api (${PROVISION_FILE}) does not EXIST, aborting\\ncurrent: $(pwd)\" exit 1 fi echo \"... ${COMMAND} project request payload loaded from '\"$PROVISION_FILE\"'\"´ echo echo \"... displaying payload file content:\" cat $PROVISION_FILE echo http_resp_code=$(curl --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --data @\"$PROVISION_FILE\" \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) elif [ ${COMMAND^^} == \"DELETE\" ] || [ ${COMMAND^^} == \"GET\" ]; then echo \"delete / get project - ${COMMAND^^}\" if [ -z $2 ]; then echo \"Project Key must be passed as second param in case of command == delete or get!!\" exit 1 fi http_resp_code=$(curl -vvv --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project/$2\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) else echo \"ERROR: Command ${COMMAND} not supported, only GET, POST, PUT or DELETE\" exit 1 fi echo \"curl request successful...\" echo echo \"... displaying HTTP response body (content from './response.txt'):\" if [ -f ${RESPONSE_FILE} ]; then cat ${RESPONSE_FILE} else echo \"No request (body) response recorded\" fi echo echo \"... displaying HTTP response code\" echo \"http_resp_code=${http_resp_code}\" echo if [ $http_resp_code != 200 ] then echo \"something went wrong... endpoint responded with error code [HTTP CODE=\"$http_resp_code\"] (expected was 200)\" exit 1 fi echo \"provision project request (${COMMAND}) completed successfully!!!\" The PROVISION_FILE should point to a json file that defines the payload for the provision of a new project. This is an example: { \"projectName\": \"\", \"projectKey\": \"\", \"description\": \"project description\", \"projectType\": \"default\", \"cdUser\": \"project_cd_user\", \"projectAdminUser\": \"\", \"projectAdminGroup\": \"\", \"projectUserGroup\": \"\", \"projectReadonlyGroup\": \"\", \"bugtrackerSpace\": true, \"platformRuntime\": true, \"specialPermissionSet\": true, \"quickstarters\": [] } For the provisioning of a quickstarter set the command from POST to value PUT instead. Following an example of the PROVISION_FILE for quickstarter provisioning: { \"projectKey\":\"\", \"quickstarters\":[{ \"component_type\":\"docker-plain\", \"component_id\":\"be-docker-example\" }] } The provisioning of new project requires the creation of project in different servers (jira, bitbucket, confluence, openshift, etc…​) In case of an exception happens this process will be interrupted. This will leave the provision of a new project as incomplete. To avoid this situation a series of checks called \"Pre Flight Checks\" were implemented. These checks verify that all required conditions are given in the target system (jira, bitbucket, confluence) before provision a new project. Following some samples of response of the provision new project endpoint POST api/v2/project Pre Flight Check failed: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"UNEXISTANT_USER\",\"error-message\":\"user 'cd_user_wrong_cd_user' does not exists in bitbucket!\"}]} Pre Flight Check due an exception: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"EXCEPTION\",\"error-message\":\"Unexpected error when checking precondition for creation of project 'PROJECTNAME'\"}]} Pre Flight Check successfully passed and project was created: HTTP CODE: 200 OK { \"projectName\": \"MYPROJECT\", \"description\": \"My new project\", \"projectKey\": \"MYPROJECT\", ... } Failed Response due to exception after Pre Flight Checks succesfully passed: HTTP CODE: 500 Internal Server Error An error occured while creating project [PROJECTNAME ], reason [component_id 'ods-myproject-component106' is not valid name (only alpha chars are allowed with dashes (-) allowed in between. ] - but all cleaned up! The provision new project endpoint POST api/v2/project accepts a url parameter called onlyCheckPreconditions. By setting this parameter to true (POST api/v2/project?onlyCheckPreconditions=TRUE) only the Pre Flight Checks will be executed. This could be usefull for the development of new Pre Flight Checks or for integration scenarios. In this later case one could imagine to set this parameter to TRUE to verify all preconditions before creating a project. Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API","title":"Provisioning App: Internal architecture / Development","component":"opendevstack","version":"4.x","name":"architecture","url":"/opendevstack/latest/provisioning-app/architecture.html","titles":[{"text":"How to develop and run it locally","hash":"_how_to_develop_and_run_it_locally","id":1},{"text":"How to deploy to OpenShift","hash":"_how_to_deploy_to_openshift","id":2},{"text":"Frontend Code","hash":"_frontend_code","id":3},{"text":"Backend Code","hash":"_backend_code","id":4},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":5},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":6},{"text":"Consuming REST APIs via curl","hash":"_consuming_rest_apis_via_curl","id":7},{"text":"Pre Flight Checks","hash":"_pre_flight_checks","id":8},{"text":"Response examples:","hash":"_response_examples","id":9},{"text":"Option \"onlyCheckPreconditions=TRUE\":","hash":"_option_onlycheckpreconditionstrue","id":10},{"text":"Link collection","hash":"_link_collection","id":11}]},"157":{"id":157,"text":"Table of Contents Quickstarters Permissions Bitbucket permissions Project/Space types based on templates Custom permissions and group-to-project-role mappings Add Webhook Proxy URL to jira project properties based on project type Error Handling Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Basic Auth authentication Authentication to third party apps via technical users Other configuration FAQ Available quickstarters can be provided in the container via /quickstarters/quickstarters.properties. In the context of OpenShift, this file is supplied by the ConfigMap quickstarters.properties. The quickstarters defined there will be displayed to the users in the UI when they modify an existing project. When the provisioning app is installed for the first time, a default set of quickstarters (from the ods-quickstarters repository) is seeded. As each installation can configure the available quickstarters differently, the quickstarters.properties ConfigMap is not updated automatically when updating ODS. A quickstarter needs to have two mandatory entries: quickstarters.properties jenkinspipeline.quickstarter..desc= jenkinspipeline.quickstarter..repo= For example: quickstarters.properties jenkinspipeline.quickstarter.be-java-springboot.desc=Backend - SpringBoot/Java jenkinspipeline.quickstarter.be-java-springboot.repo=ods-quickstarters This means that in order to provision the quickstarter, the provisioning app will start a Jenkins pipeline based on the Jenkinsfile located in the opendevstack/ods-quickstarters repository, in the folder be-java-springboot. The UI will display the quickstarter as Backend - SpringBoot/Java. Apart from the required properties, there are also optional properties: quickstarters.properties jenkinspipeline.[some-job-name].create-webhook -> whether a default webhook should be created for this repo or not (true by default) jenkinspipeline.[some-job-name].branch -> a branch differing from ods.git-ref property jenkinspipeline.[some-job-name].jenkinsfile -> a path to the Jenkinsfile differing from [some-job-name]/Jenkinsfile When the quickstarter properties are modified, the provisioning app needs to be restarted for the changes to have effect. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three special groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories Moreover, a specific CD user (technical user for the continuous delivery platform) can optionally be specified. The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with the permissions detailed in the section Bitbucket permissions. Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) Furthermore if you need to define default permission for openshift (e.g. to setup membership permission for cluster admins) you can add this to your application properties: jenkinspipeline.create-project.default-project-groups=ADMINGROUP= In case special permissions sets are defined this the default project groups will be appended to the list of permissions sets. Permissions are set both at project and repository levels. Whenever the same user or group is assigned different permissions in the same project or repository, the actual permissions assigned are the higher-level ones. For example, if a group is assigned read-only and R/W permissions in the same project, it will get R/W permissions on it. If a user is assigned both R/W and admin permissions in a repository, it will get admin permissions on it. The mentioned properties in the following subsections have default values specified in the application.properties file. Their values can be overridden in the corresponding config map. Permissions set at project level depend on whether the special permission set has been specified or not. If the special permission set has been specified, these are the permissions set at project level: Type Who? Permission Group ${global.keyuser.role.name} Admin Group admin group Admin Group user group R/W Group readonly group Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that, if a specific CD user has not been specified, it defaults to the value of the bitbucket.technical.user property. If the special permission set has not been specified, these are the default permissions assigned to the project: Type Who? Permission Group ${bitbucket.default.user.group} R/W Group ${idmanager.group.opendevstack-users} Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that no admin permissions are assigned to the project when a special permission set has not been specified. The only project-level administrators are the global Bitbucket administrators, in this case. Repositories belonging to a project inherit the project permissions. Some additional permissions are assigned at repository level. The following tables show the permissions specified at repository level. These are the permissions assigned to the repository when a special permission set has been specified: Type Who? Permission User ${bitbucket.technical.user} R/W These are the permissions assigned to the repository when a special permission set has not been specified: Type Who? Permission Group ${bitbucket.default.admin.group} (default: ${bitbucket.default.user.group}) Admin User ${bitbucket.technical.user} R/W If the bitbucket.default.admin.group property is specified with an empty value, no admin permissions are assigned at repository level. The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, Custom permission configuration makes possible to configure each Project type template with a specific permission-scheme-id on project creation. Any new Jira project of a specific project type will be then set with the same permission-schemed-id. Additionally, mappings of project roles to the special groups (defined above: admin, user and readonly group) have to be configured, so that the special groups are added to the jira project roles of the new project. These capabilities make possible for Jira Admin to define a main permission scheme that will be \"reused\" for every new project. Another big benefit is that release them from the manual task of mapping the special groups to the permission scheme project roles. To configure a project-template-name with a specific permission-schemed-id you need to add these properties to your configuration: jira.project-templates..name=UTest project template jira.project-templates..permission-scheme-id= if the permission-scheme-id is configured you will have to provide group-to-project-role mapping configuration. If a permission-schemd-id is defined, then the following project-to-* properties have to be configured. Otherwise the provisioning app will fail to start. Like the permission-scheme-id the value of these properties has to be in this case an existant project role id in Jira, that you will need to get from your Jira server in advance. jira.project-templates..role-mapping.project-role-for-admin-group= jira.project-templates..role-mapping.project-role-for-user-group= jira.project-templates..role-mapping.project-role-for-readonly-group= Another way to set a permission-scheme-id with the corresponding project-to-role-* mappings is by API call. You can define following properties in the payload of the create project API call: { ... \"specialPermissionSchemeId\": \"\" \"projectRoleForAdminGroup\": \"\", \"projectRoleForUserGroup\": \"\", \"projectRoleForReadonlyGroup\": \"\", ... } A given configuration will be overwritten by these payload properties. You will find more details about the provisioning app REST API in this section: Consuming REST APIs via curl. If no permission-scheme-id with the corresponding project-to-role-* mappings are provided neither by configuration nor in the create project payload, then the default behaviour will be applied, which in this case will create a new permission scheme as explained in the section Permissions. It is possible to configure the Provisioning App to add to jira project the Webhook Proxy URL as project property. Jira provides an REST API for this purpose (Jira Properties API) This functionality can be configured for each project type. To enable this you will need to: Enable this capability for a given project type add the a property like: jira.project.template.add-webhook-proxy-url-as-project-property.=true Define the jira endpoint as template by adding this property: jira.project.template.webhook-proxy-url-endpoint-template.=/api/2/project/%PROJECT_KEY%/properties/WEBHOOK_PROXY.URL These 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Define the jira endpoint payload as template that will be added to the set jira property endpoint call jira.project.template.webhook-proxy-url-payload-template.={\\\"WEBHOOK_PROXY.URL\\\", \\\"%PROPERTY_VALUE%\\\"} For the payload template also these 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false. There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Basic Auth Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence and Bitbucket is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. An example of plain oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link Alternatively if your identity provider is Azure AD, a configuration example is given in application-azure.properties application-azure.properties provision.auth.provider=oauth2 (1) provision.auth.provider.oauth2.user-info-uri=userInfo (2) (3) # Application ID (also called Client ID) spring.security.oauth2.client.registration.azure.client-id=> spring.security.oauth2.client.registration.azure.client-secret= # It's suggested the logged in user should at least belong to one of the below groups # If not, the logged in user will not be able to access any authorization controller rest APIs azure.activedirectory.user-group.allowed-groups=opendevstack-administrators,opendevstack-users (4) azure.activedirectory.environment=global-v2-graph azure.activedirectory.user-group.key=@odata.type azure.activedirectory.user-group.value=#microsoft.graph.group azure.activedirectory.user-group.object-id-key=id azure.activedirectory.tenant-id= (5) oauth2.user.roles.jsonpointerexpression=/claims/roles (6) oauth2.user.use-email-claim-as-username=true (7) (8) idmanager.url=https://login.microsoftonline.com idmanager.realm=${spring.security.oauth2.client.registration.azure.client-id} idmanager.disable-logout-from-idm=true (9) 1 configures oauth2 authentication provider 2 configure user info uri 3 registers in spring security azure oauth2 client id and secret 4 configure allow groups 5 register azure ad tenant 6 the application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 7 configure to use email claim as username 8 configure name of the ProvApp realm 9 instruct ProvApp to not logout from identity management provider This option can be enabled to activate basic auth as additional authentication when using crowd or oauth2 as authentication provider. To enable basic auth this properties needs to be configured: application-azure.properties provision.auth.basic-auth.enabled=true The basic auth authentication needs to connect to an identity manager to authenticate users. Currently only crowd is supported for this purpouse. If you have’ve chosen to use oauth2 as provider you can even enable basic auth to connect to crowd server. For that you will need to add these properties to your configuration: # crowd properties (needed for basic auth) crowd.local.directory=~/dev/temp crowd.application.name= crowd.application.password= crowd.server.url= crowd.cookie.domain= The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence and Bitbucket. The used credentials are read from a pair of properties. For Example, bitbucket.admin_password and bitbucket.admin_user properties are used for Bitbucket, confluence.admin_user and confluence.admin_password are used for Confluence, etc. application-oauth2.properties # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall() To adapt the provisioning app to your infrastructure following properties will help you to enable/disable some adapters/services. To disable the confluence adapter you can add this property to the application properties: adapters.confluence.enabled=false The Openshift Service can be used to verify that a project key does not exist in the cluster before provisioning a project. If you want to enable it, you can add this property to the application properties: services.openshift.enabled=true If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project. What is the default permission schema in Jira? the default permission schema in Jira is named Default Permission Scheme Which role is missing in Jira default permission schema if the project creator cannot access it? The default permission schema named Default Permission Scheme needs the role owner to be added to permission Browser Projects. Otherwise the project creator (role owner) will not be able to access the project.","title":"Provisioning App: Configuration Guide","component":"opendevstack","version":"4.x","name":"configuration","url":"/opendevstack/latest/provisioning-app/configuration.html","titles":[{"text":"Quickstarters","hash":"_quickstarters","id":1},{"text":"Permissions","hash":"_permissions","id":2},{"text":"Bitbucket permissions","hash":"_bitbucket_permissions","id":3},{"text":"Project level","hash":"_project_level","id":4},{"text":"Repository level","hash":"_repository_level","id":5},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":6},{"text":"Custom permissions and group-to-project-role mappings","hash":"_custom_permissions_and_group_to_project_role_mappings","id":7},{"text":"Project type custom permissions scheme id configuration","hash":"_project_type_custom_permissions_scheme_id_configuration","id":8},{"text":"Project type group-to-project-role mappings","hash":"_project_type_group_to_project_role_mappings","id":9},{"text":"Overwriting custom permissions scheme id and group-to-project-role mappings per API call","hash":"_overwriting_custom_permissions_scheme_id_and_group_to_project_role_mappings_per_api_call","id":10},{"text":"Add Webhook Proxy URL to jira project properties based on project type","hash":"_add_webhook_proxy_url_to_jira_project_properties_based_on_project_type","id":11},{"text":"Error Handling","hash":"_error_handling","id":12},{"text":"Authentication Configuration","hash":"_authentication_configuration","id":13},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":14},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":15},{"text":"Basic Auth authentication","hash":"_basic_auth_authentication","id":16},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":17},{"text":"Other configuration","hash":"_other_configuration","id":18},{"text":"FAQ","hash":"_faq","id":19}]},"158":{"id":158,"text":"This application creates new OpenDevStack projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as Jira, Confluence, Bitbucket and Jenkins. Any user with admin privileges can create new ODS projects through the provisioning application. A new ODS project typically consists of: a Jira Project (name based on project ) a Confluence Space (name based on project ) a Bitbucket project (name based on project ) two Openshift projects named -dev and -test, which are used to run your application. Further, a Jenkins deployment will be created in the -cd project to allow each ODS project full freedom of build management. This deployment is based on a common Jenkins image provided by the central ODS namespace. Open the web GUI of the provisioning app (ask your ODS administrator for the URL). Select your project, then choose a quickstarter. If no framework fits your needs, choose the docker-plain quickstarter, and adjust the repository afterwards as required. After provisioning the quickstarter, you’ll have a new repository in your Bitbucket project with the boilerplate of the component. This repository has a webhook configured which will start a new Jenkins job each time a new commit is pushed. This means the new component will immediately be built and deployed into your -dev project. Why are three OpenShift projects created when I provision a new project? The -dev and -test namespaces are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the Component Pipeline In contrast to this, the -cd namespace hosts a project-specific instance of Jenkins Master and Webhook Proxy. When a build is triggered, builder pods (= deployments of Jenkins agents) are created in this project. This was a cautious design choice to give a project team as much power as possible when it comes to configuration of Jenkins. What permissions are assigned when a new Bitbucket project or repository is created? The assigned permissions are detailed here.","title":"Provisioning Application","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/provisioning-app/index.html","titles":[{"text":"Creating a new project","hash":"_creating_a_new_project","id":1},{"text":"Creating a new component within a project (using a quickstarter)","hash":"_creating_a_new_component_within_a_project_using_a_quickstarter","id":2},{"text":"FAQ","hash":"_faq","id":3}]},"159":{"id":159,"text":"This agent is used to build Go code. The image is built in the global ods project and is named jenkins-agent-golang. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-golang:latest. Go 1.21.x golangci-lint 1.54.x Not (yet) Nexus package manager aware and no special HTTP Proxy configuration.","title":"Go Jenkins agent","component":"opendevstack","version":"4.x","name":"golang","url":"/opendevstack/latest/jenkins-agents/golang.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"160":{"id":160,"text":"This agents are used to deploy (Cloud) resources using terraform code. There are two terraform jenkins agents available: 1. jenkins-agent-terraform (ruby 2.7.5, terraform 1.2.x) - this agent is DEPRECATED and will be removed in the next release. 1. jenkins-agent-terraform-2306 (ruby 3.2.2, terraform 1.4.6, and matching tools) - this is the current active jenkins agent. The images are built in the global ods project and are named jenkins-agent-terraform and jenkins-agent-terraform-2306. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-terraform:latest or ods/jenkins-agent-terraform-2306:latest. support of multiple terraform versions using tfenv integrated test-framework using kitchen-terraform and cinc-auditor n/a","title":"Terraform Jenkins agents","component":"opendevstack","version":"4.x","name":"inf-terraform","url":"/opendevstack/latest/jenkins-agents/inf-terraform.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"161":{"id":161,"text":"This agent is used to build Java code. The image is built in the global ods project and is named jenkins-agent-jdk. It can be referenced in a Jenkinsfile with ods/jenkins-agent-jdk. Nexus and HTTP proxy configuration for Maven & Gradle This agent provides 3 JDKs: java 11, java 17 and java 21. For backwards compatibility java 11 is the default version. Java projects migrating from previous ODS version will not require any change. A migration to java 17 and java 21 can be done afterwards. To switch the environment to java 17 the script use-j17.sh is provided at the jenkins home folder. To switch the environment to java 21 the script use-j21.sh is provided at the jenkins home folder. Following command shows how the jenkins build script from the springboot quickstarter switches the java version before calling the gradle wrapper: def status = sh(script: \"$HOME/use-j21.sh && ./gradlew clean build --stacktrace --no-daemon && $HOME/use-j11.sh\", returnStatus: true) like this example, you will need to switch back to java 11 after running the gradlew build. This is required because the jdk agent environment still does not support the latest java version. E.g. the sonar scanner is not compatible with the latest java version. Dockerfile.ubi8 installs: - java-21-openjdk-devel & java-21-openjdk-jmods - java-17-openjdk-devel & java-17-openjdk-jmods - java-11-openjdk-devel & java-11-openjdk-jmods detail about java installed packages can be found in https://centos.pkgs.org n/a","title":"Jdk Jenkins agent","component":"opendevstack","version":"4.x","name":"jdk","url":"/opendevstack/latest/jenkins-agents/jdk.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Supported Java Versions","hash":"_supported_java_versions","id":3},{"text":"Installed packages","hash":"_installed_packages","id":4},{"text":"Known limitations","hash":"_known_limitations","id":5}]},"162":{"id":162,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs16. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs16. Node.js version 16 reaches end-of-life in 2024-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 16 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs16","url":"/opendevstack/latest/jenkins-agents/nodejs16.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"163":{"id":163,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs18. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs18. Node.js version 18 reaches end-of-life in 2025-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 18 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs18","url":"/opendevstack/latest/jenkins-agents/nodejs18.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"164":{"id":164,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs20. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs20. Node.js version 20 reaches end-of-life in 2026-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 20 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs20","url":"/opendevstack/latest/jenkins-agents/nodejs20.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"165":{"id":165,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs22. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs22. Node.js version 22 reaches end-of-life in 2027-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 22 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs22","url":"/opendevstack/latest/jenkins-agents/nodejs22.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"166":{"id":166,"text":"This agent is used to build / execute Python code. The image is built in the global ods project and is named jenkins-agent-python. It can be referenced in a Jenkinsfile with ods/jenkins-agent-python. It supports building on Python versions: 3.11, 3.9, 3.8 and 3.6. NOTE: Python 3.6 have reached EOL on 2021-12-23. See Python versions for further information. Python pip virtualenv No special HTTP Proxy configuration.","title":"Python Jenkins agent","component":"opendevstack","version":"4.x","name":"python","url":"/opendevstack/latest/jenkins-agents/python.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"167":{"id":167,"text":"This agent is used to build / execute Rust code and tools. The image is built in the global ods project and is named jenkins-agent-rust. It can be referenced in a Jenkinsfile with ods/jenkins-agent-rust. Minimum Supported Rust Version (MSRV) 1.75. It can build Rust versions 1.75.x or higher. NOTE: Current Rust edition in use is 2021. See Rust Edition Guide for further information. Rust Axum Cargo Nextest LLVM Coverage Generate No special HTTP Proxy configuration.","title":"Rust Jenkins agent","component":"opendevstack","version":"4.x","name":"rust","url":"/opendevstack/latest/jenkins-agents/rust.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"168":{"id":168,"text":"This agent is used to build Scala code through SBT (Scala build tool). The image is built in the global ods project and is named jenkins-agent-scala. It can be referenced in a Jenkinsfile with ods/jenkins-agent-scala. SBT 1.8.2 HTTP proxy aware Nexus aware In case HTTP Proxy config is injected through environment variables (including NO_PROXY), Nexus configuration is disabled because of an SBT bug.","title":"Scala Jenkins agent","component":"opendevstack","version":"4.x","name":"scala","url":"/opendevstack/latest/jenkins-agents/scala.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"169":{"id":169,"text":"This document describes how you can create your own quickstarter. At the same time, you should be able to find all information required to make changes to an existing quickstarter. Technically speaking, a quickstarter is just a Jenkins pipeline that fills an existing repository with files. How this is done, and what exactly is run in the pipeline is up to the quickstarter author. Typically though, the pipeline makes use of the quickstarter pipeline from the Jenkins shared library, which removes the need to write lots of boilerplate such as running a agent pod, cloning sources, copying files and pushing at the end to the component repository. The rest of the guide assumes that you are using this pipeline. As the Jenkins pipeline runs on a Jenkins agent image, you as the author need to pick either an existing agent image (see \"Jenkins agent Images\" in the navigation on the left), or create your own. The only technical requirement is to have a Jenkinsfile, but depending on the purpose of the quickstarter, a quickstarter should provide the following: A Jenkinsfile in the resulting repository. The best way to do this is by placing a Jenkinsfile.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderJenkinsfile. A sonar-project.properties file in the resulting repository. The best way to do this is by placing a sonar-project.properties.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderSonarProperties. Test setup, e.g. a framework such as JUnit. Test results need to be published in JUnit XML reporting file format. The results need to be stored at build/test-results/test or be configured to a different location. Code Coverage: tests should determine code coverage, and report this to SonarQube. Support for Nexus (pulling dependencies from there) HTTP proxy awareness Documentation. Both for the quickstarter itself (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/quickstarters/pages, following the quickstarter template) and any Jenkins agent image (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/jenkins-agents/pages, following the agent image template). It is recommended to set up proper default metadata values in files/metadata.yml. These default values will also be used to label the generated OpenShift resources when provisioning a new component from the quickstarter for the first time. If you write any custom stages in the quickstarter pipeline, you have access to the pipeline context. Usually, quickstarters are triggered through the provisioning app. However, in order to try a new quickstarter, or to try changes to an existing quickstarter which are made in a branch, you can use the quickstart-with-jenkins/run.sh script in the BIX-Digital/ods-contrib repository to provision a quickstarter without registering it with the provisioning app. See its help for usage. It is highly recommended to use the jenkins-agent-base image as a base image. Otherwise it is likely that some features of the shared pipeline don’t work. The jenkins-agent-base image in turn is based on another base image, e.g. provided by RedHat. The easiest way to get started is to look ath other agent images, such as Go and see how that implements its requirements. If you are just building an image for yourself, do the following: Copy the folder from one of the Jenkins agents to your local machine, and adjust as needed. For sure you’ll need to update the Dockerfile. Also, change the names in the ocp-config folder and delete the Tailorfile in there. Note that the BuildConfig points to a repository and a branch. You will need to push your sources to a matching location. Create the OpenShift resources in your *-cd project via Tailor, e.g. tailor -n foo-cd --param REPO_BASE=https://bitbucket.example.com/scm --param ODS_IMAGE_TAG=2.x …​ Start a build in the OpenShift web console. Reference the built image from your Jenkinsfile like this: imageStreamTag: 'foo-cd/jenkins-agent-bar:latest' If you want to contribute your Jenkins agent image to OpenDevStack, make sure to add documentation according to the agent image template.","title":"Authoring Quickstarters","component":"opendevstack","version":"4.x","name":"authoring-quickstarters","url":"/opendevstack/latest/quickstarters/authoring-quickstarters.html","titles":[{"text":"Creating / Modifying a quickstarter","hash":"_creating_modifying_a_quickstarter","id":1},{"text":"Creating / Modifying a Jenkins agent image","hash":"_creating_modifying_a_jenkins_agent_image","id":2}]},"170":{"id":170,"text":"Use this quickstarter when you want to use nginx server wrapped within OpenResty dynamic web platform. With this quickstarter you can run many different lightweight server implementations like API gateways and HTTP/TCP/UDP reverse proxies. ├── docker - Contains Dockerfile for the build │ ├── lua - Directory for custom Lua modules │ │ └── server-error.lua - Example of server error response module with Lua │ ├── Dockerfile - Definition of your nginx gateway container │ ├── entrypoint.sh - Enables runtime configurations and runs openresty │ └── nginx.conf - The nginx configuration ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager OpenResty ODS Jenkins Shared Library Simply start to configure your nginx.conf to fit your needs. Also, you can develop and/or use different Lua modules. In order to route/proxy to services in the same namespace you do not need to define environment variables for their ports and/or hosts. OpenShift already loads them into the container’s environment by following a convention like _SERVICE_HOST and _SERVICE_PORT. Please, follow the example provided and comments in the nginx.conf file. One can add official Lua modules by using opm. In the following code snipped one can see how to add an official Lua module through docker build stage. Inside your Dockerfile: RUN opm install zmartzone/lua-resty-openidc Then, one can load such module dependency in new modules like: local http = require(\"resty.openidc\") lua-resty-openidc module is already provided with the default Dockerfile. Lua integration in nginx requires following the Directives provided in its architecture. Notice the importance of the execution order of the directives. Most of the directives require being defined inside your server locations. See next some possibilities one can make use of 1 - Managing access with access_by_lua_block With this directive one can integrate with Identity Providers via different auth/z standars, such as simple HTTP Basic Auth, OAuth, OIDC: access_by_lua_block { require(\"your-auth-module\").authenticate() } 2 - Managing content with content_by_lua_block This directive handles content definition. See the provided server-error.lua module example; by loading the right ENV variables in nginx.conf, you can add in your error location block a custom server error handling: location = /50x.html { content_by_lua_block { require(\"server-error\").make_error() } } 3 - Handle incoming requests with rewrite_by_lua_block One can also make use of the rewrite directive, for example, for filtering/rewriting incoming requests coming from your clients: rewrite_by_lua_block { require(\"filter-requests-headers\").run_filter() } 4 - Handle body responses with body_filter_by_lua_block Filter the body responses comming from your Backend services. For example, one could filter any error response, so to assure filtering stack traces from a JSON object response when running on production: body_filter_by_lua_block { require(\"filter-error-response\").filter_stack_traces() } The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: nginx description: \"Enhanced nginx with Lua embeded. nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server. Technologies: OpenResty/nginx 1.25.3.1-1\" supplier: https://openresty.org version: 1.25.3.1-1 type: ods-service role: integration There are two steps: Build the container image. Deploy. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses jenkins-agent-base N/A","title":"Backend - nginx (be-gateway-nginx)","component":"opendevstack","version":"4.x","name":"be-gateway-nginx","url":"/opendevstack/latest/quickstarters/be-gateway-nginx.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Routing to your services","hash":"_routing_to_your_services","id":5},{"text":"Adding offical Lua modules","hash":"_adding_offical_lua_modules","id":6},{"text":"Using Lua modules","hash":"_using_lua_modules","id":7},{"text":"Metadata","hash":"_metadata","id":8},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"171":{"id":171,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in golang\" supplier: https://example.com version: 1.0.1 type: ods role: backend There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Golang builder agent. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"4.x","name":"be-golang-plain","url":"/opendevstack/latest/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"172":{"id":172,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 21 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). The quickstarter uses the spring boot project generator service hosted by Spring (https://start.spring.io) to generate the spring boot project. This is implemented in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project based on version 3.2.0 will be generated and pushed to your git repository. The generated project requires java 21 and includes the required gradle build and wrapper artifact based on gradle version 8.5. The generated spring boot project contains following folders: src (java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,data-rest,data-jpa,h2,security,devtools\"), which are defined in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 21 or later version is required to run gradlew and compile java classes. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Java over Spring Boot\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: spring-boot runtimeVersion: 3.2.0 The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. The jdk builder agent Jenkins builder agent has installed 3 JDK: java 11, java 17 and java 21. The default version is java 11. This makes the agent backwards compatible. If you are migrating an ODS-based spring boot project to java 21 following instructions provide a some guidance about the typical steps to achieve this: change the agent version as indicated in jdk builder agent upgrade the gradle wrapper to version 8.5 running this gradle command at the root folder of your spring project: gradle wrapper --gradle-version 8.5 --distribution-type bin this command use just gradle instead of the wrapper. commit and push the changes to the remote git project repository. Following files are expected to be included in the change: ./gradlew (or gradlew.bat depending on your environment) ./gradle/wrapper/gradle-wrapper.jar ./gradle/wrapper/gradle-wrapper.properties verify that the jenkins build pipeline run successful. Fix any error if is not the case. change your local runtime to java 21 and compile your project with the gradle wrapper. update in your build.gradle file the source compatibility to sourceCompatibility = JavaVersion.VERSION_21 and compile again. update the project Jenkinfile by adding in the stage Build and Unit Test a call to the use-j21.sh before the gradle wrapper. This will set the runtime to `java 21. It would look like this: def status = sh(script: \"use-j21.sh && ./gradlew clean build --stacktrace --no-daemon\", returnStatus: true) commit and push the changes to the remote git project repository. verify that the jenkins build pipeline run successful. Fix any error if is not the case. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"4.x","name":"be-java-springboot","url":"/opendevstack/latest/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"Metadata","hash":"_metadata","id":11},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":12},{"text":"Builder agent used","hash":"_builder_agent_used","id":13},{"text":"Migration to Java 21","hash":"_migration_to_java_21","id":14},{"text":"Known limitations","hash":"_known_limitations","id":15}]},"173":{"id":173,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a simple API-server example written in Python and using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── run.sh - This bash script solves issue with permissions for a container user ├── src │ └── main.py - This file is the main entry point in the project. ├── tests │ ├── __init__.py │ └── main_test.py - Unit testing src/main.py ├── .coveragerc - Coverage configuration file ├── metadata.yml - Component metadata ├── mypy.ini - mypy configuration file ├── release-manager.yml - Configuration file for the Release Manager ├── requirements.txt - This file contains a list of required Python modules to run your application ├── tests_requirements.txt - required Python modules for the Test Suite (includes requirements.txt) and IDE integration └── sonar-project.properties - This file contains SonarQube configuration settings Python 3.11 gunicorn flask pytest mypy flake8 The project is production ready when deployed in OpenShift thanks to gunicorn. It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.11, ensure your system’s python executable is also in version 3.11 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Python over Flask\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: flask runtimeVersion: 3.0.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: pip install -r tests_requirements.txt Lint - Runs mypy and flake8 for increasing code quality: mypy src flake8 --max-line-length=120 src Test - Runs pytest and generates xUnit and code coverage reports: PYTHONPATH=src python -m pytest --junitxml=tests.xml -o junit_family=xunit2 --cov-report term-missing --cov-report xml --cov=src -o testpaths=tests Build - Builds the application: copies src folder into docker/dist folder. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. NOTE: The ODS Jenkins Pytnon Agent supports Python versions 3.11, 3.9 and 3.8. See next chapter for further information. Build and run environment defaults to python3.11, but older python3.8 and python3.6 versions are also supported. If you need older versions support in your project, change: in the provided Jenkinsfile, the mentions of python3.11 binary to, for example, python3.9 binary, and switch the FROM statement in your Dockerfile to the python version required, for example, registry.access.redhat.com/ubi8/python-38. Let us know if you find any, thanks!","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"4.x","name":"be-python-flask","url":"/opendevstack/latest/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Multiple Python versions support","hash":"_multiple_python_versions_support","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"174":{"id":174,"text":"The project supports generation of Rust programming language based projects, with the Axum web framework by default, and quick installation and integration within OpenShift Jenkins CICD pipelines. For Database/Postgres integration it is recommended to use SQLx. Check the Axum with SQLx example. Enjoy a full async, safe and high performant setup! This is a Rust project with a common Rust project folder and files structure, with its main.rs file for the final binary to be built, and that makes use of the lib.rs file, which exposes the crates (AKA modules or packages) of the project (where the business logic happens). Similar to Python project structures. The quickstarter comes with a simple API-server example written in Rust and using the Axum web framework. The package allows to easily build a Rust project, using different Rust crates (packages). It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. NOTE The project can be also extended to build other types of solutions with, for example, WASM or IoT. ├── 📂 .config - The local Rust project config folder │ └──  nextest.toml - The local Nextest config file (required for Jenkins CICD) ├──  .pre-commit-config.yaml - The pre-commit config file one can extend, and providing gitleaks tool by default. ├── 📂 chart - The Helm chart folder │ ├── 📂 templates - The resource files to define in your project (i.e.: deployment.yml, service.yml,...) │ │ ├── 📂 tests - Helm tests folder │ │ │ └──  test-connection.yaml - Helm test connection to app service after a new release │ │ ├── 📄 _helpers.tpl - Helm helpers template │ │ ├──  deployment.yaml - The k8s Deployment template for the app to release │ │ ├──  NOTES.txt - The release notes processed on each release │ │ └──  service.yaml - The k8s Service template for the app to release │ ├──  Chart.yaml - The Helm Chart main config file │ └──  values.yaml - The values to process on your Helm chart ├── 📂 docker - The docker context to build │ └──  Dockerfile - The docker file to deploy and run ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── 📂 src │ ├── 📂 api │ │ ├── 📂 routes │ │ │ ├── 🦀 mod.rs - The routes module file │ │ │ └── 🦀 status.rs │ │ ├── 🦀 mod.rs - The api module file │ │ └── 🦀 router.rs - The router API routes file │ ├── 📂 config │ │ ├── 🦀 mod.rs - The config module file │ │ └── 🦀 settings.rs - The settings file │ ├── 📂 models │ │ ├── 🦀 mod.rs - The models module file │ │ └── 🦀 status.rs - The status model example file │ └── 🦀 main.rs ├── 📂 target - The target folder where all builds (debug, release, ...) are stored (do not commit to git!) ├── 📂 tests │ ├── 🦀 common.rs - Common util implementations and functions │ └── 🦀 status_test.rs - Testing the status endpoint example ├──  Cargo.lock - The Rust dependency hash tree of this project ├──  Cargo.toml - The Rust project config file ├──  metadata.yml - Component metadata ├──  README.md - This README file ├──  release-manager.yml - Configuration file for the Release Manager ├──  rustfmt.toml └──  sonar-project.properties - This file contains SonarQube configuration settings Rust 1.75.0 Axum 0.7.x The project is production ready when deployed in OpenShift. Rust community and official resources are great to get to it, see learn Rust. To get Rust ready on your local environment you just require installing rustup (see install Rust) # Get the Rustup CLI and already install target computer toolchain and latest stable Rust version curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # If you are new to Rust (also check the rustlings TUI) rustup doc --book # Run Unit, Integration and Documentation tests cargo test # Cargo format source code cargo fmt # Cargo run locally cargo run # Cargo run Rust linters cargo clippy # Cargo generate documentation cargo doc [--document-private-items] --open One can also extend the cargo features by installing cargo extensions like: # Live reload locally cargo install cargo-watch # https://github.com/watchexec/cargo-watch # Then you can live reload by: cargo watch -x run # Nextest, with enhanced usage from default Rust cargo test cargo install cargo-nextest # ... NOTE For an extended list of awesome cargo extensions and Rust tools check here and here. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Rust with Axum web framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: rust runtimeVersion: 1.75.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Cargo Check - Checks we can compile: cargo check --all-targets Cargo Format - Checks code is properly formatted: cargo fmt --all -- --check Cargo Clippy - Collection of lints to catch common mistakes and improve your Rust code (output is also used on SonarQube reports): cargo clippy --all-features Cargo Test - Runs nextest (instead of cargo test) with xUnit test report generation (see .config/nextest.toml) and code coverage reports with LLVM coverage tool: cargo nextest run --profile ci cargo llvm-cov --lcov Build - Builds the release target binary and moves it to the docker folder: cargo build --release include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Rust Jenkins builder agent. NOTE: The ODS Jenkins Rust Agent supports Rust versions 1.75.x and above. The following Rust technologies are in use when running this boilerplate: Axum: Web application framework that focuses on ergonomics and modularity. Tokio: Runtime for writing reliable, asynchronous, and slim applications. Tower: Library of modular and reusable components for building robust networking clients and servers. Hyper: A fast and correct HTTP implementation for Rust. Let us know if you find any, thanks!","title":"Backend Rust Axum Quickstarter (be-rust-axum)","component":"opendevstack","version":"4.x","name":"be-rust-axum","url":"/opendevstack/latest/quickstarters/be-rust-axum.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Technologies in use","hash":"_technologies_in_use","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"175":{"id":175,"text":"This is a Play Framework 2.8.0 quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an reactive Web Application / REST API based on the Scala Language. An example Play Web Application is generated with a Controller and some tests. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── app │ ├── controllers │ │ └── HomeController.scala │ └── views │ ├── index.scala.html │ └── main.scala.html ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ ├── messages │ └── routes ├── docker │ └── Dockerfile ├── project │ ├── build.properties │ ├── plugins.sbt ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── main.js │ └── stylesheets │ └── main.css ├── sonar-project.properties ├── test │ └── controllers │ └── HomeControllerSpec.scala └── .scalafmt.conf This project is generated by SBT using SBTs template generation via the new command. The template used is an adapted version of the official Play Scala Seed Template. It will generate a Play Scala project using version 2.8.0 of Play with Scala version 2.13.1. It uses the logstash-logback-encoder to output logmessages in logstash format. It uses Scalafmt to check/format the source files consistently. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing Or run for running locally in development mode with continous compiling. The application will be accessible under http://localhost:8080 The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Scala over the Play framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: play runtimeVersion: 2.8.2 The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - checks source files formatting, runs the tests and builds and copies the artifacts for creating the docker image to the docker directory. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses the Scala Jenkins agent. NA","title":"Backend Scala Playframework Quickstarter (be-scala-play)","component":"opendevstack","version":"4.x","name":"be-scala-play","url":"/opendevstack/latest/quickstarters/be-scala-play.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"176":{"id":176,"text":"This is a Node.js (v20) quickstarter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains a basic setup for Docker, Jenkins, SonarQube and OpenShift. The package json is generated by simply using npm init -y, while the tsconfig is generated using tsc --init --skipLibCheck --outDir \"./dist\". The dependencies mentioned below are added to plain package.json file. On top of that, test, build and start script commands are customized to get your node/express application up and running with typescript. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── sum.ts - Sample function │ ├── index.ts - Entrypoint, This runs first ├── __test__ │ ├── sum.spec.ts - Sample test ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration Express (^4.18.2) Jest (^29.7.0) for Unit Testing Typescript (^5.3.2) On top of the mentioned frameworks above, we use libraries: Jest Junit (^16.0.0) @types/node (^20.10.0) When you push your code, your runtime and test code will be compiled using node v10. After deployment the compiled code also runs in node v10. If you developed your code and tests using a different node version locally, this might cause some problems. This is why we made the tsconfig.json file to be compatible with node v10. So bear in mind that any changes to compiler options might result in compilation and runtime errors. Here are our related changes to tsconfig.json file below: \"compilerOptions\": { \"lib\": [\"es2018\"], \"module\": \"commonjs\", \"target\": \"es2018\" } npm install forms the project root to install all the dependencies npm run build transpiles the typescript code to /dist folder npm run start starts the node server npm run test runs tests located under /dist folder, prints the jest output under /build folder and reports test coverage. The report located under /coverage_output folder is then picked by Sonarqube. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in TypeScript over Express\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: node runtimeVersion: 20 The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command is executed to build the application and then the build is copied to the docker/dist folder. Unit Testing : npm run test command is executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.JS 20 builder agent for Jenkins. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"4.x","name":"be-typescript-express","url":"/opendevstack/latest/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Libraries","hash":"_libraries","id":4},{"text":"Node version","hash":"_node_version","id":5},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":6},{"text":"Metadata","hash":"_metadata","id":7},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":8},{"text":"Builder agent used","hash":"_builder_agent_used","id":9},{"text":"Known limitations","hash":"_known_limitations","id":10}]},"177":{"id":177,"text":"Use this quickstarter when you want to start from a plain Dockerfile only, without any framework on top. A good usecase here is a Dockerfile you found on GitHub which you want to run with OpenDevStack features, or that you need to \"OpenShiftify\", by setting an (non-root) execution user, etc. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - SonarQube Configuration None, except for the ODS jenkins shared library. Amend the generated Dockerfile as needed. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: software-name description: \"Some software packaged in a docker container\" supplier: https://example.com version: 3.2 type: ods-service role: Whatever is in the /docker folder will be passed to oc start build as the docker context. You can add other files to that context as needed: def stageBuild(def context) { stage('Build') { // copy any other artifacts, if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } In case you want to run unit tests, you can add a corresponding statement to stageUnitTest: def stageUnitTest(def context) { stage('Unit Test') { // add your unit tests here, if needed } } Assuming your component contains source code you want to have delivered by the Release Manager, the execution of tests and the reporting of their results is mandatory. For this, your component will have to…​ define name, description, supplier, and version metadata for your component in files/release-manager.yml place the test results in the xUnit XML format in a path known to context.testResults (defaults to build/test-results/test) provide these test results to the Jenkins JUnit plugin via its junit step function. Feel free to look out for examples in our existing quickstarters, such as be-java-springboot. include::partial$secret-scanning-with-gitleaks.adoc none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"4.x","name":"docker-plain","url":"/opendevstack/latest/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"178":{"id":178,"text":"Provision a shared Jupyter Lab within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker │ ├── Dockerfile │ ├── jupyter_lab_config.json │ ├── requirements.txt │ └── run.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.11 JupyterLab The quickstarter sets up two pods in OpenShift. The ds-jupyter-lab instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt. One can setup specific and independent IPython kernels based on specific Python virtual environments: Open a new terminal session in your Jupyter Lab, then: cd python -m venv . /bin/activate pip install ipykernel pip --upgrade python -m ipykernel install --user --name= jupyter kernelspec list # this is for validating installation Now on a notebook you can select that new kernel by clicking on the name you see on the top right where you see the dot status. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: jupyterlab description: \"JupyterLab is a web-based interactive development environment for Jupyter notebooks, code, and data.\" supplier: https://jupyter.org/ version: 3.0.14 type: ods-service The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partial$secret-scanning-with-gitleaks.adoc jenkins-agent-base Consider if sufficient computing resources can be provided by the OpenShift cluster. You might require installing NodeJS if requiring specific JupyterLab extensions (nodejs >=12.0.0).","title":"Data Science Jupyter Lab","component":"opendevstack","version":"4.x","name":"ds-jupyter-lab","url":"/opendevstack/latest/quickstarters/ds-jupyter-lab.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Setting up independent environments/kernels","hash":"_setting_up_independent_environmentskernels","id":5},{"text":"Metadata","hash":"_metadata","id":6},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"179":{"id":179,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── docker - This folder contains Docker configuration settings and main R Shiny app │ ├── Dockerfile │ └── app.R ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: shiny description: \"Shiny is an R package that makes it easy to build interactive web apps straight from R.\" supplier: https://www.rstudio.com/ version: 1.6.0 type: ods-service runtime: r runtimeVersion: 4.1.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partial$secret-scanning-with-gitleaks.adoc jenkins-agent-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"4.x","name":"ds-rshiny","url":"/opendevstack/latest/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"180":{"id":180,"text":"Provisions a streamlit based dashboard with authentication. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker_streamlit │ └── Dockerfile ├── docker_oauth │ └── Dockerfile - Dockerfile for the oauth, please don't change this for proper promotion ├── src - Example code structure based on individual python modules │ ├── calculation │ │ │── __init__.py │ │ └── sample.py │ ├── plots │ │ ├── __init__.py │ │ ├── config.py │ │ └── histogram.py │ └── main.py ├── tests │ └── calculation │ └── sample_test.py │── .gitignore │── requirements.txt - requirements for running the application │── test_requirements.txt - adds additional requirements for the test frameworks │── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.11 streamlit pandas plotly The quickstarter sets up in OpenShift a pod with two containers. The main ds-streamlit container is behind and protected by the OpenShift OAuth proxy container (i.e.: it is a sidecar container). It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.11, ensure your system’s python executable is also in version 3.11 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py name: description: \"Some dashboard based on Streamlit\" supplier: https://example.com version: 1.0.1 type: ods role: dashboard runtime: streamlit runtimeVersion: 1.29.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: Lint - Runs mypy and flake8 for increasing code quality: In order to be sure that your code passes the linting stage execute or add it as a pre-commit hook to your git. black src Test - Runs pytest and generates xUnit and code coverage reports: Build - Builds the application: copies src folder into docker_streamlit/dist folder. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. Let us know if you find any, thanks!","title":"Data Science Streamlit","component":"opendevstack","version":"4.x","name":"ds-streamlit","url":"/opendevstack/latest/quickstarters/ds-streamlit.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"181":{"id":181,"text":"Cypress end-to-end testing quickstarter project This is a Cypress end-to-end testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── fixtures │ └── example.json │── plugins │ └── index.js │── support │ ├── commands.ts │ ├── generic-login.ts │ ├── index.ts │ ├── msalv2-login.ts │ └── test-evidence.ts ├── tests | ├── acceptance │ | └── acceptance.spec.ts | ├── installation │ | └── installation.spec.ts | └── integration │ └── integration.spec.ts ├── cypress-acceptance.json ├── cypress-installation.json ├── cypress-integration.json ├── cypress.env.json.template ├── cypress.json ├── Jenkinsfile ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata │── package.json ├── README.md │── release-manager.yml - Configuration file for the Release Manager └── tsconfig.json Cypress TypeScript Check the README.md file at root level for further instructions after the quickstarter has been provisioned. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile there is the following stage: stageTest Load Node.js dependencies by running npm install and executing the e2e tests by running npm run e2e. Please note: TSLint has been deprecated in favor of ESLint. Therefore the support for TSLint has been removed from this quickstarter. Please consider adding ESLint support (see also https://www.npmjs.com/package/eslint#installation-and-usage) or a formatter like Prettier (see also https://prettier.io/docs/en/install.html). While npm install is gathering the dependencies it is also performing a post-installation process which is downloading Cypress' binaries. It is possible to change this behavior, e.g. for getting those binaries from Nexus or a local cache. See https://docs.cypress.io/guides/getting-started/installing-cypress#Advanced for more details. A more advanced solution could be the use of a custom builder agent, where Cypress is already embedded. The related Dockerfile could look like this: # The following FROM tag is informational. It is overwritten by OpenShift. FROM ods/jenkins-agent-nodejs20:4.x ARG cypressVersion=13.6.0 ARG cypressHash=... USER root # Adds cypress@VERSION binaries to /home/jenkins/.cache/Cypress/VERSION/Cypress # This allows to disable post-installation of Cypress binaries and gather those binaries from a cache folder instead. The cache # folder holds the binaries for the respective versions of Cypress. # Setting the following environment variable in the Jenkinsfile allows to disable post-installation of cypress@...: # CYPRESS_INSTALL_BINARY=0 # The custom cache folder can be configured in Jenkinsfile by the following environment variable setting: # CYPRESS_CACHE_FOLDER=/home/jenkins/.cache/Cypress ADD https://download.cypress.io/desktop/${cypressVersion}?platform=linux&arch=x64 /home/jenkins/cypress/cypress-linux.zip RUN md5sum /home/jenkins/cypress/cypress-linux.zip && \\ echo \"${cypressHash} /home/jenkins/cypress/cypress-linux.zip\" | md5sum -c && \\ mkdir -p /home/jenkins/.cache/Cypress/${cypressVersion} && \\ unzip -q /home/jenkins/cypress/cypress-linux.zip -d /home/jenkins/.cache/Cypress/${cypressVersion} && \\ rm /home/jenkins/cypress/cypress-linux.zip # fix access rights RUN chgrp -R 0 $HOME && \\ chmod -R g=u $HOME && \\ chmod ug=rx /home/jenkins/.cache/Cypress/${cypressVersion}/Cypress/Cypress USER 1001 To use Cypress Cloud within the Cypress QuickSarter, follow these steps: Create a project in Cypress Cloud. Access Cypress Cloud by following this link (https://cloud.cypress.io/), and create a project. This project will be used to store your Cypress tests and results. Change the project ID as indicated in Cypress Cloud. After creating the project, you will need to change the project ID in the four config files, to the one indicated in Cypress Cloud. This ID is used to identify your project and ensure that your tests are associated with the correct project. Set the Cypress Record Key as an environment variable in Openshift. To enable recording of your tests in Cypress Cloud, you will need to set the Cypress Record Key as an environment variable named CYPRESS_RECORD_KEY in Openshift. This key is provided by Cypress and is used to authenticate your tests and results. By setting it in Openshift, we ensure that the record functionality will only be used in official runs and not for local development. Modify the Jenkinsfile for using the record script. In the Jenkinsfile, change the exeuction line: def status = sh(script: 'npm run e2e', returnStatus: true) for the following block of code, which will run the record script only when in master or in a release branch: if (context.gitBranch == 'master' || context.gitBranch.startsWith('release/')) { def status = sh(script: 'npm run e2e:jenkins:record', returnStatus: true) } else { def status = sh(script: 'npm run e2e', returnStatus: true) } Only use this functionality in releases, not development. It is important to note that Cypress Cloud is intended for use in releases, not development. This ensures that your tests are run against stable and reliable code, and that the Dashboard does not get overflooded with non-relevant tests. For the same reason, the Jenkinsfile is configured to only pass the record parameter when running in the master branch, or in a release. You can find more information about using the Cypress Cloud in the official documentation for Cypress https://docs.cypress.io/guides/cloud/introduction. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 20 builder agent for Jenkins. NA","title":"End-to-end tests with Cypress (e2e-cypress)","component":"opendevstack","version":"4.x","name":"e2e-cypress","url":"/opendevstack/latest/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Cypress without post-installation","hash":"_cypress_without_post_installation","id":6},{"text":"Cypress Cloud","hash":"_cypress_cloud","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"182":{"id":182,"text":"End-to-end tests for ETLs quickstarter project This is a python based quicktarter intended to develop end-to-end tests for data pipelines. In order to do that it uses two testing technologies: 1. Great Expectations, meant for data transformation testing data within relational tables. e.g.: You could test the schema of a database, the number of rows, that a specific column has no null values, etc 2. Pytest together with Boto it allows for testing etl triggers, notification system, content of S3 buckets, etc ├── Jenkinsfile - This file contains Jenkins stages. ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── tests - This folder contains the root for test-kitchen │ ├── acceptance/great_expectations - This folder contains the Great Expecations tests to test │ └── acceptance/pytest - This folder contains the pytest tests to test Great-expectations Pytest Check the README.md file at root level for further instructions after the quickstarter has been provisioned. This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"End-to-end tests with Great Expectations and Pytest (e2e-etl-python)","component":"opendevstack","version":"4.x","name":"e2e-etl-python","url":"/opendevstack/latest/quickstarters/e2e-etl-python.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Builder agent used","hash":"_builder_agent_used","id":5},{"text":"Known limitations","hash":"_known_limitations","id":6}]},"183":{"id":183,"text":"spock, geb and unirest e2e testing quickstarter project This is a spock, geb and unirest e2e testing project quickstarter with basic setup for Jenkins, SonarQube and Gradle. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── README.md ├── sonar-project.properties ├── src │ ├── test │ │ └── acceptance │ │ │ └── groovy │ │ │ │ └── DemoAcceptanceSpec.groovy │ │ │ └── java │ │ │ └── DemoAcceptanceTest.java │ │ └── installation │ │ │ └── groovy │ │ │ │ └── DemoInstallationSpec.groovy │ │ │ └── java │ │ │ └── DemoInstallationTest.java │ │ └── integration │ │ │ └── groovy │ │ │ │ └── DemoIntegrationSpec.groovy │ │ │ └── java │ │ | └── DemoIntegrationTest.java │ │ └── resources │ │ └── application.properties │ │ └── GebConfig.groovy │ │ └── SpecHelper.groovy ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── build.gradle ├── gradlew └── gradlew.bat The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. This project is generated by Gradle spock geb unirest Run command gradlew test in project directory to execute the end-to-end tests via spock/geb against the Google Home page and demo jUnit 5 tests. You will see the results inside a new folder 'build' in project directory. . └── build └── test-results ├── acceptance-groovy │ └── TEST-DemoAcceptance.xml ├── acceptance-java │ └── TEST-DemoAcceptanceTest.xml ├── installation-groovy │ └── TEST-DemoInstallation.xml ├── installation-java │ └── TEST-DemoInstallationTest.xml ├── integration-groovy │ └── TEST-DemoIntegration.xml └── integration-java └── TEST-DemoIntegrationTest.xml You can see how a Java Junit 5 test are developed showing the Demo*Test.java files. You can see how a Groovy Spock/Geb test are developed showing the Demo*Spec.groovy files. The url to test with Geb is configured in the property config.application.url inside application.properties Inside GebConfig.groovy you could change the default navigator (CHROME) The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile.template, there is the following stage: stageTest - Run the programed e2e test with this order: installation-java installation-groovy integration-java integration-groovy acceptance-java acceptance-groovy All the results are stashed and published through Jenkins jUnit publisher. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. NA","title":"End-to-end tests with Spock, Geb and Unirest (e2e-spock-geb)","component":"opendevstack","version":"4.x","name":"e2e-spock-geb","url":"/opendevstack/latest/quickstarters/e2e-spock-geb.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Gradle Support","hash":"_gradle_support","id":3},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":4},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":5},{"text":"Frameworks used","hash":"_frameworks_used","id":6},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":7},{"text":"Customization - how do you start to configure your test","hash":"_customization_how_do_you_start_to_configure_your_test","id":8},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"184":{"id":184,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json This project is generated by Angular CLI Angular CLI Angular TypeScript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"My Angular-based front end\" supplier: https://example.com version: 1.0.1 type: ods role: frontend runtime: angular-cli runtimeVersion: 18.0.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: stageBuild - Builds the application by running npm install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. This will also create test coverage analysis data which will then be transfered to SonarQube during odsComponentStageScanWithSonar odsComponentStageScanWithSonar - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. Please note: By default the applciation is always build as full production build including all sorts of optimizations. In addition source maps will be added except for builds that are triggered from master. This can be changed by configuring (additional) build configurations within angular.json and by using them via stageBuild or package.json. Please note: The support for TSLint has been removed from this quickstarter. Also Angular is not shipping a linter by default anymore. Please consider adding ESLint support or a formatter like Prettier. For adding ESLint simply type ng add @angular-eslint/schematics. For setting up Prettier please see https://prettier.io/docs/en/install.html. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"4.x","name":"fe-angular","url":"/opendevstack/latest/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"185":{"id":185,"text":"Ionic quickstarter project This quickstarter generates an Ionic 7.2.0 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/TypeScript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. . ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── src │ ├── app │ │ ├── home │ │ │ ├── home-routing.module.ts │ │ │ ├── home.module.ts │ │ │ ├── home.page.html │ │ │ ├── home.page.scss │ │ │ ├── home.page.spec.ts │ │ │ └── home.page.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── theme │ │ └── variables.scss │ ├── global.scss │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── test.ts │ └── zone-flags.ts ├── angular.json - This file contains Angular project configuration settings ├── capacitor.config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── ionic.config.json - This file contains Ionic project configuration ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── karma.conf.js ├── metadata.yml - Component metadata ├── package.json - This file contains scripts to run and node packages dependencies for project ├── README.md ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json Ionic CLI Ionic Framework Angular TypeScript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g @ionic/cli Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: Ionic component: frontend instance: description: \"Ionic Framework is the free, open source mobile UI toolkit for developing high-quality cross-platform apps for native iOS, Android, and the web—all from a single codebase. Technologies: Ionic 7.2.0\" supplier: https://ionicframework.com type: ods version: 7.2.0 The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following main stages for this quickstarter: Build Installs Ionic CLI and the dependencies of your project with npm install and generates the build by running ionic build. If the merged git branch is master, it creates the production build with ionic build --prod. Finally, it copies the output folder ./www into ./docker/dist. Unit Test Runs unit test cases by executing npm run test command. If any test fails, the build is marked as failed. This will also create test coverage analysis data which will then be transfered to SonarQube. Lint Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. SonarQube Analysis Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and ./src/environments/** are excluded from the analysis, since they usually don’t contain application logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"4.x","name":"fe-ionic","url":"/opendevstack/latest/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known Limitation","hash":"_known_limitation","id":8}]},"186":{"id":186,"text":"Table of Contents Overview Available, official quickstarters Backend Quickstarter Frontend Quickstarter Data Science Quickstarter E2E Test Quickstarter Infrastructure Terraform Quickstarter ODS Contribution Quickstarter Authoring quickstarters Quickstarters are basically templates that help to start out with a component quickly. A quickstarter provides a specific technology, potentially with a framework setup already, such as Java with Springboot in the case of the be-java-springboot quickstarter. Compared to starting out from scratch, using a quickstarter typically helps by: setting up a repository in Bitbucket with webhooks to trigger Jenkins builds shipping a Jenkinsfile with a pipeline that builds and deploys the component (delegating most of the work to the shared library) providing a basic test setup with xUnit reports and code coverage integrating with SonarQube out-of-the-box (including code coverage report) setting up OpenShift resources to build and run the component creating a boilerplate application with one or more sample endpoints Quickstarters are used from the Provisioning App, which allows to add a component to an existing project by running a quickstarter from the configured list of available quickstarters. This list can contain quickstarters from the official repository, ods-quickstarters, or from some other repository such as internally hosted ones in your Bitbucket instance. Backend - Gateway/Nginx Backend - Go Backend - Java/SpringBoot Backend - TypeScript/Express Backend - Python/Flask Backend - Scala/Play Frontend - Angular Mobile - Ionic Data Science - Jupyter Lab Data Science - R-Shiny Data Science Streamlit app E2E test - Cypress E2E test - Spock / Geb E2E test - ETL Python AWS deployments utilizing terraform tooling Azure deployments utilizing terraform tooling ODS Fork - Document Generation Service ODS Fork - Provisioning Application Next to those, there is a \"blank\" quickstarter (Docker/Plain) allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences. As mentioned above, it is possible to supply your own quickstarters. Pleasee see the authoring quickstarters guide on how to make completely new quickstarters or how to adapt existing quickstarters to your needs.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Available, official quickstarters","hash":"_available_official_quickstarters","id":2},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":3},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":4},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":5},{"text":"E2E Test Quickstarter","hash":"_e2e_test_quickstarter","id":6},{"text":"Infrastructure Terraform Quickstarter","hash":"_infrastructure_terraform_quickstarter","id":7},{"text":"ODS Contribution Quickstarter","hash":"_ods_contribution_quickstarter","id":8},{"text":"Authoring quickstarters","hash":"_authoring_quickstarters","id":9}]},"187":{"id":187,"text":"The project supports generation of AWS deployments utilizing terraform tooling. installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform resource which deploys a S3 bucket using AWS CloudFormation. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform AWS Quickstarter (inf-terraform-aws)","component":"opendevstack","version":"4.x","name":"inf-terraform-aws","url":"/opendevstack/latest/quickstarters/inf-terraform-aws.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"188":{"id":188,"text":"The project supports generation of Azure deployments utilizing terraform tooling, installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform which deploys a resource group and a storage account via an ARM template. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with Chef InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.tfbackend.config - This file describes terraform backend parameters in the dev Azure subscription. │ ├── test.tfbackend.config - This file describes terraform backend parameters in the test Azure subscription. │ ├── prod.tfbackend.config - This file describes terraform backend parameters in the production Azure subscription. │ ├── dev.yml - This file describes credential parameters for the development environment. Values are names of secrets held in Jenkins. │ ├── test.yml - This file describes credential parameters for the test environment. Values are names of secrets held in Jenkins. │ ├── prod.yml - This file describes credential parameters for the producation environment. Values are names of secrets held in Jenkins. │ ├── dev.json - This file describes parameters for the development environment. │ ├── test.json - This file describes parameters for the test environment. │ └── prod.json - This file describes parameters for the production environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform Azure Quickstarter (inf-terraform-azure)","component":"opendevstack","version":"4.x","name":"inf-terraform-azure","url":"/opendevstack/latest/quickstarters/inf-terraform-azure.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"189":{"id":189,"text":"The quickstarters include a skeleton metadata file metadata.yml. This file provides information about the component, but some metadata entries are also used to label the OpenShift resources created for the component. The following is a table with the supported metadata entries and the labels for which they are used: Entry key Meaning Example Label name The name of the software deployed in this component mongodb app.kubernetes.io/name description Description of the software deployed in this component MongoDB is a general-purpose document-based distributed database. supplier Supplier of the software deployed in this component https://www.mongodb.com/ version Version of the software deployed in this component 4.0.8 app.kubernetes.io/version type Type of OpenDevStack component ods-service app.opendevstack.org/type role Role this component plays in the architecture database app.kubernetes.io/component partOf Name of a higher-level application this component is part of my-online-shop app.kubernetes.io/part-of runtime The runtime this software runs on spring-boot app.openshift.io/runtime runtimeVersion The version of the runtime this software runs on 1.4.4.RELEASE app.openshift.io/runtime-version Detailed description of the supported metadata entries. It is strongly recommended to follow the guidelines for the entries that are used to label OpenShift resources. Moreover, OpenShift label values must meet the following restrictions: must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The values given in the metadata file will be sanitised to adhere to those restrictions, but it is recommended to use compliant values that need no sanitation. This is the software deployed in this component. There may be other instances of the same software in other components. For components of type ods, which are pieces of software developed as part of the project, this is recommended to be set to the component ID. For components of type ods-service, which are instances of some existing software, this is recommended to be set to a well-known id of the software being deployed. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the description of the software deployed in this component. Examples: \"User-management microservice\" or \"MongoDB is a general-purpose document-based distributed database\". The supplier of the software being deployed. Possible a web-page link. Example: https://www.mongodb.com/ This is the version of the software identified by the name entry. Example: 4.0.8 This metadata entry will be used as the value of the label app.kubernetes.io/version. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the role this component plays in the architecture. Example: database Any value can be set, but the following values are recommended: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. This metadata entry will be used as the value of the label app.kubernetes.io/component. The name of a higher level application this component is part of. This is used to group components as part of a higher-level application, when suitable. Example: you are building an online shop, and this component is part of it. You can set partOf: my-online-shop This metadata entry will be used as the value of the label app.kubernetes.io/part-of. The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This metadata entry will be used as the value of the label app.openshift.io/runtime. The version of the runtime. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if runtime is not also specified. Example: 1.4.4.RELEASE This metadata entry will be used as the value of the label app.openshift.io/runtime-version.","title":"Component metadata","component":"opendevstack","version":"4.x","name":"metadata","url":"/opendevstack/latest/quickstarters/metadata.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Detailed description","hash":"_detailed_description","id":2},{"text":"name","hash":"_name","id":3},{"text":"description","hash":"_description","id":4},{"text":"supplier","hash":"_supplier","id":5},{"text":"version","hash":"_version","id":6},{"text":"type","hash":"_type","id":7},{"text":"role","hash":"_role","id":8},{"text":"partOf","hash":"_partof","id":9},{"text":"runtime","hash":"_runtime","id":10},{"text":"runtimeVersion","hash":"_runtimeversion","id":11}]},"190":{"id":190,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-document-generation-svc None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc N/A","title":"Contribution ODS Document Generation Service (ods-document-gen-svc)","component":"opendevstack","version":"4.x","name":"ods-document-gen-svc","url":"/opendevstack/latest/quickstarters/ods-document-gen-svc.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"191":{"id":191,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-provisioning-app None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app N/A","title":"Contribution ODS Provisioning Application (ods-provisioning-app)","component":"opendevstack","version":"4.x","name":"ods-provisioning-app","url":"/opendevstack/latest/quickstarters/ods-provisioning-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"192":{"id":192,"text":"The release manager supports the orchestration of multiple repositories into a live application. . ├── docs # Fall-back document chapter templates for (LeVA) compliance reports. ├── Jenkinsfile # The release manager pipeline. ├── .pre-commit-config.yaml ├── README.md └── metadata.yml # Configuration of the release manager pipeline and its repositories. The release manager automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. This type designates ODS components designed for running some service. Examples include repositories based on the be-gateway-nginx quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. The release manager will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, the release manager automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. The release manager automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process. Note: when you configure a Jira service in metadata.yml, the release manager expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the release manager will fall back to the document chapter templates located in the docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. If you want your target environment to be created from an existing source environment such as dev or test on the fly, you need to provide the environment and sourceEnvironmentToClone parameters to your pipeline, respectively. Their values will be combined with your project ID in the form ${project-id}-${environment} to create the project (namespace) name in your OpenShift cluster. include::partial$secret-scanning-with-gitleaks.adoc","title":"Release Manager","component":"opendevstack","version":"4.x","name":"release-manager","url":"/opendevstack/latest/quickstarters/release-manager.html","titles":[{"text":"File Structure","hash":"_file_structure","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":12},{"text":"Automated Cloning of Environments","hash":"_automated_cloning_of_environments","id":13}]},"193":{"id":193,"text":"Tailor has been developed for OpenShift 3.11. Back in the days, Helm 2 required the use of a privileged Tiller service and did not work well with OpenShift-specific resources. With Helm 3 and OpenShift 4, this situation has changed. While Tailor also works in an OpenShift 4 cluster, OpenShift has integrated Helm into its product, and Helm has a huge and growing community. Therefore, it is recommended to use Helm instead of Tailor in an OpenShift 4 cluster. Tailor is based on OpenShift templates, which define the Kubernetes resources to apply. Helm uses a different templating language / engine, but in the end the templates also describe Kubernetes resources. Therefore, migration effort is relatively low as one only needs to change the syntax of the definition, not the definition itself. Further, there are differences between the CLI of the two tools and not all features of Tailor are available in Helm and vice-versa. Once migration to Helm is complete, it is also recommended to look at the best practices in the Helm community and adopt these. This document will describe how to adopt resources deployed using Tailor into a Helm release for OpenDevStack installation. There are basically two options how to approach this: you can either adopt your existing OpenShift resources to chart templates, or you can start a clean installation. Once the templates have been made ready, you can continue the installation/update following the normal process In order to adopt the resources into a Helm release you can use the following script https://github.com/opendevstack/ods-core/blob/master/scripts/tailor2helm.sh In this case you will need to remove all existing resources for the component that has been previously deployed using Tailor, you can check existing resources like this: oc -n ods get all -l app=foo-bar Check more information about migration from tailor to helm and their differences in https://github.com/opendevstack/tailor/wiki/Migrating-from-Tailor-to-Helm","title":"Migrating from Tailor to Helm","component":"opendevstack","version":"5.x","name":"helm-migration","url":"/opendevstack/5.x/administration/helm-migration.html","titles":[{"text":"Templates preparation","hash":"_templates_preparation","id":1},{"text":"Option 1: Adopting OpenShift resources","hash":"_option_1_adopting_openshift_resources","id":2},{"text":"Option 2: Clean Installation","hash":"_option_2_clean_installation","id":3},{"text":"Sources","hash":"_sources","id":4}]},"194":{"id":194,"text":"ODS makes use of and provides a few container images. This document will detail which container images are used, how contaienr images are built during an ODS installation, and how images are consumed by users of ODS. There are three broad categories of images: Images used in the central ODS namespace Images used in the *-cd namespace of each ODS project Application images used in the -dev and -test namespace Every category has different lifecycles. Those images are owned by ODS admins. Examples of such images include the SonarQube image and the Nexus image. All of the images used by containers in the central ODS namespace are built by ODS during its installation. No container uses a vanilla image as provided by e.g. DockerHub or quay.io. Each image is created through a BuildConfig, and placed into an ImageStream. The BuildConfig defines which Dockerfile is used, and which base image is used to build from. The base image can be pulled from DockerHub (e.g. in case of SonarQube or Nexus), but it can also be from another registry (e.g. in case for the Jenkins Master image, it might be from registry.access.redhat.com or registry.redhat.io). The images are built during installation or upgrade of ODS, and tagged with the value of the configuration parameter ODS_IMAGE_TAG. Once an image has been built, it is not changed until a new build is triggered - that means that even if the base image changes, it has no effect on the images in the central ODS namespaces unless an admin triggers a new build for that image. Further, a new image does not necessarily equal an update to the deployment. Admins have to ensure that new deployments are rolled out so that the new images get picked up. Those images are also owned by ODS admins, and also built in the central ODS namespace like the first category, but the deployments are running in each ODS project. The images in this catgeory are the Jenkins related images (master, agents, webhook-proxy), and potentially also the image for the document generation service. Note that building a new image in the central ODS namespace does not equal an update of the deployments in each *-cd project. This is because no image triggers are defined on the DeploymentConfig resources. While having such a trigger sounds convenient at first, it is actually not desirable. The main reason is that the rollouts started from an image trigger cannot be controlled, leading to simultaneous restarts which runs the risk of putting a huge amount of load on the cluster. A downside of not having a trigger is that it is cumbersome for ODS admins to rollout bugfixes and security patches to running instances such as the Jenkins Master or the webhook proxy. At the moment, there is no easy, automated, solution to this. However, you might be interested in an experimental tool, oc-batch-rollout, which allows admins to trigger rollouts in a controlled fashion. Those images are owned by ODS users and are built using BuildConfig resources in the respective namespace. The build is triggered from the Jenkins pipeline. The BuildConfig refers to a Dockerfile in the application repository, which refers to an image (typically from DockerHub) in its FROM instruction. Which image gets pulled from DockerHub is completely dependent on which image tag is specified in the FROM instruction. Authors of the Dockerfile are free to be as specific or inspecific as they want, e.g. they could point to the latest tag or use a more stable version published by the base image owner. Therefore, updates to the base image of application images take effect on every build. Once an application runs in a pod though, its image is not automatically updated when the base image changes in DockerHub. Also it is important to note that updates to the Dockerfile in a quickstarter have no effect on an application, even if the application was originally provisioned using that same quickstarter. The reason is that there is no ongoing link between a quickstarter (which is like a template) and the created component (which is like an instance). Depending on the category of the image as outlined above, vulnerabilities in those image have different impact, and also different mitigation paths. Vulnerabilities in application images have a high impact, but mitigation is relatively easy. If the vulnerability is within the base image, and the latest image of the currently used image tag has the vulnerability fixed, one simply needs to trigger a new Jenkins job, which builds a new image, and deploys that new image. If the image tag referenced in the FROM instruction of the Dockerfile does not contain the security fix, one can attempt to change to an image tag which is not vulnerable. Finally, the vulnerability might not be in the base image, but in the Dockerfile of the application, in which the security fix can be applied there. Vulnerabilities in images used in the -cd namespace of each ODS project are a bit harder to mitigate. This is because the vulnerability can be in the base image or in the ODS customisation of it. Further, to actually fix the vulnerability in the running container, one needs to built a new vulnerabilty-free image and have that rolled out to each -cd namespace (remember there are no automatic image triggers). Vulnerabilities in images used in the central ODS namespace are very similar to this. However, since all deployments in the ODS namespace are controlled by the ODS administrator, updating them is easier from a process perspective then the containers in the *-cd namespaces.","title":"Image Lifecycles","component":"opendevstack","version":"5.x","name":"image-lifecycle","url":"/opendevstack/5.x/administration/image-lifecycle.html","titles":[{"text":"Categories of images","hash":"_categories_of_images","id":1},{"text":"Images used in the central ODS namespace","hash":"_images_used_in_the_central_ods_namespace","id":2},{"text":"Images used in the *-cd namespace of each ODS project","hash":"_images_used_in_the_cd_namespace_of_each_ods_project","id":3},{"text":"Application images used in the -dev and -test namespace","hash":"_application_images_used_in_the_dev_and_test_namespace","id":4},{"text":"Vulnerabilities in images","hash":"_vulnerabilities_in_images","id":5}]},"195":{"id":195,"text":"This page is outdated. Please follow the new installation guide instead. However, some parts are still missing there so you might find this page useful. The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables. The ansible role definitions are located in the ods-core repository at infrastructure-setup/ansible/roles Note that there are two different types of roles: roles starting with modified or local; these roles are modified by the OpenDevStack members and are maintained by them all other roles, e.g geerlingguy.git, which are copied roles from ansible galaxy. The roles from ansible galaxy are specified in the requirements.yml file. In order to migrate to a new version of the role, you need to specify the version in the requirements.yml file run ansible-galaxy install Example: update geerlingguy.git to version 2.1.0 Update requirements.yml: - src: geerlingguy.git version: 2.1.0 Call ansible-galaxy install: export ANSIBLE_VAULT_PASSWORD_FILE=/vagrant/ansible/.vault_pass.txt && ansible-galaxy install -r requirements.yml -p roles - andrewrothstein.openshift-origin-client-tools (v1.0.9) is already installed, skipping. - geerlingguy.nginx (2.6.2) is already installed, skipping. - geerlingguy.docker (2.0.4) is already installed, skipping. - downloading role 'git', owned by geerlingguy - downloading role from https://github.com/geerlingguy/ansible-role-git/archive/2.1.0.tar.gz - extracting geerlingguy.git to /vagrant/ansible/roles/geerlingguy.git - geerlingguy.git (2.1.0) was installed successfully","title":"Infrastructure Setup","component":"opendevstack","version":"5.x","name":"infrastructure-setup","url":"/opendevstack/5.x/administration/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1},{"text":"How to update ansible roles","hash":"_how_to_update_ansible_roles","id":2}]},"196":{"id":196,"text":"This document will guide you through installing / maintaining an OpenDevStack installation. Installing OpenShift is out of scope for this guide. We assume you have an OpenShift 3.11 cluster running already. If so, ensure that the cluster nodes have vm.max_map_count set to at least 262144, otherwise you’ll not be able to install SonarQube later on. You may change this setting via sudo sysctl -w vm.max_map_count=262144. If you do not have an OpenShift cluster yet, and just want to try things out, you may use oc cluster up to spin up a temporary cluster. Note that this will only work on Linux and we recommend to have at least 16GB RAM and 32GB of available disk space. From now on we assume you work from a Bash terminal (Cygwin / Linux). In this terminal, you’ll ned a recent git version (>= 2.13.2) and a recent jq version (>= 1.5, see https://stedolan.github.io/jq/) in your $PATH. Before you can install OpenDevStack (no matter whether locally or on another server) you need to have the ODS repositories available on your local machine. For this purpose, ODS provides a script to setup all required repositories with the same Git ref easily. This script needs to be downloaded to the umbrella directory which should hold all ODS respositories. The following example shows how to do this for the master version, please use the exact version you want to install (e.g. v4.0.0): UMBRELLA_DIR=~/opendevstack GIT_REF=master mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF After running this script, all required repositories should be available locally. Go to ods-core and run: make prepare-config If you want to install OpenDevStack for the first time, leave the BitBucket URL empty. After the configuration is prepared (which means that a directory ods-configuration will be created if it does not exist yet), fill out all the parameters in ods-core.env in directory ods-configuration for your installation. Add all files of directory ods-configuration to git and commit the result. You don’t need to push yet, this will be done later. \"Preparing\" also updates the sample files and checks if any params are present in the sample files but missing from the real file. If you are using windows Cygwin or WSL remember to change ending line CRLF to LF before commit ods-core.env, you can find more information on configure Git ending line At this stage you have to setup the Atlassian suite (Jira, Confluence, Bitbucket, Crowd) if it does not exist yet. If you already have an installation the Atlassian suite, you now need to configure it to work with OpenDevStack. Documentation for the installation and configuration of the Atlassian suite is missing at the moment. The general setup is described in https://github.com/opendevstack/ods-core/tree/master/infrastructure-setup, but this will likely need adaption to your specific environment. After Crowd is running, ensure that there is a user corresponding to the CD_USER_ID_B64/CD_USER_PWD_B64 parameters in ods-core.env. On Bitbucket, there must be an OPENDEVSTACK project filled with the necessary repositories such as ods-core. To set them up, use: make prepare-bitbucket-repos Notice that prepare-bitbucket-repos expects a running Atlassian suite (it will not spin up a new Bitbucket instance). Then, update them with the latest state so that they can be used e.g. from BuildConfig resources in OpenShift: make push-local-repos You also need to update ods-configuration, which can be done via: git remote add origin git push -u origin master Finally, it is required to create a Git ref in the ods-jenkins-shared-library which matches the ODS version you want your users to consume (as specified by ODS_IMAGE_TAG in the configuration): make set-shared-library-ref We use Tailor to handle OpenShift templates and keep OpenDevStack resources in sync. Tailor is a tool which needs to be installed on your local machine. Please see its installation instructions for your platform. Following are the version requirements: OpenDevStack version Tailor version 3.x >= 1.2.2 2.x >= 0.13.1 1.2.x = 0.9.3 1.1.x = 0.9.3 1.0.x = 0.9.1 0.1.x = 0.8 OpenDevStack needs one central project in OpenShift, which will hold all shared resources such as images or deployments. This project is typically called ods, but you can customize this in the configuration via ODS_NAMESPACE. For the following steps, you must be logged into OpenShift (using oc login --token=) with a user that has cluster-admin rights. In ods-core run: make install-ods-project A central Nexus deployment is used to proxy packages and to store artifacts. In ods-core run: make install-nexus Afterwards, run the initial configuration: make configure-nexus In the course of this you will be prompted to set a new admin password. The configure-nexus target is not idempotent yet, so it cannot be used for upgrading! A central SonarQube deployment is used to analyze source code. In ods-core run: make install-sonarqube This will launch an instance of SonarQube. The script will prompt for a new admin password. Once this has been set, an auth token for the Jenkins pipelines will be generated. Both values are automatically written into ods-configuration/ods-core.env, which you then need to commit and push. Also, you have to add the cd-user as a user in the project permissions of your Bitbucket OpenDevStack project. Read permission is sufficient. Central Jenkins images (master, agent, webhook proxy) are used by every ODS project. In ods-core run: make install-jenkins Then, there are further Jenkins agent images for each quickstarter technology. To create those images, run the following from ods-quickstarters: make install-jenkins-agent At this stage you can setup or modify the image stream for the Document Generation service. In ods-core run: make install-doc-gen At this stage you can setup or modify the provisioning application. In ods-core run: make install-provisioning-app Congratulations! At this point you should have a complete ODS installation. Try it out by provisioning a new project with the provisioning application.","title":"OpenDevStack Setup","component":"opendevstack","version":"5.x","name":"installation","url":"/opendevstack/5.x/administration/installation.html","titles":[{"text":"Server prerequisites","hash":"_server_prerequisites","id":1},{"text":"Local Setup","hash":"_local_setup","id":2},{"text":"Repositories","hash":"_repositories","id":3},{"text":"Configuration","hash":"_configuration","id":4},{"text":"Atlassian Suite","hash":"_atlassian_suite","id":5},{"text":"Bitbucket Repositories","hash":"_bitbucket_repositories","id":6},{"text":"OpenDevStack environment in OpenShift","hash":"_opendevstack_environment_in_openshift","id":7},{"text":"Tailor","hash":"_tailor","id":8},{"text":"Central ODS project","hash":"_central_ods_project","id":9},{"text":"Nexus","hash":"_nexus","id":10},{"text":"SonarQube","hash":"_sonarqube","id":11},{"text":"Jenkins","hash":"_jenkins","id":12},{"text":"Document Generation service","hash":"_document_generation_service","id":13},{"text":"Provisioning Application","hash":"_provisioning_application","id":14}]},"197":{"id":197,"text":"Table of Contents Realm master Users Realm opendevstack Groups Users Client ods-provisioning-app Keycloak is an open source identity and access managment tool. OpenDevStack uses eigther Atlassian Crowd or OpenID Connect / OAuth 2.0 protocol for authentication users of provisioning app. The usage of Keycloak is optional. Instead of keycloak, Atlassian Crowd can still be used for authentication. See documentation under ODS-Components → Provisioning App → Configuration Guide regarding the configuration of provisioning app. Setup of keycloak for local-installation is all done without further manual setup actions by starting the vagrant-box idmanager. User Password Roles admin admin keycloak admin There is (beside the master realm) one single OpenDevStack-specific realm: opendevstack. There are two OpenDevStack-specific groups inside the opendevstack realm: opendevstack-administrators opendevstack-users User Password Groups admin1 admin1 opendevstack-administrators opendevstack-users user1 user1 opendevstack-users There is one OpenDevStack-specific client inside the opendevstack realm: ods-provisioning-app. There is a protocoll mapper called Group Mapper that maps the user’s group membership to a token claim with name roles.","title":"Keycloak","component":"opendevstack","version":"5.x","name":"keycloak","url":"/opendevstack/5.x/administration/keycloak.html","titles":[{"text":"Realm master","hash":"_realm_master","id":1},{"text":"Users","hash":"_users","id":2},{"text":"Realm opendevstack","hash":"_realm_opendevstack","id":3},{"text":"Groups","hash":"_groups","id":4},{"text":"Users","hash":"_users_2","id":5},{"text":"Client ods-provisioning-app","hash":"_client_ods_provisioning_app","id":6}]},"198":{"id":198,"text":"In ODS 2, there was a central namespace cd, alongside 3 namespace dedicated to the provisioning app: prov-cd, prov-dev and prov-test. In ODS 3, there is only one namespace ods, which contains the whole OpenDevStack installation. When updating from ODS 2 to ODS 3, you will need to move the services running in cd, prov-cd and prov-test to ods. In detail: SonarQube is moving from cd to ods Nexus is moving from cd to ods Jenkins (Master and Webhook Proxy) is moving from prov-cd to ods Provisioning App is moving from prov-test to ods The Provisioning App will make use of the Jenkins instance in ods to provision new ODS projects. Apart from the instances, also all build configurations and image streams are moving from cd to ods, which means all users need to pull images from the new namespace. With that in mind, we can start the update procedure! Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. To do so, run the following and select the version you want to install (3.x). make sync-repos If your OpenDevStack installation is based on a custom branch (such as 3.acme), then you need to create a pull request on BitBucket from 3.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor. 3.x requires Tailor 1.2.2. Run: make prepare-config In 2.x, the Jenkins master base image was pulled from the openshift namespace. The agent base image could have been pulled from that namespace as well, or directly from a registry. In 3.x, the master can also be pulled directly from a registry. The advantage of this is that you do not need to worry about the import policy set in the openshift namespace, which can have suprising results (e.g. your base image never updating even though a fix has been released by RedHat). The behaviour is defined by a new configuration parameter, JENKINS_MASTER_BASE_FROM_IMAGE. Further, in 2.x you had to pick (via JENKINS_AGENT_BASE_IMAGE) whether you wanted to use Dockerfile.centos7 or Dockerfile.rhel7. However, both files contained the same instructions. Therefore, those were combined into a single Dockerfile and you only need to choose which base image to use via JENKINS_AGENT_BASE_FROM_IMAGE (like before). After you have updated/added/removed all parameters with your desired values, commit and push the result. Next you need to update all OpenShift resources (such as DC or BC). Review the diff produced by Tailor carefully before applying changes. In ods-core, run: make install-ods-project make install-jenkins make install-nexus make install-doc-gen In ods-quickstarters, run: make install-jenkins-agent With OpenDevStack version 3.x the \"production\" instance of the Provisioning App is moving from the prov-test to the ods namespace. The following steps describe how to perform the change: Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Install the Provisioning App in the ods namespace make install-provisioning-app Copy backed up data to new instance oc cp ./history ods/:/opt/provision Depending on your use of the Provisioning App you can either: delete all prov-* namespaces if you are only interested in running a \"production\" instance. only delete the data under /opt/provision/history in the prov-test namespace if you want to keep your setup. With OpenDevStack version 3.x SonarQube is moving from the cd namespace to the ods namespace. The following outlines the procedure for SonarQube: Create the SonarQube build resources in ods using make apply-sonarqube-build Start build of SonarQube image in ods using make start-sonarqube-build Scale down the SonarQube pod in cd Create a backup of the old data using make ODS_NAMESPACE=cd backup-sonarqube Create the SonarQube deploy resources in ods using make apply-sonarqube-deploy Scale down the SonarQube pod in ods Upload backup to new Postgres pod: oc -n ods cp sonarqube/sonarqube.sql :/var/lib/pgsql/ Start a bash in the Postgres pod: oc rsh -n ods pod/ bash and start a psql session. Drop the sonarqube database (DROP DATABASE sonarqube) and create a new, empty one (CREATE DATABASE sonarqube OWNER sonarqube). Then quit from psql. Import the backup with psql sonarqube System\". Then, start a bash in the SonarQube pod: oc rsh -n ods pod/ bash and remove /opt/sonarqube/data/es6. Afterwards, restart the server from the UI (there’s a button on the \"Administration > System\" page). Booting will take some time (depending on the amount of data to process) as a full re-index is performed. Call make configure-sonarqube to verify the new installation is correctly configured. Now delete the old SonarQube route in cd. Create a new route in ods with the same host as the old route so that projects using the old URL don’t break. Checking for secure routes has been removed from the core, but is still available at https://github.com/BIX-Digital/ods-contrib.","title":"","component":"opendevstack","version":"5.x","name":"update-2-to-3","url":"/opendevstack/5.x/administration/update-2-to-3.html","titles":[{"text":"New central namespace","hash":"_new_central_namespace","id":1},{"text":"Update your OpenDevStack repositories","hash":"_update_your_opendevstack_repositories","id":2},{"text":"Backup","hash":"_backup","id":3},{"text":"Tailor","hash":"_tailor","id":4},{"text":"Configuration","hash":"_configuration","id":5},{"text":"OpenShift resources","hash":"_openshift_resources","id":6},{"text":"Provisioning App changes","hash":"_provisioning_app_changes","id":7},{"text":"SonarQube changes","hash":"_sonarqube_changes","id":8},{"text":"Secure route removal","hash":"_secure_route_removal","id":9}]},"199":{"id":199,"text":"Learn all about how to update your OpenDevStack repositories and the running installation of it. Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. First, you need a clone of each repository in BitBucket which should be updated on your local machine. Once this has been done, you need to fetch new refs from github.com/opendevstack. To do so, add a remote pointing to it like this: git remote add ods https://github.com/opendevstack/.git Now you are ready to update the refs. It is recommended to update both the master branch and, unless you want to live off the bleeding edge, a release branch such as 2.x. Use the steps shown below: # Ensure you have the latest refs from ODS locally git fetch ods # Update master git checkout master git reset --hard ods/master git push origin master # Update 2.x git checkout 2.x git reset --hard ods/2.x git push origin 2.x If your OpenDevStack installation is based on a custom branch (such as 2.acme), then you need to create a pull request on BitBucket from 2.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Updating consists of two parts: following the general update procedure (applicable to all version updates) and a version specific update procedure. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor to the version corresponding to your new OpenDevStack version, which is noted at the start of each version specific update procedure. Then, update/add/remove the configuration parameters (located in ods-configuration). To do this, use the ./update script located in ods-core/configuration-sample. Next, run tailor update in ods-core and ods-quickstarters to bring all OCP resources (such as DC or BC) into sync. Review the diff produced by Tailor carefully, especially around changes to PVCs. After all OCP resources have been updated, you need to start a build for all build configs in the cd namespace to create new images. Also, the provisioning app should be updated. To do that, run tailor update in each ocp-config folder, and then trigger a build in Jenkins to redeploy the service. Now that the general procedure has been completed, you need to apply all the update notes below which apply to your version change. 2.x requires Tailor 0.11.0. Secure route checking has been removed for version 3.x as this is an optional step. The code now is available at https://github.com/BIX-Digital/ods-contrib. Go to ods-core/check-ocp-secure-routes/ocp-config and run tailor update to setup a cron job that will check exposed routes once a day (see https://github.com/opendevstack/ods-core/pull/280). As each project may use a specific CD user now, you have to configure the username of the global CD user. To do so, add username: Y2RfdXNlcg== to secret cd/cd-user-token. The shared-images namespace is no longer part of OpenDevStack. If you do not have any users that use images from that namespace, you may simply delete it via oc delete project shared-images. Otherwise, you can leave it in place and remote it when you see fit. Rundeck is longer part of OpenDevStack and can simply be removed. Images in the cd namespaces should be pullable from all authenticated users. This permission is required for the new project provisioning approach to work: oc adm policy add-cluster-role-to-group system:image-puller system:authenticated -n cd oc adm policy add-role-to-group view system:authenticated -n cd Further, -dev and -test namespaces should be able to pull images from the corresponding *-cd namespaces to make it easy to shared base images within a project (see https://github.com/opendevstack/ods-core/issues/293). It is recommended to grant these rights for every project in your cluster. If you don’t do this, users will have to add the permissions manually if they want to use this flow. 2.x allows the webhook proxy to build repositories in external projects if configured (see https://github.com/opendevstack/ods-core/issues/229). This feature is required for the new quickstarter provisioning approach to work. Therefore, it is recommended to tag a webhook proxy images built from the 2.x branch or v2.0 tag with latest so that all webhook proxies in the cluster get updated. Review the ConfigMap of the provisioning app in prov-dev and prov-test. Depending on your requirements, you might want to configure additional quickstarters (jenkinspipeline.quickstarter…​) and/or change the readable repositories of the project specific users (scm.global.readablerepos.opendevstack[x]) 1.2.x requires Tailor 0.10.2. The new functionality to create documents via Jenkins requires the presence of an image for the DocGen service. In an upcoming release, this will be integrated nicely. For 1.2.x, the image needs to be built once during the update procedure. The recommended way to do this is to build the image in the prov namespaces and then move the image tag into the cd namespace. The first step is to create a pipeline oc -n prov-cd process -f pipeline.yml --param REPO_BASE= --param TRIGGER_SECRET= | oc -n prov-cd create -f -, where pipeline.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: docgen-production spec: nodeSelector: {} output: {} postCommit: {} resources: {} runPolicy: Serial source: git: ref: production uri: ${REPO_BASE}/opendevstack/ods-document-generation-svc.git sourceSecret: name: cd-user-with-password type: Git strategy: jenkinsPipelineStrategy: jenkinsfilePath: Jenkinsfile type: JenkinsPipeline triggers: - generic: secret: ${TRIGGER_SECRET} type: Generic parameters: - name: TRIGGER_SECRET required: true - name: REPO_BASE required: true description: Path to repository, e.g. https://cd_user@bitbucket.domain.com/scm Then, create the BuildConfig and ImageStream in prov-dev using oc -n prov-dev process -f bc-is.yml | oc -n prov-dev create -f -, where bc-is.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: creationTimestamp: null labels: app: prov-docgen name: docgen spec: failedBuildsHistoryLimit: 5 successfulBuildsHistoryLimit: 5 nodeSelector: null output: to: kind: ImageStreamTag name: docgen:latest postCommit: {} resources: {} runPolicy: Serial source: binary: {} type: Binary strategy: dockerStrategy: {} type: Docker triggers: [] - apiVersion: image.openshift.io/v1 kind: ImageStream metadata: labels: app: prov-docgen name: docgen spec: dockerImageRepository: docgen lookupPolicy: local: false Note that this points to the production branch of ods-document-generation-svc - ensure this branch is present. After all is setup, start a build in Jenkins, and then move the built image to the cd namespace: oc tag prov-dev/docgen:latest cd/docgen:latest 1.1.x requires Tailor 0.9.4. There are no further mandatory changes apart from the general procedure described above when updating from 1.0.x. Users are highly recommended to take a look at the updates done to the boilerplates, especially the Jenkinsfile and Dockerfile. E.g. the Python quickstarter is now building an image containing all dependencies instead of installing them during runtime. 1.0.x requires Tailor 0.9.3. There is a new webhook proxy now, which proxies webhooks sent from BitBucket to Jenkins. As well as proxying, this service creates and deletes pipelines on the fly, allowing to have one pipeline per branch. To update: Setup the image in the cd project by running tailor update in ods-core/jenkins/ocp-config. Build the image. Setup the webhook proxy next to each Jenkins instance. E.g., go to ods-project-quickstarters/ocp-templates/templates and run oc process cd//cd-jenkins-webhook-proxy | oc create -f- -n xyz-cd. Repeat for each project. For each component, follow the following steps: In Jenkinsfile: Set the shared library version to 1.0.x. Replace stageUpdateOpenshiftBuild with stageStartOpenshiftBuild. Remove stageCreateOpenshiftEnvironment and stageTriggerAllBuilds. Adapt the build logic to match the latest state of the quickstarter boilerplates. Remove verbose: true config (replace with debug: true if you want debug output). Configure branchToEnvironmentMapping, see README.md. If you used environment cloning, also apply the instructions for that. In docker/Dockerfile: Adapt the content to match the latest state of the quickstarter boilerplates. No Nexus upload build artifact is required anymore, use a copy in Jenkins shell command to docker folder (see in any boilerplate how it is done now). In BitBucket, remove the existing \"Post Webhooks\" and create a new \"Webhook\", pointing to the new webhook proxy. The URL has to be of the form https://webhook-proxy-$PROJECT_ID-cd.$DOMAIN?trigger_secret=$SECRET. As events, select \"Repository Push\" and \"Pull request Merged + Declined\". If you want to build the provisioning app automatically when commits are pushed to BitBucket, add a webhook as described in the previous section. 1.0.x makes use of the BUILD_URL env variable automatically set by Jenkins. This env variable might be null in your Jenkins master. To fix this, copy https://github.com/opendevstack/ods-core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovy into each Jenins master to /var/lib/jenkins/init.groovy.d/url.groovy. 1.0.x sets image labels on the BuildConfig in Jenkins. It does this by issuing a JSON patch replace request to /spec/output/imageLabels. This path was not present in prior versions, which can lead to the following error: Error from server: jsonpatch replace operation does not apply: doc is missing key: /spec/output/imageLabels. For newly provisioned components, this has been fixed with https://github.com/opendevstack/ods-project-quickstarters/pull/188. For existing components, add the path to the BuildConfig manually by editing the YAML in OpenShift.","title":"Update Guide for OpenDevStack administrators","component":"opendevstack","version":"5.x","name":"update-older","url":"/opendevstack/5.x/administration/update-older.html","titles":[{"text":"How to update your OpenDevStack repositories","hash":"_how_to_update_your_opendevstack_repositories","id":1},{"text":"How to update your OpenDevStack installation","hash":"_how_to_update_your_opendevstack_installation","id":2},{"text":"General update procedure","hash":"_general_update_procedure","id":3},{"text":"Backup","hash":"_backup","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Configuration","hash":"_configuration","id":6},{"text":"OCP resources","hash":"_ocp_resources","id":7},{"text":"Images","hash":"_images","id":8},{"text":"Provisioning App","hash":"_provisioning_app","id":9},{"text":"1.2.x to 2.x","hash":"_1_2_x_to_2_x","id":10},{"text":"Setup secure route checking","hash":"_setup_secure_route_checking","id":11},{"text":"Project specific CD users","hash":"_project_specific_cd_users","id":12},{"text":"Deprecation of shared-images namespace","hash":"_deprecation_of_shared_images_namespace","id":13},{"text":"Rundeck removal","hash":"_rundeck_removal","id":14},{"text":"Image puller rights","hash":"_image_puller_rights","id":15},{"text":"Rollout new webhook proxy instances","hash":"_rollout_new_webhook_proxy_instances","id":16},{"text":"Configure the provisioning app","hash":"_configure_the_provisioning_app","id":17},{"text":"1.1.x to 1.2.x","hash":"_1_1_x_to_1_2_x","id":18},{"text":"Prepare installation for release manager quickstarter","hash":"_prepare_installation_for_release_manager_quickstarter","id":19},{"text":"1.0.x to 1.1.x","hash":"_1_0_x_to_1_1_x","id":20},{"text":"0.1.0 to 1.0.x","hash":"_0_1_0_to_1_0_x","id":21},{"text":"Update xyz-cd projects","hash":"_update_xyz_cd_projects","id":22},{"text":"Update components (information for ODS users)","hash":"_update_components_information_for_ods_users","id":23},{"text":"Update provisioning app","hash":"_update_provisioning_app","id":24},{"text":"Fix Jenkins master BUILD_URL","hash":"_fix_jenkins_master_build_url","id":25},{"text":"Fix JSON patch replace error in Jenkins build","hash":"_fix_json_patch_replace_error_in_jenkins_build","id":26}]},"200":{"id":200,"text":"Please refer to the contribution guide in the PMC repository.","title":"Development Guide","component":"opendevstack","version":"5.x","name":"development","url":"/opendevstack/5.x/contributing/development.html","titles":[]},"201":{"id":201,"text":"OpenDevStack documentation is build with Antora. As we release new versions of OpenDevStack with new or changed functionality and configuration, it should always be clear which documentation applies to which release. Thus we follow the philosophy: manage documetation as code. This means: Storing content in a version control system alongside with the code. Separating content, configuration, and presentation Reusing shared materials (Don’t repeat yourself) Antora is a static site generator by the folks behind the AsciiDoctor project that follows this practices. The engine converts a collection of version controlled documentation written in AsciiDoc into an HTML site. Documentation is spread across multiple repositories. In each repository, there is a docs folder containing the documentation. We use one \"distributed\" component named opendevstack (see Component structure documentation), and each docs folder adds one or more named modules into that component. The navigation for the component is located in the ods-core repository. Additionally, we have the ods-documentation repository which contains the Playbook and the ods-docs-ui repository containing UI customization. A guide for building the documentation locally is provided in the ods-documentation README. Issue a pull request against the repository containing the documentation you add / modify. Once this is merged, the documentation website will get updated automatically (via a daily cronjob). The documentation will be build on Travis and pushed back to the ods-documentation repository. The .travis.yml file is located in the ods-documentation project.","title":"The OpenDevStack documentation","component":"opendevstack","version":"5.x","name":"documentation","url":"/opendevstack/5.x/contributing/documentation.html","titles":[{"text":"Why we chose Antora","hash":"_why_we_chose_antora","id":1},{"text":"How is the documentation organized?","hash":"_how_is_the_documentation_organized","id":2},{"text":"How to build the site locally?","hash":"_how_to_build_the_site_locally","id":3},{"text":"How to contribute documentation","hash":"_how_to_contribute_documentation","id":4},{"text":"How is the documentation built on Github?","hash":"_how_is_the_documentation_built_on_github","id":5}]},"202":{"id":202,"text":"When we started with the OpenShift container platform we were blown away by the 100s of possibilities to use it, but there was nothing along the lines of “This is how you make it work for your org”. What we wanted is to enable developers to quickly introduce Continous Delivery and standardized technology archetypes. We call this lean, empowered governance. OpenDevStack (ODS) is how we achieve this. It is, to a large extent, tooling sitting in between your local software development (your machine/editor), and the running software in the target environemnt (OpenShift etc.). As such, most of ODS functionality is within and related to the CI/CD process. ODS has no overlap with your local environment, such as the editor you use to develop software. ODS is not a project management solution, rather it makes use of the Atlassian suite (Jira, Confluence, Bitbucket). ODS does not run your software application. ODS only deploys your software into a target environment (= OpenShift, but deployment could really be anywhere, such as AWS etc.). ODS is not a replacement for tools in the container space - rather it is one coherent offering of a selection of existing (open-source) tools. ODS is comprised of core functionality, and a configurable set of so-called quickstarters. Quickstarters can be seen as software templates, which can be instantiated in your project to create a component of your application quickly, with all the integration / configuration setup out-of-the box. The officially supplied quickstarters include, but are not limited to: Java (Spring Boot), Python (Flask), Scala (Play), Go, Angular, Ionic, Jupyter, RShiny. The core ODS functionality offers the following: A central provisioning application (the “entry point of ODS”) which allows to: provision new projects and provision components from aforementioned quickstarters within those projects A central Nexus instance to store and retrieve software artefacts. A central SonarQube instance to statically analyze the software components of a project. Customized Jenkins Master and Jenkins agent base images that are integrated with e.g. Bitbucket, OpenShift, Nexus and SonarQube. Each project runs its own Jenkins Master instance using the centrally provided image. A Jenkins Shared Library which can be used from each software component to cover most CI/CD functionality. The shared library offers all language-agnostic features, such as checking out source code, running static analysis, building container images, and deploying artefacts into the target environment. Each component only needs to add in their Jenkinsfile language-specific functionality such as building artefacts (e.g. JAR files). A release manager component which can be installed in each project to generate GxP documents from Jenkins pipeline runs (through the use of a centrally provided document generation service image). Quickstarters provide the following: Jenkins agent images that can be used during pipeline runs to build a specific language / framework Boilerplate of a specific language / framework with a \"Hello World\" example A Jenkinsfile integrating the Jenkins shared library and providing basic artefact building for the specific language / framework Integration with SonarQube, Nexus, OpenShift etc. as required When quickstarters are provisioned through the provisioning application, a repository is created on Bitbucket for the new component. The repository is populated with the boilerplate, and immediately built and deployed via Jenkins through the ODS integration. Developers can start to work on features straight away without setting up CI/CD and integrating various services. The following pictures the different parts ODS is made out of: Below is a diagram detailing the flow of an OpenDevStack CI/CD pipeline: Each major ODS release is identified by a version such as 2, 3, 4 and so on. Administrators of ODS can either: install from master to follow the cutting edge install from 2.x, 3.x, etc. branches to stay on a major version, but get bug fixes (minor versions) install from v2.0.0, v3.0.0, etc. tags to pin an exact version use a custom branch / tag such as 2.acme or 3.custom etc. to run ODS with customizations Users of ODS simply consume the version installed by their ODS administrators. A major update (e.g. 2.x to 3.x or 3.x to 4.x) is, from a user perspective, an explicit update. This means that although admins update the ODS installation in the cluster, users still have to explicitly adopt that change (e.g. by updating their Jenkins image reference and so on). Therefore, a major version change is accompanied by an update guide like Update to 3.x. For admins, a major update might mean that configuration options have to be changed or migration steps have to be taken, as well as rebuilding and rolling out all images etc. A minor update (consuming changes/bugfixs on a release branch such as 3.x) is, from a user perspective, an implicit update. This means that only admins have to make a change to the ODS installation in the cluster. Users should get those changes automatically, without the need to explicitly adopt it. Therefore, there is no update guide for minor updates. For admins, a minor update should (typically) not require changing configuration options nor performing migration steps - only rebuilding and rolling out some (or all) images should be needed. Each version is tracked as a GitHub project. The current major version is 4, the next one will be 5. See project page for details. OpenShift 4 support (keeping 3.11 compatibility) Support for Kubernetes-native Deployment resources and Helm 3 within component pipeline dropped machine learning quickstarter Integration with Aqua Security Implement health checks for quickstarters Rename central namespace to ODS, and extend with running provisioning app Install provisioning app and document generation service from pre-built images Quickstarter pipeline Merge of MRO (now: orchestration pipeline) into general shared pipeline Automation of SonarQube and Nexus setup Decorate Bitbucket pull requests with SonarQube analysis Promote images between environments if possible (instead of rebuilding) New (single page) app user interface as optional feature Removal of Rundeck (replace with Jenkins jobs) New quickstarter concept (multiple repo support) Project specific technical users CPU and memory quota support Initial version of document generation service and MRO pipeline Incremental improvements. Initial release.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"What ODS isn’t","hash":"_what_ods_isnt","id":2},{"text":"High-Level Overview of ODS","hash":"_high_level_overview_of_ods","id":3},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":4},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":5},{"text":"Versioning","hash":"_versioning","id":6},{"text":"Roadmap","hash":"_roadmap","id":7},{"text":"4.2 (Target Date: End-of-Feb 2022)","hash":"_4_2_target_date_end_of_feb_2022","id":8},{"text":"4 (November 2021)","hash":"_4_november_2021","id":9},{"text":"3 (August 2020)","hash":"_3_august_2020","id":10},{"text":"2 (December 2019)","hash":"_2_december_2019","id":11},{"text":"1.2 (October 2019, using old versioning scheme)","hash":"_1_2_october_2019_using_old_versioning_scheme","id":12},{"text":"1.1 (June 2019, using old versioning scheme)","hash":"_1_1_june_2019_using_old_versioning_scheme","id":13},{"text":"1.0 (November 2018, using old versioning scheme)","hash":"_1_0_november_2018_using_old_versioning_scheme","id":14}]},"203":{"id":203,"text":"Jenkins master deployments are using an image built in the central ODS namespace. This image is a customisation of an upstream Jenkins master image provided by RedHat. Jenkins agent images are also built in the central ODS namespace, and are also based on upstream images provided by RedHat. The exact Jenkins version which is used is determined by which RedHat base image tag is used, and depending on the used tag, at which time the ODS image is built. To update Jenkins (master and agents), the following steps need to be taken: Configure new versions Update BuildConfig resources Create new images Rollout new deployments The following will guide you through this process. To configure a new version of Jenkins, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core and ods-quickstarters repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-quickstarters,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change JENKINS_MASTER_BASE_FROM_IMAGE and JENKINS_AGENT_BASE_FROM_IMAGE in ods-configuration/ods-core.env to your desired image tags. Commit the change and push it to Bitbucket. If the configured tag is a moving target, you might not need to change it at all and you can simply continue with the next step. Next, you should ensure that the Jenkins BuildConfig resources in the central ODS namespace are up-to-date, then trigger new builds so that new images with the changed base images get built. Finally, new deployments should be rolled out which use the newly built image. All of this can be done from the ods-core repository: make install-jenkins This target depends on the targets apply-jenkins-build, start-jenkins-build, and apply-jenkins-deploy which execute the steps described above (and can of course also be executed individually). Only the Jenkins master deployment in the central ODS namespace gets updated automatically using this command. Updating Jenkins master deployments in each *-cd namespace is a separate task for which no ODS automation exists at the moment. Finally, you also need to rebuild all technology-specific Jenkins agent images. For the Jenkins agent images delivered with the official quickstarters, this can be done from the ods-quickstarters repository: make install-jenkins-agent If you have other quickstarters which use custom Jenkins agents, you will also have to rebuild those.","title":"Jenkins Administration","component":"opendevstack","version":"5.x","name":"administration","url":"/opendevstack/5.x/jenkins/administration.html","titles":[{"text":"Updating Jenkins to a new version","hash":"_updating_jenkins_to_a_new_version","id":1}]},"204":{"id":204,"text":"We have a base image for different jenkins agents. The concrete agent images are then configured as part of the quickstarters. The base image contains the following customizations: SonarQube Scanner SonarQube CNES Report Plugin Tailor Helm Skopeo Snyk - used to scan and monitor projects vulnerable third-party dependencies (only installed if SNYK_DISTRIBUTION_URL is configured) Aqua Scanner CLI - used to scan local images and interact with the Aqua Server (only installed if AQUASEC_SCANNERCLI_URL is configured) Trivy Scanner - used to scan filesystem and generate “software bill of materials” SBOM report Setting of enterprise proxy (based on HTTP_PROXY presence) Support for custom certificates (based on APP_DNS presence) When the container image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins agent works also on OpenShift clusters in enterprises that use a web proxy. The base jenkins agent is used by all ODS builder agents","title":"ODS Jenkins Agent base","component":"opendevstack","version":"5.x","name":"agent-base","url":"/opendevstack/5.x/jenkins/agent-base.html","titles":[]},"205":{"id":205,"text":"OpenDevStack provides several customized Jenkins container images based on the official OpenShift images.","title":"Jenkins","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/jenkins/index.html","titles":[]},"206":{"id":206,"text":"The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.18 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 workflow-cps-global-lib:2.13 junit:1.28 blueocean:1.18.0 workflow-durable-task-step:2.28 openshift-sync:1.0.44 Jenkins offers to deploy post-initialization scripts. Table 1. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins location based on the OpenShift route sonarqube.groovy Sets the SonarQube server URL and auth token based on the exposed environment variables ods-jenkins-shared-library.groovy Registers ods-jenkins-shared-library as a global library The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the SonarQube server. SONAR_AUTH_TOKEN this is the SonarQube auth token that is generated when deploying and configuring sonarqube Jenkins email notifications need manual configuration: The SMTP server parameters that need to be defined are found under menu option: Jenkins → Manage Jenkins → Configure System → Extended E-mail Notification It is also mandatory to define the System Admin e-mail address, this is defined under menu option: Jenkins → Manage Jenkins → Configure System → Jenkins Location Once Jenkins is configured, you will also need to define the recipients of the email notifications by definining emailextRecipients parameter in your odsComponentPipeline context, in your components' Jenkinsfile, like: ... odsComponentPipeline( ... emailextRecipients: ['email1@foo.bar', 'email2@foo.bar'], ... ) { context -> ...","title":"Jenkins Master","component":"opendevstack","version":"5.x","name":"master","url":"/opendevstack/5.x/jenkins/master.html","titles":[{"text":"Configured Plugins","hash":"_configured_plugins","id":1},{"text":"Init scripts","hash":"_init_scripts","id":2},{"text":"Email notifications","hash":"_email_notifications","id":3}]},"207":{"id":207,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables can be set on the DeploymentConfig and are read by the webhook proxy: Variable Description ACCEPTED_EVENTS Comma-separated list of handled Bitbucket events. Defaults to repo:refs_changed,pr:declined,pr:merged,pr:deleted. ALLOWED_CHANGE_REF_TYPES Comma-separated list of Bitbucket change refs. Defaults to BRANCH, which means tags do not create pipelines nor forward to them. If you want this to happen, specify e.g. BRANCH,TAG. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. For security reasons, by default the webhook proxy allows only its own project and the opendevstack project to be passed as a project parameter. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be removed after they have been merged. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"5.x","name":"webhook-proxy","url":"/opendevstack/5.x/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"208":{"id":208,"text":"The ods-core repository contains a build recipe for a central Nexus instance. The remainder of this document describes how that setup is done, and how it can be modified and updated. The Nexus deployment is using an image built in the central ODS namespace. This image is a customisation of the official Nexus image on DockerHub. The Nexus version which is used is determined by which image tag from DockerHub is used, and depending on tag, at which time the ODS image is built. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html To update Nexus, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of Nexus, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change NEXUS_IMAGE_TAG in ods-configuration/ods-core.env to your desired image tag. Commit the change and push it to Bitbucket. Next, you should ensure that the Nexus BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image with the changed base image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-nexus This target depends on the targets apply-nexus-chart and start-nexus-build which execute the steps described above (and can of course also be executed individually). There is also a configure-nexus target. However, this is not executed as part of install-nexus as it is not idempotent yet (which means it cannot be used against an existing Nexus deployment). For a simple Nexus version update, you don’t need to change any configuration, but if you switch between ODS versions you should keep an eye on Nexus configuration.","title":"Nexus Administration","component":"opendevstack","version":"5.x","name":"administration","url":"/opendevstack/5.x/nexus/administration.html","titles":[{"text":"Updating Nexus to a new version","hash":"_updating_nexus_to_a_new_version","id":1}]},"209":{"id":209,"text":"","title":"Nexus","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/nexus/index.html","titles":[]},"210":{"id":210,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"5.x","name":"sysenv-requirements","url":"/opendevstack/5.x/ods-core/sysenv-requirements.html","titles":[]},"211":{"id":211,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a agent pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"5.x","name":"troubleshooting","url":"/opendevstack/5.x/ods-core/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins agent - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_agent_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"212":{"id":212,"text":"The ods-core repository contains a build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this document describes how that setup is done. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OpenShift project cd, inside the sonarqube-app secret. The SonarQube deployment is using an image built in the central ODS namespace. This image is based on the https://hub.docker.com/_/sonarqube, as can be seen in the ODS Dockerfile. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html If the previous version was configured to use Atlassian Crowd as Authentication provider, run the script https://github.com/opendevstack/ods-core/tree/master/scripts/migrate-sonar-users.sh in order to migrate current users to use Saml as Authentication provider. To update SonarQube, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of SonarQube, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change SONAR_VERSION in ods-configuration/ods-core.env to your desired version. Commit the change and push it to Bitbucket. Next, you should ensure that the SonarQube BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-sonarqube This target depends on the targets apply-sonarqube-chart, start-sonarqube-build and configure-sonarqube which execute the steps described above (and can of course also be executed individually).","title":"SonarQube Administration","component":"opendevstack","version":"5.x","name":"administration","url":"/opendevstack/5.x/sonarqube/administration.html","titles":[{"text":"Modifying configurations, plugins, etc.","hash":"_modifying_configurations_plugins_etc","id":1},{"text":"Updating SonarQube to a new version","hash":"_updating_sonarqube_to_a_new_version","id":2}]},"213":{"id":213,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This file needs to be located in the root of the repository you want to have analysed. For example: # Project Key (required) sonar.projectKey=test-spring-boot # Project Name (optional, this is what is shown in the main list) sonar.projectName=test-spring-boot # Comma-separated paths to directories with sources (required) sonar.sources=src # Forced Language (optional) sonar.language=java # Encoding of the source files (optional but recommended as default is ASCII) sonar.sourceEncoding=UTF-8 # Plugin-specific settings sonar.java.binaries=build/classes sonar.java.libraries=build/libs sonar.junit.reportPaths=build/test-results/test The general settings are documented at https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/analysis-parameters. There’s a prebuilt stage (odsComponentStageScanWithSonar) that you can use, see https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/component-pipeline.html#_odscomponentstagescanwithsonar for details. The team behind SonarQube also published SonarLint, a plugin currently available for IntelliJ, Eclipse, Visual Studio, VS Code and Atom that lets you scan while coding in your IDE. It also integrates with a SonarQube Server, so that you can scan with the servers rule settings. For further information please see https://www.sonarlint.org/intellij/howto.html. For the server connected mode, the SonarQube URL has to be set to your SonarQube deployment. Be aware that this does not connect you with the SonarQube Server in OpenShift, therefore you might have other rule settings locally than the ones set on server. That said, here’s what you need to do on your host to have a local SonarQube instance: docker pull sonarqube docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube ./gradlew sonarqube Running these commands will let you see at http://localhost:9000 your project reports, for any branch. Please, note that you are not running with an embedded database in this case, so it is only for temporary testing, do not expect historic report.","title":"SonarQube","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/sonarqube/index.html","titles":[{"text":"sonar-project.properties file","hash":"_sonar_project_properties_file","id":1},{"text":"Scanning in Jenkins pipelines","hash":"_scanning_in_jenkins_pipelines","id":2},{"text":"Scanning locally: SonarLint IDE Plugin","hash":"_scanning_locally_sonarlint_ide_plugin","id":3},{"text":"Scanning locally: SonarQube Docker Container","hash":"_scanning_locally_sonarqube_docker_container","id":4}]},"214":{"id":214,"text":"Table of Contents Required steps Update image tags of Jenkins deployments Update Jenkinsfiles in Git repositories Grant image-puller rights to your *-cd namespace Component resource constraints Notable changes Component deployment behaviour Jenkins slave NodeJS 8 New Tailor version Deprecation of shared-services namespace New features SonarQube quality gates Skopeo Common / Known Issues Learn all about how to update your OpenDevStack based project to ODS 2.x. It is assumed that you are updating from ODS 1.2.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (2.x), and trigger a deployment. Edit every Jenkinsfile. The shared library should point to 2.x, e.g.: library identifier: 'ods-library@2.x', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) Also, the image used to run the pipeline in should point to 2.x, e.g.: odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven:2.x\", ... ) This step is not strictly necessary, but recommended as projects created with version 2.x will have those rights by default. Having this setup will enable you to use the *-cd namespace for common base images to reduce build times. Run the following, replacing $PROJECT_ID with your project ID: oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-test -n $PROJECT_ID-cd oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-dev -n $PROJECT_ID-cd Note that you need to be an admin on your project in order to run those commands. For more information, see ods-core#293. Newly created components now have memory quotas (ods-quickstarters#12) and CPU quotas (ods-quickstarters#74) configured. It is recommended (though not required) to configure resource constraints for existing components as well. If you are unsure which values to set, refer to the new defaults and check the current usage in the \"Metrics\" section in OpenShift. In the shared library, rollouts will be triggered manually now when no config/image trigger exists on the DeploymentConfig. The cd/jenkins-slave-nodejs8-angular image has been discontinued. Please update to cd/jenkins-slave-nodejs10-angular. For more information, see ods-quickstarters#71. Tailor has been updated to 0.11.0 in the Jenkins slaves, see ods-core#290. The shared-images namespace (containing common base images) has been removed from new ODS 2.0 installation. For existing installations, it is likely being kept for some time by the cluster administrator to enable users to react to this change. If you use a component based on the ds-jupyter-notebook or ds-rshiny quickstarters, you should switch to using the new authentication approach, which is uing an OpenShift OAuth proxy instead of a Nginx service. See ods-quickstarters#46. If you use the Airflow Quickstarter, its base images should now be built in your *-cd namespace See ods-quickstarters#60. It is now possible to opt-in to failing the build if the SonarQube scan fails the quality gate defined in SonarQube. To enable this, change the call of stageScanForSonarqube(context) to stageScanForSonarqube(context, true). For more information, see ods-jenkins-shared-library#22. When working with images, you may make use of Skopeo, which is now part of the Jenkins slaves. See ods-core#253. When provisioning new components, you must use a name that differs from the component type, otherwise some quickstarters fail. E.g. when creating a new component of type fe-react, you cannot name it fe-react but must choose another name like my-app. For more information, see https://github.com/opendevstack/ods-provisioning-app/issues/336.","title":"Update Guide to version 2.x for OpenDevStack users","component":"opendevstack","version":"5.x","name":"2x","url":"/opendevstack/5.x/update-guides/2x.html","titles":[{"text":"Required steps","hash":"_required_steps","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Update Jenkinsfiles in Git repositories","hash":"_update_jenkinsfiles_in_git_repositories","id":3},{"text":"Grant image-puller rights to your *-cd namespace","hash":"_grant_image_puller_rights_to_your_cd_namespace","id":4},{"text":"Component resource constraints","hash":"_component_resource_constraints","id":5},{"text":"Notable changes","hash":"_notable_changes","id":6},{"text":"Component deployment behaviour","hash":"_component_deployment_behaviour","id":7},{"text":"Jenkins slave NodeJS 8","hash":"_jenkins_slave_nodejs_8","id":8},{"text":"New Tailor version","hash":"_new_tailor_version","id":9},{"text":"Deprecation of shared-services namespace","hash":"_deprecation_of_shared_services_namespace","id":10},{"text":"New features","hash":"_new_features","id":11},{"text":"SonarQube quality gates","hash":"_sonarqube_quality_gates","id":12},{"text":"Skopeo","hash":"_skopeo","id":13},{"text":"Common / Known Issues","hash":"_common_known_issues","id":14}]},"215":{"id":215,"text":"Table of Contents New central ods namespace Update image tags of Jenkins deployments Jenkins Shared Library changes Renamed pipelines and stages Reduced boilerplate Changed agent images Changed context properties Different image tags Changes to Jenkins agent images General upgrade to Python 3.8 Airflow Cluster Jenkins agent no longer supported Learn all about how to update your OpenDevStack based project to ODS 3.x. It is assumed that you are updating from ODS 2.x. One of the biggest changes in ODS 3 is that there is a new central namespace, named ods. This namespace hosts the complete ODS installation, such as a provisioning app, Nexus, SonarQube, and images for Jenkins (master and agent). This central namespace replaces the previous namespaces cd (which hosted Nexus, SonarQube, etc.) as well as prov-test, prov-dev and prov-cd (which hosted the provisioning app). As a user, you will be affected by this change insofar as the images you use for the Jenkins master instance and Jenkins agent nodes will need to be retrieved from ods instead of cd (see next section). Further, depending on the migration done by the administrator, the URLs of Nexus, SonarQube and the provisioning app might have changed. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (3.x), and trigger a deployment. Note that you also need to change the namespace of the images from cd to ods (see above). Since ODS 2, it is also recommended to remove any image triggers from jenkins and webhook-proxy, so that any image changes are only rolled out by yourself. If you choose to remove the image trigger, ensure that the imagePullPolicy is set to Always to always get the latest 3.x image when you deploy. If the administrator of your ODS cluster chose to use a custom Bitbucket project for the 3.x installation, then you’ll need to set the environment variable ALLOWED_EXTERNAL_PROJECTS= for the webhook-proxy DeploymentConfig. Otherwise you will not be able to provision quickstarters. 3.x ships with the three pipelines instead of just one. In 2.x, the shared library offered one pipeline to build components, named odsPipeline. This has been renamed to odsComponentPipeline to make its purpose clearer and to distinguish it from the other pipelines, odsQuickstarterPipeline (to provision quickstarters) and odsOrchestrationPipeline (to orchestrate multiple repositories using the release manager). To provide backwards compatibility, odsPipeline is still available, but deprecated and will be removed in ODS 4. In line with this change, the stages have been renamed too, which also makes them easier to distinguish from custom stages written by yourself in the Jenkinsfile. As with the pipeline, the old stages are still available but slated for removal in ODS 4. Here’s a list of the changes: stageScanForSonarqube is now odsComponentStageScanWithSonar stageScanForSnyk is now odsComponentStageScanWithSnyk stageStartOpenshiftBuild is now odsComponentStageBuildOpenShiftImage stageDeployToOpenshift is now odsComponentStageRolloutOpenShiftDeployment stageUploadToNexus is now odsComponentStageUploadToNexus Please note the new casing (e.g. OpenShift instead of Openshift). Further, the new stages all take the same two arguments: IContext context and Map config = [:]. Please see the documentation for details. In particular, some options which would previously have been set on odsPipeline can and should be set on the stage where they are used (however all options have been kept for backwards compatibility). A Jenkinsfile in 2.x looks roughly like this: def final projectId = 'foo' def final componentId = 'bar' def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def dockerRegistry node { dockerRegistry = env.DOCKER_REGISTRY } @Library('ods-jenkins-shared-library@2.x') _ odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-golang:2.x\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: ['master': 'dev'] ) { context -> stageScanForSonarqube(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) } That is a lot of boilerplate. 3.x reduces this dramatically: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: ['master': 'dev'] ) { context -> odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) odsComponentStageRolloutOpenShiftDeployment(context) } Note that the new Jenkinsfile example already uses the new pipeline/stage names as outlined above. Apart from this, it makes use of a new config option, imageStreamTag which removes the need to read the DOCKER_REGISTRY environment variable. If you need it, the image config is still present (e.g. to reference images outside of OpenShift). projectId and componentId are now automatically configured, but can still be set if desired. Up to and including 2.x, Jenkins used \"slave images\" to do its work. They have been renamed to \"agent images\" in 3.x. All new agent images are located in the new central namespace ods. Therefore, you need to update the references in your Jenkinsfile (as shown above): cd/jenkins-slave-base is now ods/jenkins-agent-base cd/jenkins-slave-golang is now ods/jenkins-agent-golang cd/jenkins-slave-maven is now ods/jenkins-agent-maven cd/jenkins-slave-nodejs10-angular is now ods/jenkins-agent-nodejs10-angular cd/jenkins-slave-python is now ods/jenkins-agent-python cd/jenkins-slave-scala is now ods/jenkins-agent-scala The context object available to use in stages has been slimmed down by removing properties unlikely to be useful to author stages (such as resource constraints of the Jenkins agent pod). Please review the documentation in case your authored stages make heavy use of the context object. One notable change to the context object is that bitbucketHost did not include the scheme previously. Now, bitbucketHost is an alias for bitbucketUrl which does include the scheme. This change was made to align the property with nexusHost and nexusUrl, which both include the scheme as well. If you used context.bitbucketHost in one of your Jenkinsfile`s, you may now use `context.bitbucketHostWithoutScheme. A notable addition to the context object is a new property issueId, which exposes the Jira issue ID (such as 123 from branch feature/FOO-123-bar-baz). Previously, images produced by odsComponentStageBuildOpenShiftImage where tagged with context.tagversion, which consisted of the Jenkins build number and the (shortened) Git commit (e.g. 7-cd3e9082). This made it difficult for other processes (unaware of the Jenkins build number) to find those images. The images are now tagged with just the (shortened) Git commit (e.g. cd3e9082). This change also has the huge benefit that it allows to promote images between environments (avoiding to rebuild them) using the new stage odsComponentStageImportOpenShiftImageOrElse. Some agent images (jenkins-agent-maven, jenkins-agent-nodejs10-angular, jenkins-agent-scala) exposed the environment variables NEXUS_HOST and NEXUS_USERNAME/NEXUS_PASSWORD/NEXUS_AUTH. This was not done intentionally, but as a side effect of using those variables during image build time. In 3.x, that has been cleaned up. Now those variables are passed as build arguments to the image build, which means they are no longer accessible as environment variables in the running container. Nexus credentials can and should be accessed from the pipeline context (context.nexusUrl, context.nexusUsername and context.nexusPassword). As a consequence, if a Jenkinsfile relies on the presence of those environment variables without setting them explicitly using withEnv, it will fail to run in 3.x. That said, the Jenkinsfile templates which shipped by default with the quickstarters did not rely on the environment variables - with the exception of fe-ionic which did not set NEXUS_HOST explicitly in the Build stage. Jenkins agent jenkins-agent-python as well as all python related quickstarters (be-python-flask, ds-jupyter-notebook and ds-ml-service) have been upgraded to python 3.8. This is not affecting default provisioned Jenkinsfile for ds-jupyter-notebook nor be-python-flask quickstarters that exist before ODS 3.x. But, ds-ml-service provisoned quickstarters before ODS 3.x need to slightly modify its Jenkinsfile before upgrading to ODS 3.x by just avoiding running any pip install --user (see new Jenkinsfile.template to get a suggested fix, basically using virutalenv; which is the recommended way of working when requiring building python packages). If you provisioned airflow-cluster quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. Therefore, the jenkins-slave-airflow:2.x can be shifted to jenkins-agent-python:3.x when upgrading to ODS 3.x.","title":"Update Guide to version 3.x for OpenDevStack users","component":"opendevstack","version":"5.x","name":"3x","url":"/opendevstack/5.x/update-guides/3x.html","titles":[{"text":"New central ods namespace","hash":"_new_central_ods_namespace","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Jenkins Shared Library changes","hash":"_jenkins_shared_library_changes","id":3},{"text":"Renamed pipelines and stages","hash":"_renamed_pipelines_and_stages","id":4},{"text":"Reduced boilerplate","hash":"_reduced_boilerplate","id":5},{"text":"Changed agent images","hash":"_changed_agent_images","id":6},{"text":"Changed context properties","hash":"_changed_context_properties","id":7},{"text":"Different image tags","hash":"_different_image_tags","id":8},{"text":"Changes to Jenkins agent images","hash":"_changes_to_jenkins_agent_images","id":9},{"text":"General upgrade to Python 3.8","hash":"_general_upgrade_to_python_3_8","id":10},{"text":"Airflow Cluster Jenkins agent no longer supported","hash":"_airflow_cluster_jenkins_agent_no_longer_supported","id":11}]},"216":{"id":216,"text":"Table of Contents Update image tags of Jenkins deployments Jenkins Shared Library What’s new? Required changes to adopt 4.x Notes about quickstarters ds-ml-service quickstarter no longer supported ds-jupyter-notebook renamed to ds-jupyter-lab Learn all about how to update your OpenDevStack based project to ODS 4.x. It is assumed that you are updating from ODS 3.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (4.x), and trigger a deployment. ODS has had support for the OpenShift-specific DeploymentConfig resources (controlled by ReplicationControllers) only so far. Now, Kubernetes-native Deployment resources (controlled by ReplicaSets) can be used as well in the component pipeline. Deployment resources are recommended by OpenShift going forward, see https://docs.openshift.com/container-platform/latest/applications/deployments/what-deployments-are.html. Helm 3 is supported now in the component pipeline. This means that Helm (with plugins helm-diff and helm-secrets) can be used as an alternative to Tailor (OpenShift Templates) to define Kubernetes resources in your repository. Helm has some limitations in OpenShift 3.11, but it is the recommended way forward on OpenShift 4. Tailor will be phased out at some point in the future when OpenShift 3.11 is no longer supported by ODS. If you do not author Kubernetes resources in your repository, now is a great time to start with Helm. If you already define OpenShift Templates in your repository and want to switch to Helm, read the migration guide from Tailor to Helm. All ODS component stages understand the branch/branches options now. Those options allow pipeline authors to control for which branches a specific stage should run. As with the branchToEnvironmentMapping option, three types of branch references are supported: exact match (e.g. master, develop - matching branches named master, develop) prefix match (e.g. release/, 'feature/' - matching branches named release/1, feature/foobar) wildcard match (* - matching all branches) If you use Git submodules in your repository, the submodules will now be checked out by Jenkins. This is done automatically when a .gitmodules file is present. Update @Library('ods-jenkins-shared-library@3.x') _ to @Library('ods-jenkins-shared-library@4.x') _ and point to agent images with the 4.x tag, e.g. change imageStreamTag: 'ods/jenkins-agent-golang:3.x' to imageStreamTag: 'ods/jenkins-agent-golang:4.x'. Application images are built in your -cd project now. Previously they were built in your -dev and *-test project. While the update itself should be completely automatic, there are two consequences: You can delete BuildConfig and ImageStream resources from your OpenShift templates (in fact odsComponentStageBuildOpenShiftImage does not run tailor apply anymore). If you made modifications to a BuildConfig you’ll need to re-apply those changes in your *-cd project once the BuildConfig has been migrated there by a pipeline run. ODS 3.x introduced odsComponentStageImportOpenShiftImageOrElse, which allowed to execute some stages only if a container image could not be imported from another namespace or already existed in the current namespace. In ODS 4.x, the check for existing images is only performed in the *-cd namespace. To reflect this, odsComponentStageImportOpenShiftImageOrElse has been deprecated, and is now aliased to the new method, odsComponentFindOpenShiftImageOrElse. The pipeline option imagePromotionSequences has been removed as it is not applicable anymore. odsComponentStageRolloutOpenShiftDeployment rolls out all deployment resources together now. If you had multiple DeploymentConfig resources previously, you had to target each one by specifying the config option resourceName. This is no longer possible - instead the stage iterates over all DeploymentConfig resources with the component label (app=${projectId}-${componentId}). Changes must be made to pipelines that have multiple deployments, such as components based on the ds-jupyter-notebook and ds-rshiny quickstarter. The auto-cloning feature has been removed. If you used this to create ad-hoc namespaces per Jira issue, this is no longer possible now. Changes must be made if your pipeline configured autoCloneEnvironmentsFromSourceMapping. Please see https://github.com/opendevstack/ods-jenkins-shared-library/issues/374 for more information. Versioned development environments in orchestration pipeline are not created automatically anymore. Note that it is still possible to use separate development environments per version, but the namespaces have to be created manually upfront. Take this into account if your pipeline configures versionedDevEnvs: true. Please see https://github.com/opendevstack/ods-jenkins-shared-library/pull/513 for more information. odsComponentStageRolloutOpenShiftDeployment changed its return type because it now supports Deployment resources, as well as multiple deployment resources. Therefore, it returns a map now, where the keys are /, e.g. Deployment/foo and DeploymentConfig/bar. This only affects pipelines that make use of this return value, such as components based on the ds-ml-service and be-fe-mono-repo-plain quickstarter. If you provisioned ds-ml-service quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. It has been set as deprecated due to being superseded by other OpenSource projects like MLflow and Cloud SaaS solutions. The quickstarter ds-jupyter-lab is the new name for the known ds-jupyter-notebook. Which also comes with the newest JupyterLab version 3.","title":"Update Guide to version 4.x for OpenDevStack users","component":"opendevstack","version":"5.x","name":"4x","url":"/opendevstack/5.x/update-guides/4x.html","titles":[{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":1},{"text":"Jenkins Shared Library","hash":"_jenkins_shared_library","id":2},{"text":"What’s new?","hash":"_whats_new","id":3},{"text":"Deployment resources","hash":"_deployment_resources","id":4},{"text":"Helm","hash":"_helm","id":5},{"text":"branch/branches options for all stages","hash":"_branchbranches_options_for_all_stages","id":6},{"text":"Support of gitmodules","hash":"_support_of_gitmodules","id":7},{"text":"Required changes to adopt 4.x","hash":"_required_changes_to_adopt_4_x","id":8},{"text":"Notes about quickstarters","hash":"_notes_about_quickstarters","id":9},{"text":"ds-ml-service quickstarter no longer supported","hash":"_ds_ml_service_quickstarter_no_longer_supported","id":10},{"text":"ds-jupyter-notebook renamed to ds-jupyter-lab","hash":"_ds_jupyter_notebook_renamed_to_ds_jupyter_lab","id":11}]},"217":{"id":217,"text":"This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: [ 'master': 'dev', // 'release/': 'test' ] ) { context -> odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage } odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) } odsComponentStageRolloutOpenShiftDeployment(context) } The version in @Library can be any Git revision, such as a branch (e.g. master or 2.x), a tag (e.g. v2.0) or even a specific commit. There are many built-in stages like odsComponentStageScanWithSonar that you can use, please see Stages for more details. odsComponentPipeline can be customized by passing configuration options like this: odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', dockerDir: 'foo' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. notifyNotGreen Whether to send notifications if the build is not successful. Enabled by default. emailextRecipients Notify to this list of emails when notifyNotGreen is enabled. It is empty by default. branchToEnvironmentMapping Define which branches are deployed to which environments, see Git Workflow / Branch to Environment Mapping projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. environmentLimit Number of environments to allow when auto-cloning environments. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. sonarQubeBranch Please use option branch on odsComponentStageScanWithSonar. failOnSnykScanVulnerabilities Deprecated in 3.x! Please use option failOnVulnerabilities on odsComponentStageScanWithSnyk. openshiftBuildTimeout Deprecated in 3.x! Please use option buildTimeoutMinutes on odsComponentStageBuildOpenShiftImage. openshiftRolloutTimeout Deprecated in 3.x! Please use option deployTimeoutMinutes on odsComponentStageRolloutOpenShiftDeployment. testResults Configurable location for xunit test results, in case the build does not put them into build/test-results/test. commitGitWorkingTree Defaulting to false, if set to true, any changes in the working directory added with git add will be committed to the current branch and pushed. When you write custom stages inside the closure passed to odsComponentPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsComponentPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsComponentPipeline starts. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. nexusUrl Nexus URL - value taken from NEXUS_URL. If NEXUS_URL is not present, it will default to NEXUS_HOST (which also includes the scheme). nexusHost is an alias for nexusUrl. nexusUsername Nexus username. nexusPassword Nexus password. nexusUrlWithBasicAuth Nexus URL, including username and password as BasicAuth. nexusHostWithBasicAuth is an alias for nexusUrlWithBasicAuth. sonarQubeEdition Edition of SonarQube in use, determined by SONAR_EDITION (defaults to community). environment The environment which was chosen as the deployment target, e.g. dev. targetProject Target project, based on the environment. E.g. foo-dev. cdProject CD project. E.g. foo-cd. groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. selector Selector common to all resources of component, defaults to app=${projectId}-${componentID} (e.g. app=foo-be-auth). gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. shortGitCommit Short Git commit SHA (first 8 chars) to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message (sanitized). gitCommitRawMessage Git commit message (raw). gitCommitTime Git commit time in RFC 3399. issueId Jira issue ID if any present in either commit message or branch name (e.g. 123 from commit message FOO-123: Bar or branch feature/FOO-123-bar). If the issue ID is present in both, the branch name has precedence. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the pipeline according to your needs by configuring the pipeline option branchToEnvironmentMapping. The setting could look like this: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'hotfix/': 'hotfix', '*': 'review' ] There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OpenShift. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OpenShift. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsComponentPipeline( branchToEnvironmentMapping: [:], podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if Bitbucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate By default, the component pipeline uses existing OpenShift resources, and just creates new images / deployments related to them. However, it is possible to control all OpenShift resources in code, following the infrastructure-as-code approach. This can be done by defining the resources as OpenShift templates in the directory openshift of the repository, which will then get applied by Tailor when running the pipeline. The advantage of this approach: All changes to OpenShift resources are traceble: who did the change and when? Moving your application between OpenShift projects or even clusters is trivial Changes to your application code that require a change in configuration (e.g. a new environment variable) as well can be done together in one commit. If you have an existing component for which you want to enable this feature, you simply need to run: mkdir -p openshift tailor -n foo-dev export -l app=foo-bar > openshift/template.yml Commit the result and the component pipeline should show in the ouput whether there has been drift and how it was reconciled. When using this approach, you need to keep a few things in mind: Any changes done in the OpenShift web console will effectively be reverted with each deploy. When you store templates in code, all changes must be applied to them. You can always preview the changes that will happen by running tailor diff from your local machine. DeploymentConfig resources allow to specify config and image triggers (and ODS configures them by default like this). When deploying via Tailor, it is recommended to remove the image trigger, otherwise you might trigger two deployments: one when config (such as an environment variable) changes, and one when the image changes. When you remove the image trigger, it is crucial to add the internal registry to the image field, and to configure imagePullPolicy: Always for the container (otherwise you might roll out old images). If you want to use encrypted secrets with Tailor, you have to create a keypair for Jenkins so that the pipeline can use it to decrypt the parameters. The easiest way to do this is to create an OpenShift secret named tailor-private-key and sync it with Jenkins as a credential. Example: tailor secrets generate-key jenkins@example.com oc -n foo-cd create secret generic tailor-private-key --from-file=ssh-privatekey=private.key oc -n foo-cd label secret tailor-private-key credential.sync.jenkins.openshift.io=true Controlling your OpenShift resources in source code enables a lot of other use cases as well. For example, you might want to preview changes to a component before merging the source code. By using Tailor to deploy your templates, you can create multiple running components from one repository, e.g. one per feature branch. Following are some steps how to achieve this: First, add 'feature/': 'dev' to the branchToEnvironmentMapping. Then, create new variables in the pipeline block: def componentSuffix = context.issueId ? \"-${context.issueId}\" : '' def suffixedComponent = context.componentId + componentSuffix With this in place, you can adapt the rollout stage: odsComponentStageRolloutOpenShiftDeployment( context, [ tailorSelector: \"app=${context.projectId}-${suffixedComponent}\", tailorParams: [\"COMPONENT_SUFFIX=${componentSuffix}\"] ] ) And finally, in your openshift/template.yml, you need to add the COMPONENT_SUFFIX parameter and append ${COMPONENT_SUFFIX} everywhere the component ID is used in deployment relevant resources (such as Service, DeploymentConfig, Route). That’s all you need to have automatic previews! You might want to clean up when the code is merged, which can be achieved with something like this: stage('Cleanup preview resources') { if (context.environment != 'dev') { echo \"Not performing cleanup outside dev environment\"; return } def mergedIssueId = org.ods.services.GitService.mergedIssueId(context.projectId, context.repoName, context.gitCommitRawMessage) if (mergedIssueId) { echo \"Perform cleanup of suffix '-${mergedIssueId}'\" sh(\"oc -n ${context.targetProject} delete all -l app=${context.projectId}-${context.componentId}-${mergedIssueId}\") } else { echo \"Nothing to cleanup\" } } The shared library already sets the build status of the built commit. It also provides convenience methods on BitbucketService to interact with pull requests: String createPullRequest(String repo, String fromRef, String toRef, String title, String description, List reviewers) creates a pull request in repo from branch fromRef to toRef. reviewers is a list of bitbucket user names. List getDefaultReviewers(String repo) returns a list of bitbucket user names (not display names) that are listed as the default reviewers of the given repo. String getDefaultReviewerConditions(String repo) returns all default reviewer conditions of the given repo, which can be parsed using readJSON. String getPullRequests(String repo, String state = 'OPEN') returns all open pull requests, which can be parsed using readJSON. Map findPullRequest(String repo, String branch, String state = 'OPEN') tries to find a pull request for the given branch, and returns a map with its ID and target branch. void postComment(String repo, int pullRequestId, String comment) allows to add comment to the PR identified by pullRequestId. To make use of these methods, you need to get an instance of the BitbucketService in your Jenkinsfile like this: Jenkinsfile import org.ods.services.ServiceRegistry import org.ods.services.BitbucketService def sayHello(def context) { stage('Say Hello') { def bitbucketService = ServiceRegistry.instance.get(BitbucketService) bitbucketService.postComment(context.repoName, 1, \"Hello world\") } } If the subject of the built commit message contains [ci skip], [skip ci] or ***NO_CI***, the pipeline is skipped. # skip pipeline (one-line commit) $ git commit -m \"docs: update README [ci skip]\" # run pipeline (multi-line commit) as it is not part of the subject $ git commit -m \"docs: update README - add section installation - [ci skip]\" The Jenkins build status will be set to NOT_BUILT, the Bitbucket build status to SUCCESSFUL (as there is no \"skipped\" state). The pipeline will start to execute initially, but abort before launching any agent nodes or starting any of the stages defined in the Jenkinsfile. Each built-in stage (like odsComponentStageScanWithSonar) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsComponentStageScanWithSonar(context, [branch: 'production']) Checks if an image for the current commit exists already, otherwise executes the given closure. Example: odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage to build your application package } odsComponentStageBuildOpenShiftImage(context) } The step can be customized using the options resourceName and imageTag. Using this step in your Jenkinsfile allows you to avoid building a container image for the same Git commit multiple times, reducing build times and increasing reliability as you can promote the exact same image from one environment to another. Keep in mind that image lookup works by finding an image tagged with the current Git commit. If you merge a branch into another using a merge commit, the current Git commit SHA will differ from the previously built image tag, even if the actual contents of the repository are the same. To ensure image importing kicks in, use the --ff-only option on git merge (this can also be enabled for pull requests in Bitbucket under \"Merge strategies\"). There are a few consequences when doing so, which should be kept in mind: No merge commit is created, which has the downside that you do not see when a PR was merged, and that the merge commit is a convenient way to find the associated PR. Further, if the latest commit on a branch which you want to merge contains [ci skip], beware that the build on the target branch will also be skipped. That siad, having no merge commit has the upside that your Git history is not polluted by merge commits. Enforcing a fast-forward merge prevents you from merging a branch which is not up-to-date with the target branch. This has the downside that before merging, you may need to rebase your branch or merge the target branch into your branch if someone else updated the target branch in the meantime. While this may cause extra work, it has the upside that you cannot accidentally break the target branch (e.g. tests on your branch may work based on the outdated target branch, but fail after the merge). In summary, using git merge --ff-only provides safety, a clean history and allows to promote the exact same image between environments. The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the sonar-project.properties file in the repository being built. If your SonarQube server edition allows to scan multiple branches (any commercial edition does), then this stage will automatically decorate pull requests in Bitbucket with feedback from SonarQube (if the PR already exists at the time of the Jenkins pipeline run). In debug mode, the sonar-scanner binary is started with the -X flag. If no sonar.projectVersion is specified in sonar-project.properties, it is set to the shortened Git SHA. Option Description analyzePullRequests boolean Whether to analyze pull requests and decorate them in Bitbucket. Turned on by default, however a scan is only performed if the branch property allows it. branch String Branch to scan. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to scan. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and \\ all branches (). Defaults to master for the community edition of SonarQube, and for all other editions (which are capable of handling multiple branches). longLivedBranches List Branch(es) for which no PR analysis should be performed. If not set, it will be extracted from branchToEnvironmentMapping of the context. requireQualityGatePass boolean Whether to fail the build if the quality gate defined in the SonarQube project is not reached. Defaults to false. resourceName String Name of BuildConfig/ImageStream of the image that we want to scan (defaults to context.componentId). BuildOpenShiftImageStage puts the imageRef into a map with the resourceName as key. In order to be able to receive the imageRef for scanning, the resourceName needs to be the same as in BuildOpenShiftImageStage. The \"Aqua Security Scan\" stage scans an image that was previously built in that same pipeline run. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan result on the Aqua platform. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. In case the Aqua scan detects remotely exploitable cirtical vulnerabilities with solutions the build fails until the solution is implemented. To get started, make sure you have a ConfigMap in OpenDevStack project namespace (usually ods) in OpenShift that has these fields: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: registry: Refers to a name for the image registry given in the Aqua platform by an Aqua platform admin. secretName: Name of a Secret that contains the credentials of the Aqua platform user that is used for executing the scan. That user needs to have scanner rights. This field is optional, if the property doesn’t exists the system will use the credential 'cd-user-with-password'. url: Base URL of the Aqua platform (including scheme). enabled: If true, the scan always occur in all projects. False to disable the scan. nexusRepository: Name of the repository in Nexus instance to store the results of analysis in HTML format. alertEmails: Optional field. It contains the emails splitted by ',' to send error notifications regarding with Aqua analysis (misconfigurations, etc…​). The mail server must be configured in Jenkins to send the emails. Is possible to disable the analysis at project level. for that is necessary to add in the ConfigMap new properties e.g. like this: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: project.key1.enabled: project.key2.enabled: project.key1.enabled: Property to indicate that key1 (being key1 the key of the project) has the aqua analysis disabled. project.key2.enabled: The same but for key2 project. The \"Trivy Security Scan\" stage scans the filesystem of the cloned repository using Trivy and generates a SBOM report, with CycloneDX format by default. Check Trivy supported formats here. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan report stored in Nexus. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. To get started, edit your Jenkinsfile and add the Trivy stage: ) { context -> ... odsComponentStageScanWithTrivy(context) ... } Option Description additionalFlags List Additional flags for the Trivy CLI. Please refer to the official Trivy CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--debug', '--timeout=10m'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). format String Set the format for the generated report. Defaults to cyclonedx. nexusDataBaseRepository String Name of the Nexus repository used to proxy the location of the database of vulnerabilities located in GitHub. Defaults to docker-group-ods. nexusReportRepository String Name of the Nexus repository where the scan report will be stored. Defaults to leva-documentation. pkgType String Comma-separated list of vulnerability types to scan. Defaults to os,library. reportFile String Name of the file that will be archived in Jenkins and uploaded in Nexus. Defaults to trivy-sbom.json. resourceName String Name of component that we want to scan. Defaults to context.componentId. scanners String Comma-separated list of what security issues to detect. Defaults to vuln,config,secret,license. The \"Snyk Security Scan\" stage performs two tasks: It uploads your 3rd party dependencies including their licenses for monitoring. Snyk will then notify developers about new vulnerabilities per email once they are reported to the Snyk Vulnerability Database. It analyses your 3rd party dependencies including their licenses and breaks the build if vulnerable versions are found. To get started, setup an organisation in snyk.io with exactly the same name as your ODS project name. Under \"Settings\", create a service account for this organisation and make a note of the displayed token. Edit your Jenkinsfile and add the Snyk stage: ) { context -> ... odsComponentStageScanWithSnyk(context, [snykAuthenticationCode: ]) ... } It is recommended to read your authentication token dynamically, e.g. from an environment variable or a credential in your Jenkins master. Option Description additionalFlags List Additional flags for the Snyk CLI. Please refer to the official Snyk CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--all-sub-projects', '--show-vulnerable-paths=all'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildFile String Build file from which to gather dependency information. Defaults to build.gradle. failOnVulnerabilities boolean Whether to fail the build when vulnerabilities are found. Defaults to true. organisation String Name of the Snyk organisation. Default to context.projectId. projectName String Name of the Snyk project name. Default to context.componentId. severityThreshold String Severity threshold for failing. If any found vulnerability has a severity equal or higher to the threshold, the snyk test will return with a failure status. Possible values are low, medium, high. Defaults to low. snykAuthenticationCode String Required! Authentication token of a service account within your organisation. Triggers (and follows) a build in the BuildConfig related to the repository being built. The resulting image is tagged with context.shortGitCommit. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildArgs Map Pass build arguments to the image build process. buildTimeoutMinutes Integer Timeout of build (defaults to 15 minutes). buildTimeoutRetries Integer Adjust retries to wait for the build pod status (defaults to 5). dockerDir String Docker context directory (defaults to docker). extensionImageLabels Map Extra image labels added into imageLabels imageLabels Map Pass labels which should be added on the image. Each label will be prefixed with ext.. imageTag String Image tag to apply (defaults to context.shortGitCommit). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). Imports an image from another namespace. By default, the source image is identified using the commit which triggered the pipeline run. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). imagePullerSecret String Name of image-puller secret (optional, used when pulling images from an external source cluster). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). sourceProject String OpenShift project from which to import the image identified by resourceName. sourceTag String Image tag to look for in the sourceProject (defaults to context.shortGitCommit). targetTag String Image tag to apply to the imported image in the target project (defaults to sourceTag). Rolls out the current resources as defined in the component. Without any configuration the stage tries to guess what a user expects. If the component contains a directory name chart, a Helm deployment is assumed. If the component contains a directory name openshift, a Tailor deployment is assumed. If neither exists a Tailor deployment is assumed. Triggers a release or update of an release with Helm. The stage will use the helm command to trigger the release. The command will be executed in the directory referenced by chartDir. If the directory does not exist, the stage will fail. The images used in the deployment will not be tagged or otherwise modified. HELM_DIFF_IGNORE_UNKNOWN_FLAGS=true helm -n play-dev secrets diff upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=example-dev \\ --set imageTag=deadbeef69cafebabe \\ --no-color --three-way-merge --normalize-manifests \\ example-release . || true # run the upgrade helm -n play-dev secrets upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=play-dev \\ --set imageTag=deadbeef69cafebabe \\ example-release . Triggers (and follows) a rollout of the DeploymentConfig related to the repository being built. It achieves this by tagging the image built in odsComponentStageBuildOpenShiftImage with latest. This might already trigger a rollout based on an existing ImageTrigger. If none is set, the stage will start a manual rollout. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In this case, it is recommended to remove any image triggers to avoid duplicate rollouts (one when configuration changes due to a config trigger and one when the image is tagged to latest). In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). chartDir String Directory of Helm chart (defaults to chart). deployTimeoutMinutes Integer Adjust timeout of rollout (defaults to 5 minutes). Caution: This needs to be aligned with the deployment strategy timeout (timeoutSeconds) and the readiness probe timeouts (initialDelaySeconds + failureThreshold * periodSeconds). deployTimeoutRetries Integer Adjust retries to wait for the pod during a rollout (defaults to 5). helmAdditionalFlags List List of additional flags to be passed verbatim to to helm upgrade (empty by default). Only relevant if the directory referenced by chartDir exists. helmDefaultFlags List List of default flags to be passed verbatim to to helm upgrade (defaults to ['--install', '--atomic']). Typically these should not be modified - if you want to pass more flags, use helmAdditionalFlags instead. Only relevant if the directory referenced by chartDir exists. helmDiff boolean Whether to show diff explaining changes to the release before running helm upgrade (true by default). Only relevant if the directory referenced by chartDir exists. helmEnvBasedValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. These must contain a suffix called '.env.yml' - which will be replaced during rollout and deployment, and then added to helmValueFiles Passing a string literal of 'values.env.yaml' will be expanded to their respective environments. For example: 'values.env.yaml' will become 'values.dev.yaml', 'values.test.yaml' or 'values.prod.yaml'. That means creating the usual files that are named after their respective environment are parsed as usual. helmPrivateKeyCredentialsId String Credentials name of the private key used by helm-secrets (defaults to ${context.cdProject}-helm-private-key). The fingerprint must match the one specified in .sops.yaml. Only relevant if the directory referenced by chartDir exists. helmReleaseName String Name of the Helm release (defaults to context.componentId). Change this value if you want to install separate instances of the Helm chart in the same namespace. In that case, make sure to use {{ .Release.Name }} in resource names to avoid conflicts. Only relevant if the directory referenced by chartDir exists. helmValues Map Key/value pairs to pass as values (by default, the key imageTag is set to the config option imageTag). Only relevant if the directory referenced by chartDir exists. helmValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. imageTag String Image tag on which to apply the latest tag (defaults to context.shortGitCommit). openshiftDir String Directory with OpenShift templates (defaults to openshift). selector String Selector scope used to determine which resources are part of a component (defaults to context.selector). tailorExclude String Resource kind exclusion used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile String Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorParams List Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve List Paths to preserve in the live configuration (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPrivateKeyCredentialsId String Credentials name of the private key used by Tailor (defaults to ${context.cdProject}-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector String Selector scope used by Tailor (defaults to config option selector). Only relevant if the directory referenced by openshiftDir exists. tailorVerify boolean Whether Tailor verifies the live configuration against the desired state after application (defaults to true). Only relevant if the directory referenced by openshiftDir exists. When tailor does the rollout, all the created or updated OpenShift resources are automatically labeled to ease their management. This is in contrast to helm rollouts which rely on the chart providing the desired labels. Add labels either via the chart directly or via supplying them in the values or values files. Detailed information about the labelling can be found here. Triggers the upload of an artifact to Nexus. Implementation is based on https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api Option Description artifactId String For repositoryType=maven2: default is context.componentId branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). distributionFile String Filename. Defaults to ${context.componentId}-${context.tagversion}.tar.gz groupId String For repositoryType=maven2: default is the groupId on project level, or in case not set at all org.opendevstack.${context.projectId} repository String Name of the Nexus repository. Defaults to candidates. repositoryType String Type of the Nexus repository. Defaults to maven2. targetDirectory String For repositoryType=raw: default is context.projectId version String For repositoryType=maven2: default is context.tagversion Copies a source image into the project. This is useful to get images into the OpenShift registry so that release manager will accept all images. The primary intention is for helm charts so that external images can be imported. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). sourceCredential String sourceCredential is the token to use, if any, to access the source registry sourceImageUrlIncludingRegistry String Source image to import This needs to be in the following format: [REGISTRY/]REPO/IMAGE[:TAG] tagIntoTargetEnv Boolean true will tag the image from the -cd namespace into the targetEnvironment that the pipeline is running for verifyTLS Boolean verifyTLS allows the stage to ignore certificate validation errors. The default is to verify certificate paths","title":"Component Pipeline","component":"opendevstack","version":"5.x","name":"component-pipeline","url":"/opendevstack/5.x/jenkins-shared-library/component-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Git Workflow / Branch to Environment Mapping","hash":"_git_workflow_branch_to_environment_mapping","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Advanced","hash":"_advanced","id":6},{"text":"Agent customization","hash":"_agent_customization","id":7},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":8},{"text":"Deploying OpenShift resources from source code","hash":"_deploying_openshift_resources_from_source_code","id":9},{"text":"Interacting with Bitbucket","hash":"_interacting_with_bitbucket","id":10},{"text":"Skipping pipeline runs","hash":"_skipping_pipeline_runs","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"odsComponentFindOpenShiftImageOrElse","hash":"_odscomponentfindopenshiftimageorelse","id":13},{"text":"odsComponentStageScanWithSonar","hash":"_odscomponentstagescanwithsonar","id":14},{"text":"Options","hash":"_options","id":15},{"text":"odsComponentStageScanWithAqua","hash":"_odscomponentstagescanwithaqua","id":16},{"text":"odsComponentStageScanWithTrivy","hash":"_odscomponentstagescanwithtrivy","id":17},{"text":"Options","hash":"_options_2","id":18},{"text":"odsComponentStageScanWithSnyk","hash":"_odscomponentstagescanwithsnyk","id":19},{"text":"Options","hash":"_options_3","id":20},{"text":"odsComponentStageBuildOpenShiftImage","hash":"_odscomponentstagebuildopenshiftimage","id":21},{"text":"Options","hash":"_options_4","id":22},{"text":"odsComponentStageImportOpenShiftImage","hash":"_odscomponentstageimportopenshiftimage","id":23},{"text":"Options","hash":"_options_5","id":24},{"text":"odsComponentStageRolloutOpenShiftDeployment","hash":"_odscomponentstagerolloutopenshiftdeployment","id":25},{"text":"Helm","hash":"_helm","id":26},{"text":"Tailor","hash":"_tailor","id":27},{"text":"Options","hash":"_options_6","id":28},{"text":"Notable Differences between tailor and helm deployments","hash":"_notable_differences_between_tailor_and_helm_deployments","id":29},{"text":"odsComponentStageUploadToNexus","hash":"_odscomponentstageuploadtonexus","id":30},{"text":"Options","hash":"_options_7","id":31},{"text":"odsComponentStageCopyImage","hash":"_odscomponentstagecopyimage","id":32},{"text":"Options","hash":"_options_8","id":33}]},"218":{"id":218,"text":"OpenDevStack provides a Jenkins Shared Library which offers three pipelines: A pipeline to build components, odsComponentPipeline. This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. As a user, you will mostly interface with this pipeline. A pipeline to orchestrate releases with multiple components, odsOrchestrationPipeline. It supports the orchestration of multiple repositories into a live application using the Release Manager quickstarter. A pipeline to provision quickstarters, odsQuickstarterPipeline. This pipeline is useful for quickstarter authors. The implementation was originally based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/jenkins-shared-library/index.html","titles":[{"text":"Background","hash":"_background","id":1}]},"219":{"id":219,"text":"When a rollout happens via tailor there are labels that are added regardless of whether they are in any template or not. This is in contrast to helm which relies on the charts setting the right labels. This decision avoids an unexpected pause or resume during a rollout. A helm rollout will have only the labels that were specified and OpenDevStack will not try to add, remove or change any labels. If your cluster has operators there could still be some label changes. The shared library automatically labels all OpenShift resources created in order to ease their management. The labels applied are based on the recommendations by: Kubernetes OpenShift Helm Some additional labels, specific to OpenDevStack, are also assigned. The labelling process is automatically applied by both the quickstarter and the component pipelines. The orchestration pipeline does not directly perform any labelling, but the component pipeline will set some label values based on the information provided by the release manager, when available. The labels set are not directly used by OpenDevStack, but are just made available to the users both as information about the resources and as a way to find resources in queries. The recommended labels, when given values according to their intended semantics, can be used by tools that recognise them, including OpenShift and Helm. The values for the labels are set, in decreasing order or priority, from: Values forcibly set by the library, which cannot be customised. Metadata information which can be customised through the metadata.yml file in the component repository. Some labels can get default values when none have been assigned in the previous steps. The labels are also assigned to the template of each Deployment or DeploymentConfig resource. This warrants that any pods created will also be appropriately labeled. Changing the template of a Deployment or DeploymentConfig can trigger a new deployment, if a config-change trigger is in place. A best effort is done to avoid multiple deployments. Note that any paused Deployment or DeploymentConfig will be resumed as part of the rollout stage. This is the list of supported labels: Label Meaning Value Example app.kubernetes.io/name The name of the application name metadata parameter mongodb app.kubernetes.io/instance A unique name identifying the instance of an application Component ID user-db app.kubernetes.io/version The version of the application version metadata parameter 4.0.8 app.kubernetes.io/component The component within the architecture role metadata parameter database app.kubernetes.io/part-of The name of a higher level application this one is part of partOf metadata parameter my-online-shop app.kubernetes.io/managed-by The tool being used to manage the operation of an application Autodetected tailor app.openshift.io/runtime The runtime this application runs on runtime metadata parameter spring-boot app.openshift.io/runtime-version The version of the runtime runtimeVersion metadata parameter 2.1.16.RELEASE helm.sh/chart Helm chart name-version Autodetected chartName-1.0.0 app.opendevstack.org/project Project ID Autodetected my-project app.opendevstack.org/type Type of ODS component type metadata parameter ods-service app.opendevstack.org/system-name The name of the system Autodetected some-system app.opendevstack.org/project-version Version across all components in the project Autodetected 1.0 app.opendevstack.org/work-in-progress Whether this project version is still a work in progress Autodetected true Detailed description of each label and how to customise it, if possible. Please, note that valid label values must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. Most label values will be sanitised before assigning, but it is recommended to specify values following these restrictions. The name of the application. This is the software deployed in this component. There may be other instances of the same software in other components. This label is always assigned and its default value is the component id. This value can be customised by setting the name entry in the metadata.yml file. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This label will not be deleted, if it is already set. A unique name identifying the instance of an application. This label is used when there is more than one instance of the software identified by the app.kubernetes.io/name label. This label is automatically set to the component id and it cannot be customised. This label will only be set if its value differs from the value of app.kubernetes.io/name. Therefore, if the name label is set to its default value (component id), this instance label will not be set. Example: user-db The current version of the application (e.g., a semantic version, revision hash, etc.). This is the version of the software identified by the app.kubernetes.io/name label. This value can be customised by setting the version entry in the metadata.yml file and it has no default value. Example: 4.0.8 This label will not be deleted, if it is already set. The component within the architecture. This is the role this component plays in the architecture. This value can be customised by setting the role entry in the metadata.yml file. A best effort will be made to determine a default value for this: If the quickstarter name starts with be- (but not be-fe-), the default is backend. If the quickstarter name starts with fe-, the default is frontend. If the quickstarter name starts with ds-, the default is subsystem. In any other case, there is no default. This default value can only be determined when provisioning the component for the first time from a given quickstarter. No default value is ever calculated by the component or orchestration pipelines. However, if the default value was set by the quickstarter pipeline, it can be overridden, but not deleted. Example: database Any value can be set, but OpenShift recognises the following values: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. Note that data-science components are assigned the ad-hoc subsystem value by default. This label will not be deleted if it is already set. The name of a higher level application this one is part of. This is used to group components as part of a higher-level application, when suitable. It is not meant to be systematically set to the project id, though it could make sense in some specific cases. Note that there is already an OpenDevStack-specific project label that holds the project id. This label is not compulsory and has no default value. This value can be customised by setting the partOf entry in the metadata.yml file. Example: you are building an online shop, and this component is part of it. You can set app.kubernetes.io/part-of=my-online-shop. This label will be removed, if no value is given for it. The tool being used to manage the operation of an application. This is automatically set to tailor (by default) or helm, for components managed with Helm. This value cannot be customised. Example: tailor The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. This value can be customised by setting the runtime entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This label will be removed, if no value is given for it. The version of the runtime. This value can be customised by setting the runtimeVersion entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if app.openshift.io/runtime is not also specified. Example: 2.1.16.RELEASE This label will be removed, if no value is given for it. This should be the chart name and version: {{ .Chart.Name }}-{{ .Chart.Version | replace \"+\" \"_\" }}. This is autodetected and cannot be customised. Only set when the component is managed by Helm. Note that, as per the specification of the label in Helm documentation, the value is always sanitised by replacing the character + with the character _. This is done before the common sanitising performed to all label values. Example: charName-1.0.0 The project id. This is autodetected and cannot be customised. Example: my-project This label will not be deleted if it is already set. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. Generally, only the two first ones create resources in OpenShift. This value can be customised by setting the type entry in the metadata.yml file and it has no default value. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This label will not be deleted if it is already set. This is currently set by the Release Manager to the config item and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. This is currently set by the Release Manager to the change id and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. Boolean value indicating whether the current project version (change id) is still a work in progress. This is currently set by the release manager from the value of the version build parameter and it cannot be customised. This label will not be deleted if it is already set.","title":"OpenShift resource labelling with tailor","component":"opendevstack","version":"5.x","name":"labelling","url":"/opendevstack/5.x/jenkins-shared-library/labelling.html","titles":[{"text":"Overview of tailor labels","hash":"_overview_of_tailor_labels","id":1},{"text":"Usage","hash":"_usage","id":2},{"text":"Detailed description","hash":"_detailed_description","id":3},{"text":"app.kubernetes.io/name","hash":"_app_kubernetes_ioname","id":4},{"text":"app.kubernetes.io/instance","hash":"_app_kubernetes_ioinstance","id":5},{"text":"app.kubernetes.io/version","hash":"_app_kubernetes_ioversion","id":6},{"text":"app.kubernetes.io/component","hash":"_app_kubernetes_iocomponent","id":7},{"text":"app.kubernetes.io/part-of","hash":"_app_kubernetes_iopart_of","id":8},{"text":"app.kubernetes.io/managed-by","hash":"_app_kubernetes_iomanaged_by","id":9},{"text":"app.openshift.io/runtime","hash":"_app_openshift_ioruntime","id":10},{"text":"app.openshift.io/runtime-version","hash":"_app_openshift_ioruntime_version","id":11},{"text":"helm.sh/chart","hash":"_helm_shchart","id":12},{"text":"app.opendevstack.org/project","hash":"_app_opendevstack_orgproject","id":13},{"text":"app.opendevstack.org/type","hash":"_app_opendevstack_orgtype","id":14},{"text":"app.opendevstack.org/system-name","hash":"_app_opendevstack_orgsystem_name","id":15},{"text":"app.opendevstack.org/project-version","hash":"_app_opendevstack_orgproject_version","id":16},{"text":"app.opendevstack.org/work-in-progress","hash":"_app_opendevstack_orgwork_in_progress","id":17}]},"220":{"id":220,"text":"Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@4.x') _ odsOrchestrationPipeline( debug: true, odsImageTag: '4.x' ) The release manager quickstarter comes with a Jenkinsfile that is already setup like this. The library automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside a release manager component’s metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-infra, ods-service, ods-saas-service, ods-test and ods-library. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. If you use this type ODS expects to find JUnit XML test results. If you do not have any test results the pipeline will fail. If you are deploying something where JUnit XML test results are not available consider using Repository Type: ods-service. This type designates ODS components designed for consuming on-prem or cloud services of arbitrary type using infrastructure as code. Such components are based on quickstarters whose names start with inf-. This type designates ODS components designed for documenting vendor-provided SaaS services. This type designates ODS components designed for running services of arbitrary type. Examples include repositories based on the airflow-cluster quickstarter. This type designates ODS components designed for running automated tests against a live application. Such components are based on quickstarters whose names start with e2e-. This type designates ODS components designed for library components. Such components are only build in dev (WIP and assemble mode), and are needed for other components to be built. The library will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, our library automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. By default the shared library will rebuild all type ods components, no matter which ones changed since the last release. In order to build only the components whose source code changed (partial rebuilding as we will call it from now on), the following needs to be configured in metadata.yml allowPartialRebuild : true If one repository should always be rebuilt, even if partial rebuild is configured on root level, forceRebuild : true can be set at repository level, e.g. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B forceRebuild : true It is important to highlight that, despite having configured partial rebuild, the orchestration pipeline will still deploy all the components (both those which changed and which did not) to the target environment. By default the shared library will always pull the agent image from the internal docker repository. Depending on the cluster node setup, this may decrease execution performance. In order to re-use loaded images, a knob in the Jenkinsfile configuration of the stage odsOrchestrationPipeline can be turned on: alwaysPullImage: true By default the orchestration pipeline will create a pod based on the jenkins-base-agent image to do much of its work. In seldom cases, ususally with a lot of repositories, one may hit an out of memory error on the pod named 'mro-XX'. In this case the below memory limit should be adjusted (defaulting to '1Gi') mroAgentMemoryLimit = \"1Gi\" The library automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process by the release manager component. Note: when you configure a Jira service in the release manager component’s metadata.yml, our library expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the library will fall back to the document chapter templates located in your release manager component’s docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. The library supports the activation of various capabilities through the capabilities: field in metadata.yml. capabilities: - Zephyr The Zephyr for Jira capability currently supports: Reporting the result of a test execution to Zephyr for Jira This section will guide you through the \"environment promotion\" feature of the orchestration pipeline. It is assumed have the release manager quickstarter already provisioned and configured in your project. Typically, software is running in different environments, such as one environment for development (DEV), one for quality assurance (QA), and one for production (PROD - this is what end-users of the software consume). Developers work on on the software in the development environment, and once they finish one version (a state) of the software, they bring that version to the QA environment, and once this version is deemed production-ready it is brought to the production environment so that users can consume the new version. The environment promotion feature of the orchestration pipeline automates moving a certain version of the software from one environment to the next. Developers only have to tell the orchestration pipeline if a new version should be built (in DEV) and packaged as an installable \"release bundle\", or if an existing \"release bundle\" should be promoted to either the QA or the production environment. The environment promotion feature is part of the regular orchestration pipeline. Therefore, the promotion is executed from various Jenkins stages. It is not possible to change the process itself, but you can customize how the promotion happens exactly for each of your software components. The components of your software are defined in the repositories section of the metadata.yml file in the release manager repository. In order for the orchestration pipeline to know which state of each component should be promoted, it needs to have some knowledge about how version control in your repositories is organised. Everything depends on a user-supplied build parameter named version to the Jenkins pipeline. Other input parameters do not have any impact on source code lookup. When no version is given, the orchestration pipeline will default to WIP (work in progress). In this scenario, source code for each repository is taken from the configured branch in the metadata.yml file (defaulting to master if no branch is specified there). When a version is given, source code will be taken from a branch release/$VERSION in each repository. When this branch does not exist yet, it will be created (based on the configured branch in metadata.yml) by the pipeline. Subsequent runs with the same version input will take the source code from the created release branch - changes to the configured branch will have no effect on this version! This is by design: it allows some developers to work on new features on the mainline branch (typically master) while others polish the release branch. To this end, the orchestration pipeline allows to enable separate development environments per version to isolate changes in OpenShift resources (see section \"Environments\" further down). The orchestration pipeline applies the same branching rules to the release manager repository - it will create a release branch per version. There is one small caveat here: Jenkins only considers the Jenkinsfile from the branch which is configured for a pipeline. That means that for a pipeline setup against master, Jenkins will always execute the latest Jenkinsfile from master, even when you pass an explicit version to the pipeline. The orchestration pipeline will read e.g. the metadata.yml file from the matching release branch, but the Jenkinsfile itself will be from master. Usually, this should not be an issue as you should not make changes to the Jenkinsfile of the release manager repository anyway. A specific \"release bundle\" is identified by four data points: a version (as outlined above), a changeId, a build number and an environment. The version, changeId and environment are user-supplied input parameters to the release manager pipeline, the build number is calculated automatically. The changeId can be any string meaningful to the user, its value does not have any effect on the operation of the orchestration pipeline. The environment input variable (such as DEV) will be shortened to a single-letter token (e.g. D). Technically speaking, a release bundle is a certain state of the release manager repository and the state of each linked repository at that time. This state is identified by a Git tag. For example, a release bundle with version=1, changeId=1234, buildNumber=0 and environment=DEV is identified by the Git tag v1-1234-0-D. This tag is set on the release manager repository, and all repositories the metadata.yml refers to at this time. The orchestration pipeline assumes three \"conceptual\" environments: DEV, QA and PROD (with short token forms D, Q and P). Those environments are strictly ordered - a state should go from DEV to QA, and then from QA to PROD. To ensure that software progresses along the DEV → QA → PROD path, release bundles from environment DEV can only be installed into QA, and only a release bundle from QA can be installed into PROD. Installing a release bundle from DEV into PROD is not allowed. Each \"conceptual\" environment is mapped to an OpenShift namespace: DEV to $PROJECT-dev (e.g. foo-dev) QA to $PROJECT-test (e.g. foo-test. Note that it is NOT -qa!) PROD to $PROJECT-prod (e.g. foo-prod) Keep in mind that when you create a new project with OpenDevStack, you get three OpenShift namespaces: foo-dev (your DEV environment) foo-test (your QA environment - unfortunately not named -qa for historical reasons) foo-cd (where Jenkins runs and the pipelines such as the orchestration pipeline are executed) So while there is a corresponding namespace for DEV and QA, there is no namespace corresponding to the PROD environment out-of-the-box. This is because it is assumed that your PROD environment is likely on another cluster altogether. To create foo-prod on another cluster, you (or someone with appropriate rights) can run the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-project.sh. Then you need to tell orchestration pipeline two things: where the API of the external cluster is, and the credentials with which to access it. A typical configuration is: id: foo ... repositories: [ ... ] environments: prod: apiUrl: https://api.example.com credentialsId: foo-cd-foo-prod This assumes you have the API token credentials stored in a secret of type kubernetes.io/basic-auth named foo-prod in the foo-cd namespace. This secret needs to be synced with Jenkins (which is achieved by labeling it with credential.sync.jenkins.openshift.io=true). The stored credentials need to belong to a serviceaccount with rights to admin the foo-prod namespace. The easiest way to setup all of this is by running the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-sa-secret.sh, which makes use of the output of the create-target-project.sh ran earlier. It is also possible to have the PROD environment on the same cluster, then you simply create a foo-prod namespace next to foo-dev and foo-test, and allow the foo-cd:jenkins account to admin that project. In that case, you do not need to configure anything in metadata.yml as the default configuration assumes the same cluster. The opposite is also possible: you can configure the QA environment to be on a different cluster than the DEV environment - simply follow the instructions above to create a foo-test namespace. As mentioned in the \"Source Code Organisation\" section, the orchestration pipeline allows to enable separate development environments to isolate different versions. When this mode is enabled, pipeline runs with version=WIP will deploy into the $PROJECT-dev as usual, but pipeline runs with version=X will deploy into $PROJECT-dev-X. The $PROJECT-dev-X environment has to be created beforehand (e.g. by cloning $PROJECT-dev with its serviceaccounts and rolebindings). To enable this feature, set versionedDevEnvs to true in the config of your Jenkinsfile, like this: def config = [debug: true, odsImageTag: 'x.x', versionedDevEnvs: true] If one of your components take longer than 10 minutes (this is the default value) to be promoted from one environment to another, the Release Manager pipeline will exit due to this timeout. You can increase this timeout by setting the openshiftRolloutTimeoutMinutes per environment in the Release Manager repository in the metadata.yml file. Similarly, the number of retries is configurable with the openshiftRolloutTimeoutRetries property. The following example establishes a timeout of 120 minutes for both qa and prod environments with a total number of 3 retries. ... environments: prod: apiUrl: https://... credentialsId: ... openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 qa: openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 ... Let’s start by assuming you have a project FOO with two components, X and Y. These components are defined under the repositories section in the metadata.yml file of the release manager repository. When you want to create a new release, you start the orchestration pipeline with input parameters - we will use version 1 and change ID 1234 in this example. The environment should be DEV. At the end of the pipeline run, you’ll have a release bundle identified by the tag v1-1234-0-D. This release can later be promoted as-is to QA. Once it is installed there, the same release bundle will be tagged with v1-1234-0-Q which can then be promoted to PROD (where it will be tagged with v1-1234-0-P). To create a release bundle, the orchestration pipeline will first trigger the build of each component. Then, it will export all resources in your OpenShift namespace ($PROJECT-$ENVIRONMENT, here foo-dev) belonging to the component. By convention, this means all resources labeled with app=$PROJECT-$COMPONENT (e.g. app=foo-x). Any resources without such a label will NOT be part of the release bundle. The exported resources are stored in a template.yml file (an OpenShift template) located in the openshift-exported folder within each component repository. Further, the container image SHA of the running pod is retrieved and stored in the file image-sha in the same folder. Once done, the orchestration pipeline will commit the two files, tag the commit with v1-1234-0-D and push to the remote. After this process has been done for all repositories, the same tag is also applied to the release manager repository. At this stage, the \"dev release bundle\" is complete and can be installed into QA. To trigger the installation of an existing release bundle, the user needs to supply a version and changeId which has previously been used to create a release bundle. In our example, supplying version=1, changeId=1234 and environment=QA will promote the release bundle identified by v1-1234-0-D to the QA environment and tag it with v1-1234-0-Q. Now that we have a \"QA release bundle\", we can promote it to PROD by supplying version=1, changeId=1234 and environment=PROD. As outlined above, a release bundle is essentially a state of all involved Git repositories. Each component repository contains two artifacts: a container image SHA OpenShift resource configuration (expressed in an OpenShift template) You cannot modify the image SHA (it is the result of what the component pipeline builds), but you can influence the OpenShift template. One reason to do so is that e.g. routes or ConfigMap values will need to differ between environments, and you need to tell the orchestration pipeline to parametrize the templates, and to supply the right values when the templates are applied in the target environment. When the orchestration pipeline exports configuration, it has no way to tell which values should actually be parameters. For example, you might have a route x.foo-dev.dev-cluster.com in DEV, and want this to be x.foo-test.dev-cluster.com in QA and x.foo-prod.prod-cluster.com in PROD. In the exported template, the value x.foo-dev.dev-cluster.com will be hardcoded. To fix this, you can create three files in the release manager repository, dev.env, qa.env and prod.env. These files may contain PARAM=value lines, like this: dev.env X_ROUTE=x.foo-dev.dev-cluster.com qa.env X_ROUTE=x.foo-test.dev-cluster.com prod.env X_ROUTE=x.foo-prod.prod-cluster.com All three files need to list the exact same parameters - otherwise applying the templates will fail. Once those param files are present, the orchestration pipeline will pick them up automatically. When you create a release bundle (in DEV), the param file is applied \"in reverse\", meaning that any concrete param value (on the right) will be substituted with the param key (on the left) in the template. Later when the template is applied in e.g. QA, the param keys are replaced with the concrete values from qa.env. It is necessary to have all the param files completed before you create a release bundle - if you want to change e.g. the value of a parameter in the prod.env file afterwards, you will need to create a new release bundle (as they are identified by Git tags, which do not move when you make new commits on the release branch). Next to parametrizing templates, you can also adjust how the export is done. As the export is using Tailor, the best way to customize is to supply a Tailorfile in the openshift-exported folder, in which you can define the options you want to set, such as excluding certain labels or resource types, or preserving specific fields in the live configuration. Please see Tailor’s documentation for more information. It is also possible to have different configuration files per environment if you suffix with the $PROJECT, e.g. Tailorfile.foo-dev. If you have component-specific parameters that differ between environments, a lightweight way to add these is via parameter files located in the openshift-exported folder matching the target project such as foo-dev.env, foo-test.env and foo-prod.env. These files are picked up automatically without special setup in a Tailorfile. In the process described above, the OpenShift configuration is exported and stored in the repositories in openshift-exported. This approach is easy to get started with, but it does have limitations: There is no defined state: whatever gets exported is what will be promoted, even if a certain configuration was meant to be only temporary or is specific to e.g. only the DEV environment. There is little traceability: as configuration is done through the OpenShift web interface, it is not known who did the change and when, and no chance for other team members to review that change. The parametrization of the exported template might produce incorrect results as it is just a string search-and-replace operation without further knowledge of the meaning of your configuration values. To overcome these issues, it is possible to author the OpenShift templates yourself instead of exporting them. The fastest way to start with this is by renaming the folder openshift-exported (containing the exported template) to openshift. From this point on, the orchestration pipeline will skip the export, and apply whatever is defined in the openshift folder. If you are new to writing OpenShift templates, please read https://github.com/opendevstack/tailor#template-authoring. When you author templates, you can also store the secrets in the param files GPG encrypted (.env.enc files). To achieve this, you need to create a private/public keypair for Jenkins, store the private key in a secret called tailor-private-key in your foo-cd namespace, and sync it as a Jenkins credentials item. Once the .env.enc files are encrypted against the public key, the orchestration pipeline will automatically use the private key to decrypt the params on-the-fly. Please see Working with Secrets for more information. For versioned, separate DEV environments, pulling images from the foo-cd namespace is not possible (because the foo-cd:jenkins serviceaccount does not have admin rights in foo-cd and therefore can’t grant access to it) Tagging means we are pointing to a concrete SHA of a Git repository. This enforces that no manual editing of exported config can happen between promotion to QA and promotion to PROD, which in effect forces everything to be parameterized properly. JIRA always triggers the master branch of the release manager, which means the Jenkinsfile is always taken from master (and NOT from the correct release branch - only metadata.yml etc. are read from the release branch) There is only one QA namespace, preventing to test multiple releases at the same time. The secret of the serviceaccount in the target cluster is known to the orchestration pipeline (as a Jenkins credential synced from OpenShift), therefore developers with edit/admin rights in the CD namespace have access to that secret Tags could manually be set / moved (this can be prevented in Bitbucket by administrators) Passwords etc. in the OpenShift configuration are stored in clear text in the export (this can be prevented by authoring templates and using a private key for encryption of param files) During export, the templates are parameterized automatically, but this is done using string search-and-replace and unwanted replacements might occur (this can be prevented by authoring the templates manually). By default, SonarQube scans (and reports) are only generated for the master branch of each component. As the orchestration pipeline automatically creates release branches for each version, no scans and reports are created on those. This can be changed by configuring sonarQubeBranch: '*'` in each component’s Jenkinsfile, however keep in mind that quality trends etc. will be mixed up if you use the free version of SonarQube as that version does not have support for multiple branches. An existing QA-tag cannot be deployed again in PROD. This has been intentionally designed that way as any change to PROD needs its unique change ID, which results in a new tag.","title":"Orchestration Pipeline","component":"opendevstack","version":"5.x","name":"orchestration-pipeline","url":"/opendevstack/5.x/jenkins-shared-library/orchestration-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-infra","hash":"_repository_type_ods_infra","id":5},{"text":"Repository Type: ods-saas-service","hash":"_repository_type_ods_saas_service","id":6},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":7},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":8},{"text":"Repository Type: ods-library (EXPERIMENTAL feature)","hash":"_repository_type_ods_library_experimental_feature","id":9},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":10},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":11},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":12},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":13},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":14},{"text":"Partial rebuilding of components","hash":"_partial_rebuilding_of_components","id":15},{"text":"Optimization of runtime performance","hash":"_optimization_of_runtime_performance","id":16},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":17},{"text":"Additional Capabilities","hash":"_additional_capabilities","id":18},{"text":"Zephyr for Jira","hash":"_zephyr_for_jira","id":19},{"text":"Environment Promotion","hash":"_environment_promotion","id":20},{"text":"What is the \"environment promotion\" feature?","hash":"_what_is_the_environment_promotion_feature","id":21},{"text":"Source Code Organisation","hash":"_source_code_organisation","id":22},{"text":"Release bundles","hash":"_release_bundles","id":23},{"text":"Environments","hash":"_environments","id":24},{"text":"Customizing the Release Manager configuration","hash":"_customizing_the_release_manager_configuration","id":25},{"text":"Timeouts and retries","hash":"_timeouts_and_retries","id":26},{"text":"Walkthrough","hash":"_walkthrough","id":27},{"text":"Customizing release bundle creation","hash":"_customizing_release_bundle_creation","id":28},{"text":"Authoring OpenShift configuration","hash":"_authoring_openshift_configuration","id":29},{"text":"Known Limitations","hash":"_known_limitations","id":30}]},"221":{"id":221,"text":"This pipeline allows to have a minimal Jenkinsfile for a quickstarter by providing all language-agnostic provision aspects. The goal is to duplicate as little as possible between quickstarters. This pipeline is NOT for building components. It is only to be used when you are authoring a (new) quickstarter itself. If you are building a component (an application), please refer to the component pipeline. Load the shared library in your Jenkinsfile like this: def odsNamespace = env.ODS_NAMESPACE ?: 'ods' def odsGitRef = env.ODS_GIT_REF ?: 'master' def odsImageTag = env.ODS_IMAGE_TAG ?: 'latest' library(\"ods-jenkins-shared-library@${odsGitRef}\") odsQuickstarterPipeline( imageStreamTag: \"${odsNamespace}/jenkins-agent-golang:${odsImageTag}\", ) { context -> odsQuickstarterStageCopyFiles(context) stage('Write go.mod') { dir(context.targetDir) { sh \"go mod init module example.com/foo/bar\" } } odsQuickstarterStageCreateOpenShiftResources(context) odsQuickstarterStageRenderJenkinsfile(context) odsQuickstarterStageRenderSonarProperties(context) } There are many built-in stages like odsQuickstarterStageCopyFiles that you can use, please see Stages for more details. odsQuickstarterPipeline can be customized by passing configuration options like this: odsQuickstarterPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. When you write custom stages inside the closure passed to odsQuickstarterPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsQuickstarterPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsQuickstarterPipeline starts. cdUserCredentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. packageName Package name, retrieved from PACKAGE_NAME build parameter. group Group, retrieved from GROUP build parameter. odsNamespace Central namespace where images are located, retrieved from ODS_NAMESPACE build parameter. odsImageTag ODS image tag. Retrieved from ODS_IMAGE_TAG build parameter. If not set, defaults to latest. odsGitRef ODS Git ref. Retrieved from ODS_GIT_REF build parameter. If not set, defaults to master. agentImageTag Image tag used for the agent pod, retrieved from odsImageTag unless the AGENT_IMAGE_TAG build parameter is set. sharedLibraryRef Git reference used for the Jenkins shared library, retrieved from odsImageTag unless the SHARED_LIBRARY_REF build parameter is set. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. gitUrlHttp URL of the Git repository to push to. The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsQuickstarterPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each built-in stage (like odsQuickstarterStageCreateOpenShiftResources) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsQuickstarterStageCreateOpenShiftResources( context, [directory: 'common/foobar'] ) Copies files from ${context.sourceDir}/files to ${context.targetDir}. There are no configuration options. Uses a set of OpenShift templates to create resources in OpenShift. The resources are created both in -dev and -test namespace. Tailor is used to apply the templates, and fed with a parameter file if it exists. Available options: Option Description directory Directory in which templates are located, defaults to ${context.sourceDir}/openshift. envFile Parameter file to use, defaults to ${context.sourceDir}/ocp.env selector Label selector to constrain tailor apply to, defaults to app=${context.projectId}-${context.componentId}. All the created OpenShift resources are automatically labeled to ease their management. The quickstarter pipeline does a best effort to assign appropriate labels for a new component, based on the information of the quickstarter. This information can be customised by updating the component metadata. Detailed information about the labelling can be found here. Processes a Jenkinsfile template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId @component_type@ ⇒ context.sourceDir @git_url_http@ ⇒ context.gitUrlHttp @ods_image_tag@ ⇒ context.odsImageTag @ods_git_ref@ ⇒ context.odsGitRef @agent_image_tag@ ⇒ context.agentImageTag @shared_library_ref@ ⇒ context.sharedLibraryRef Available options: Option Description source Jenkinsfile template to use, defaults to Jenkinsfile.template target Jenkinsfile filename, defaults to Jenkinsfile Processes a sonar-project.properties template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId Available options: Option Description source sonar-project.properties template to use, defaults to sonar-project.properties.template target sonar-project.properties filename, defaults to sonar-project.properties Forks a component from ODS Available options: Option Description odsComponent the component from (github) ODS to fork","title":"Quickstarter Pipeline","component":"opendevstack","version":"5.x","name":"quickstarter-pipeline","url":"/opendevstack/5.x/jenkins-shared-library/quickstarter-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Advanced","hash":"_advanced","id":4},{"text":"Agent customization","hash":"_agent_customization","id":5},{"text":"Stages","hash":"_stages","id":6},{"text":"odsQuickstarterStageCopyFiles","hash":"_odsquickstarterstagecopyfiles","id":7},{"text":"odsQuickstarterStageCreateOpenShiftResources","hash":"_odsquickstarterstagecreateopenshiftresources","id":8},{"text":"odsQuickstarterStageRenderJenkinsfile","hash":"_odsquickstarterstagerenderjenkinsfile","id":9},{"text":"odsQuickstarterStageRenderSonarProperties","hash":"_odsquickstarterstagerendersonarproperties","id":10},{"text":"odsQuickstarterStageForkODS","hash":"_odsquickstarterstageforkods","id":11}]},"222":{"id":222,"text":"Table of Contents How to develop and run it locally How to deploy to OpenShift Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Consuming REST APIs via curl Pre Flight Checks Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Jenkins (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 11 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git To run it locally two spring profiles are provided: odsbox and odsbox_quickstarters`. The profile odsbox configures the application to connect to the ODS development environment (ODSBOX). Use this command to start it from the command-line: ./gradlew bootRun --args='--spring.profiles.active=odsbox,odsbox_quickstarters' Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 In order to test your changes in a real environment, you should deploy the provisioning app in OpenShift. To do so, you need to have an existing OpeDevStack project (consisting of -dev, -test and -cd namespaces). If you don’t have one yet, you can create one via the provisioning app in the central namespace. Now you can make use of the ods-provisioning-app quickstarter to set up the Bitbucket repository in your Bitbucket space. You can either register the quickstarter in the provisiong app in the central namespace, and then provision it from there; or use the script in https://github.com/BIX-Digital/ods-contrib/tree/master/quickstart-with-jenkins. Once you have provisioned the quickstarter, the first build will create a container image and place it in the ImageStream, using the commit SHA as image tag. To deploy this image in the central namespace, you have to tag that image into the central namespace. From your local machine, run: oc tag -dev/: ods/ods-provisioning-app: Then, in ods-configuration/ods-core.env, set PROV_APP_FROM_IMAGE to ods/ods-provisioning-app: and run the deployment using: make install-provisioning-app The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js). ODS 3.x contains a new single page app UI (based on Angular) as an experimental feature located in the client folder. In order to use the UI a feature flag frontend.spa.enabled must be set to true in application.proprties. Please refer to client README on how to setup local development for the frontend code. The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Basic Auth authentication is the recommended way to consume REST API. How to enable Basic Auth authentication is explained in Authentication Crowd Configuration. The following sample script could be used to provision a new project, add a quickstarter to a project or remove a project. It uses Basic Auth to authenticate the request. #!/usr/bin/env bash set -eu # Setup these variables # PROVISION_API_HOST=://: # BASIC_AUTH_CREDENTIAL=: # PROVISION_FILE=provision-new-project-payload.json PROV_APP_CONFIG_FILE=\"${PROV_APP_CONFIG_FILE:-prov-app-config.txt}\" if [ -f $PROV_APP_CONFIG_FILE ]; then cat $PROV_APP_CONFIG_FILE source $PROV_APP_CONFIG_FILE else echo \"No config file found, assuming defaults, current dir: $(pwd)\" fi # not set - use post as operation, create new project COMMAND=\"${1:-POST}\" echo echo \"Started provision project script with command (${COMMAND})!\" echo echo \"... encoding basic auth credentials in base64 format\" BASE64_CREDENTIALS=$(echo -n $BASIC_AUTH_CREDENTIAL | base64) echo echo \"... sending request to '\"$PROVISION_API_HOST\"' (output will be saved in file './response.txt' and headers in file './headers.txt')\" echo RESPONSE_FILE=response.txt if [ -f $RESPONSE_FILE ]; then rm -f $RESPONSE_FILE fi if [ ${COMMAND^^} == \"POST\" ] || [ ${COMMAND^^} == \"PUT\" ]; then echo echo \"create or update project - ${COMMAND^^}\" if [ ! -f $PROVISION_FILE ]; then echo \"Input for provision api (${PROVISION_FILE}) does not EXIST, aborting\\ncurrent: $(pwd)\" exit 1 fi echo \"... ${COMMAND} project request payload loaded from '\"$PROVISION_FILE\"'\"´ echo echo \"... displaying payload file content:\" cat $PROVISION_FILE echo http_resp_code=$(curl --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --data @\"$PROVISION_FILE\" \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) elif [ ${COMMAND^^} == \"DELETE\" ] || [ ${COMMAND^^} == \"GET\" ]; then echo \"delete / get project - ${COMMAND^^}\" if [ -z $2 ]; then echo \"Project Key must be passed as second param in case of command == delete or get!!\" exit 1 fi http_resp_code=$(curl -vvv --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project/$2\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) else echo \"ERROR: Command ${COMMAND} not supported, only GET, POST, PUT or DELETE\" exit 1 fi echo \"curl request successful...\" echo echo \"... displaying HTTP response body (content from './response.txt'):\" if [ -f ${RESPONSE_FILE} ]; then cat ${RESPONSE_FILE} else echo \"No request (body) response recorded\" fi echo echo \"... displaying HTTP response code\" echo \"http_resp_code=${http_resp_code}\" echo if [ $http_resp_code != 200 ] then echo \"something went wrong... endpoint responded with error code [HTTP CODE=\"$http_resp_code\"] (expected was 200)\" exit 1 fi echo \"provision project request (${COMMAND}) completed successfully!!!\" The PROVISION_FILE should point to a json file that defines the payload for the provision of a new project. This is an example: { \"projectName\": \"\", \"projectKey\": \"\", \"description\": \"project description\", \"projectType\": \"default\", \"cdUser\": \"project_cd_user\", \"projectAdminUser\": \"\", \"projectAdminGroup\": \"\", \"projectUserGroup\": \"\", \"projectReadonlyGroup\": \"\", \"bugtrackerSpace\": true, \"platformRuntime\": true, \"specialPermissionSet\": true, \"quickstarters\": [] } For the provisioning of a quickstarter set the command from POST to value PUT instead. Following an example of the PROVISION_FILE for quickstarter provisioning: { \"projectKey\":\"\", \"quickstarters\":[{ \"component_type\":\"docker-plain\", \"component_id\":\"be-docker-example\" }] } The provisioning of new project requires the creation of project in different servers (jira, bitbucket, confluence, openshift, etc…​) In case of an exception happens this process will be interrupted. This will leave the provision of a new project as incomplete. To avoid this situation a series of checks called \"Pre Flight Checks\" were implemented. These checks verify that all required conditions are given in the target system (jira, bitbucket, confluence) before provision a new project. Following some samples of response of the provision new project endpoint POST api/v2/project Pre Flight Check failed: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"UNEXISTANT_USER\",\"error-message\":\"user 'cd_user_wrong_cd_user' does not exists in bitbucket!\"}]} Pre Flight Check due an exception: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"EXCEPTION\",\"error-message\":\"Unexpected error when checking precondition for creation of project 'PROJECTNAME'\"}]} Pre Flight Check successfully passed and project was created: HTTP CODE: 200 OK { \"projectName\": \"MYPROJECT\", \"description\": \"My new project\", \"projectKey\": \"MYPROJECT\", ... } Failed Response due to exception after Pre Flight Checks succesfully passed: HTTP CODE: 500 Internal Server Error An error occured while creating project [PROJECTNAME ], reason [component_id 'ods-myproject-component106' is not valid name (only alpha chars are allowed with dashes (-) allowed in between. ] - but all cleaned up! The provision new project endpoint POST api/v2/project accepts a url parameter called onlyCheckPreconditions. By setting this parameter to true (POST api/v2/project?onlyCheckPreconditions=TRUE) only the Pre Flight Checks will be executed. This could be usefull for the development of new Pre Flight Checks or for integration scenarios. In this later case one could imagine to set this parameter to TRUE to verify all preconditions before creating a project. Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API","title":"Provisioning App: Internal architecture / Development","component":"opendevstack","version":"5.x","name":"architecture","url":"/opendevstack/5.x/provisioning-app/architecture.html","titles":[{"text":"How to develop and run it locally","hash":"_how_to_develop_and_run_it_locally","id":1},{"text":"How to deploy to OpenShift","hash":"_how_to_deploy_to_openshift","id":2},{"text":"Frontend Code","hash":"_frontend_code","id":3},{"text":"Backend Code","hash":"_backend_code","id":4},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":5},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":6},{"text":"Consuming REST APIs via curl","hash":"_consuming_rest_apis_via_curl","id":7},{"text":"Pre Flight Checks","hash":"_pre_flight_checks","id":8},{"text":"Response examples:","hash":"_response_examples","id":9},{"text":"Option \"onlyCheckPreconditions=TRUE\":","hash":"_option_onlycheckpreconditionstrue","id":10},{"text":"Link collection","hash":"_link_collection","id":11}]},"223":{"id":223,"text":"Table of Contents Quickstarters Permissions Bitbucket permissions Project/Space types based on templates Custom permissions and group-to-project-role mappings Add Webhook Proxy URL to jira project properties based on project type Error Handling Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Basic Auth authentication Authentication to third party apps via technical users Other configuration FAQ Available quickstarters can be provided in the container via /quickstarters/quickstarters.properties. In the context of OpenShift, this file is supplied by the ConfigMap quickstarters.properties. The quickstarters defined there will be displayed to the users in the UI when they modify an existing project. When the provisioning app is installed for the first time, a default set of quickstarters (from the ods-quickstarters repository) is seeded. As each installation can configure the available quickstarters differently, the quickstarters.properties ConfigMap is not updated automatically when updating ODS. A quickstarter needs to have two mandatory entries: quickstarters.properties jenkinspipeline.quickstarter..desc= jenkinspipeline.quickstarter..repo= For example: quickstarters.properties jenkinspipeline.quickstarter.be-java-springboot.desc=Backend - SpringBoot/Java jenkinspipeline.quickstarter.be-java-springboot.repo=ods-quickstarters This means that in order to provision the quickstarter, the provisioning app will start a Jenkins pipeline based on the Jenkinsfile located in the opendevstack/ods-quickstarters repository, in the folder be-java-springboot. The UI will display the quickstarter as Backend - SpringBoot/Java. Apart from the required properties, there are also optional properties: quickstarters.properties jenkinspipeline.[some-job-name].create-webhook -> whether a default webhook should be created for this repo or not (true by default) jenkinspipeline.[some-job-name].branch -> a branch differing from ods.git-ref property jenkinspipeline.[some-job-name].jenkinsfile -> a path to the Jenkinsfile differing from [some-job-name]/Jenkinsfile When the quickstarter properties are modified, the provisioning app needs to be restarted for the changes to have effect. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three special groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories Moreover, a specific CD user (technical user for the continuous delivery platform) can optionally be specified. The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with the permissions detailed in the section Bitbucket permissions. Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) Furthermore if you need to define default permission for openshift (e.g. to setup membership permission for cluster admins) you can add this to your application properties: jenkinspipeline.create-project.default-project-groups=ADMINGROUP= In case special permissions sets are defined this the default project groups will be appended to the list of permissions sets. Permissions are set both at project and repository levels. Whenever the same user or group is assigned different permissions in the same project or repository, the actual permissions assigned are the higher-level ones. For example, if a group is assigned read-only and R/W permissions in the same project, it will get R/W permissions on it. If a user is assigned both R/W and admin permissions in a repository, it will get admin permissions on it. The mentioned properties in the following subsections have default values specified in the application.properties file. Their values can be overridden in the corresponding config map. Permissions set at project level depend on whether the special permission set has been specified or not. If the special permission set has been specified, these are the permissions set at project level: Type Who? Permission Group ${global.keyuser.role.name} Admin Group admin group Admin Group user group R/W Group readonly group Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that, if a specific CD user has not been specified, it defaults to the value of the bitbucket.technical.user property. If the special permission set has not been specified, these are the default permissions assigned to the project: Type Who? Permission Group ${bitbucket.default.user.group} R/W Group ${idmanager.group.opendevstack-users} Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that no admin permissions are assigned to the project when a special permission set has not been specified. The only project-level administrators are the global Bitbucket administrators, in this case. Repositories belonging to a project inherit the project permissions. Some additional permissions are assigned at repository level. The following tables show the permissions specified at repository level. These are the permissions assigned to the repository when a special permission set has been specified: Type Who? Permission User ${bitbucket.technical.user} R/W These are the permissions assigned to the repository when a special permission set has not been specified: Type Who? Permission Group ${bitbucket.default.admin.group} (default: ${bitbucket.default.user.group}) Admin User ${bitbucket.technical.user} R/W If the bitbucket.default.admin.group property is specified with an empty value, no admin permissions are assigned at repository level. The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, Custom permission configuration makes possible to configure each Project type template with a specific permission-scheme-id on project creation. Any new Jira project of a specific project type will be then set with the same permission-schemed-id. Additionally, mappings of project roles to the special groups (defined above: admin, user and readonly group) have to be configured, so that the special groups are added to the jira project roles of the new project. These capabilities make possible for Jira Admin to define a main permission scheme that will be \"reused\" for every new project. Another big benefit is that release them from the manual task of mapping the special groups to the permission scheme project roles. To configure a project-template-name with a specific permission-schemed-id you need to add these properties to your configuration: jira.project-templates..name=UTest project template jira.project-templates..permission-scheme-id= if the permission-scheme-id is configured you will have to provide group-to-project-role mapping configuration. If a permission-schemd-id is defined, then the following project-to-* properties have to be configured. Otherwise the provisioning app will fail to start. Like the permission-scheme-id the value of these properties has to be in this case an existant project role id in Jira, that you will need to get from your Jira server in advance. jira.project-templates..role-mapping.project-role-for-admin-group= jira.project-templates..role-mapping.project-role-for-user-group= jira.project-templates..role-mapping.project-role-for-readonly-group= Another way to set a permission-scheme-id with the corresponding project-to-role-* mappings is by API call. You can define following properties in the payload of the create project API call: { ... \"specialPermissionSchemeId\": \"\" \"projectRoleForAdminGroup\": \"\", \"projectRoleForUserGroup\": \"\", \"projectRoleForReadonlyGroup\": \"\", ... } A given configuration will be overwritten by these payload properties. You will find more details about the provisioning app REST API in this section: Consuming REST APIs via curl. If no permission-scheme-id with the corresponding project-to-role-* mappings are provided neither by configuration nor in the create project payload, then the default behaviour will be applied, which in this case will create a new permission scheme as explained in the section Permissions. It is possible to configure the Provisioning App to add to jira project the Webhook Proxy URL as project property. Jira provides an REST API for this purpose (Jira Properties API) This functionality can be configured for each project type. To enable this you will need to: Enable this capability for a given project type add the a property like: jira.project.template.add-webhook-proxy-url-as-project-property.=true Define the jira endpoint as template by adding this property: jira.project.template.webhook-proxy-url-endpoint-template.=/api/2/project/%PROJECT_KEY%/properties/WEBHOOK_PROXY.URL These 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Define the jira endpoint payload as template that will be added to the set jira property endpoint call jira.project.template.webhook-proxy-url-payload-template.={\\\"WEBHOOK_PROXY.URL\\\", \\\"%PROPERTY_VALUE%\\\"} For the payload template also these 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false. There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Basic Auth Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence and Bitbucket is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. An example of plain oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link Alternatively if your identity provider is Azure AD, a configuration example is given in application-azure.properties application-azure.properties provision.auth.provider=oauth2 (1) provision.auth.provider.oauth2.user-info-uri=userInfo (2) (3) # Application ID (also called Client ID) spring.security.oauth2.client.registration.azure.client-id=> spring.security.oauth2.client.registration.azure.client-secret= # It's suggested the logged in user should at least belong to one of the below groups # If not, the logged in user will not be able to access any authorization controller rest APIs azure.activedirectory.user-group.allowed-groups=opendevstack-administrators,opendevstack-users (4) azure.activedirectory.environment=global-v2-graph azure.activedirectory.user-group.key=@odata.type azure.activedirectory.user-group.value=#microsoft.graph.group azure.activedirectory.user-group.object-id-key=id azure.activedirectory.tenant-id= (5) oauth2.user.roles.jsonpointerexpression=/claims/roles (6) oauth2.user.use-email-claim-as-username=true (7) (8) idmanager.url=https://login.microsoftonline.com idmanager.realm=${spring.security.oauth2.client.registration.azure.client-id} idmanager.disable-logout-from-idm=true (9) 1 configures oauth2 authentication provider 2 configure user info uri 3 registers in spring security azure oauth2 client id and secret 4 configure allow groups 5 register azure ad tenant 6 the application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 7 configure to use email claim as username 8 configure name of the ProvApp realm 9 instruct ProvApp to not logout from identity management provider This option can be enabled to activate basic auth as additional authentication when using crowd or oauth2 as authentication provider. To enable basic auth this properties needs to be configured: application-azure.properties provision.auth.basic-auth.enabled=true The basic auth authentication needs to connect to an identity manager to authenticate users. Currently only crowd is supported for this purpouse. If you have’ve chosen to use oauth2 as provider you can even enable basic auth to connect to crowd server. For that you will need to add these properties to your configuration: # crowd properties (needed for basic auth) crowd.local.directory=~/dev/temp crowd.application.name= crowd.application.password= crowd.server.url= crowd.cookie.domain= The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence and Bitbucket. The used credentials are read from a pair of properties. For Example, bitbucket.admin_password and bitbucket.admin_user properties are used for Bitbucket, confluence.admin_user and confluence.admin_password are used for Confluence, etc. application-oauth2.properties # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall() To adapt the provisioning app to your infrastructure following properties will help you to enable/disable some adapters/services. To disable the confluence adapter you can add this property to the application properties: adapters.confluence.enabled=false The Openshift Service can be used to verify that a project key does not exist in the cluster before provisioning a project. If you want to enable it, you can add this property to the application properties: services.openshift.enabled=true If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project. What is the default permission schema in Jira? the default permission schema in Jira is named Default Permission Scheme Which role is missing in Jira default permission schema if the project creator cannot access it? The default permission schema named Default Permission Scheme needs the role owner to be added to permission Browser Projects. Otherwise the project creator (role owner) will not be able to access the project.","title":"Provisioning App: Configuration Guide","component":"opendevstack","version":"5.x","name":"configuration","url":"/opendevstack/5.x/provisioning-app/configuration.html","titles":[{"text":"Quickstarters","hash":"_quickstarters","id":1},{"text":"Permissions","hash":"_permissions","id":2},{"text":"Bitbucket permissions","hash":"_bitbucket_permissions","id":3},{"text":"Project level","hash":"_project_level","id":4},{"text":"Repository level","hash":"_repository_level","id":5},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":6},{"text":"Custom permissions and group-to-project-role mappings","hash":"_custom_permissions_and_group_to_project_role_mappings","id":7},{"text":"Project type custom permissions scheme id configuration","hash":"_project_type_custom_permissions_scheme_id_configuration","id":8},{"text":"Project type group-to-project-role mappings","hash":"_project_type_group_to_project_role_mappings","id":9},{"text":"Overwriting custom permissions scheme id and group-to-project-role mappings per API call","hash":"_overwriting_custom_permissions_scheme_id_and_group_to_project_role_mappings_per_api_call","id":10},{"text":"Add Webhook Proxy URL to jira project properties based on project type","hash":"_add_webhook_proxy_url_to_jira_project_properties_based_on_project_type","id":11},{"text":"Error Handling","hash":"_error_handling","id":12},{"text":"Authentication Configuration","hash":"_authentication_configuration","id":13},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":14},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":15},{"text":"Basic Auth authentication","hash":"_basic_auth_authentication","id":16},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":17},{"text":"Other configuration","hash":"_other_configuration","id":18},{"text":"FAQ","hash":"_faq","id":19}]},"224":{"id":224,"text":"This application creates new OpenDevStack projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as Jira, Confluence, Bitbucket and Jenkins. Any user with admin privileges can create new ODS projects through the provisioning application. A new ODS project typically consists of: a Jira Project (name based on project ) a Confluence Space (name based on project ) a Bitbucket project (name based on project ) two Openshift projects named -dev and -test, which are used to run your application. Further, a Jenkins deployment will be created in the -cd project to allow each ODS project full freedom of build management. This deployment is based on a common Jenkins image provided by the central ODS namespace. Open the web GUI of the provisioning app (ask your ODS administrator for the URL). Select your project, then choose a quickstarter. If no framework fits your needs, choose the docker-plain quickstarter, and adjust the repository afterwards as required. After provisioning the quickstarter, you’ll have a new repository in your Bitbucket project with the boilerplate of the component. This repository has a webhook configured which will start a new Jenkins job each time a new commit is pushed. This means the new component will immediately be built and deployed into your -dev project. Why are three OpenShift projects created when I provision a new project? The -dev and -test namespaces are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the Component Pipeline In contrast to this, the -cd namespace hosts a project-specific instance of Jenkins Master and Webhook Proxy. When a build is triggered, builder pods (= deployments of Jenkins agents) are created in this project. This was a cautious design choice to give a project team as much power as possible when it comes to configuration of Jenkins. What permissions are assigned when a new Bitbucket project or repository is created? The assigned permissions are detailed here.","title":"Provisioning Application","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/provisioning-app/index.html","titles":[{"text":"Creating a new project","hash":"_creating_a_new_project","id":1},{"text":"Creating a new component within a project (using a quickstarter)","hash":"_creating_a_new_component_within_a_project_using_a_quickstarter","id":2},{"text":"FAQ","hash":"_faq","id":3}]},"225":{"id":225,"text":"This agent is used to build Go code. The image is built in the global ods project and is named jenkins-agent-golang. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-golang:latest. Go 1.23.0 golangci-lint 1.60.1 Not (yet) Nexus package manager aware and no special HTTP Proxy configuration.","title":"Go Jenkins agent","component":"opendevstack","version":"5.x","name":"golang","url":"/opendevstack/5.x/jenkins-agents/golang.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"226":{"id":226,"text":"This agents are used to deploy (Cloud) resources using terraform code. There are two terraform jenkins agents available: 1. jenkins-agent-terraform (ruby 2.7.5, terraform 1.2.x) - this agent is DEPRECATED and will be removed in the next release. 1. jenkins-agent-terraform-2306 (ruby 3.2.2, terraform 1.4.6, and matching tools) - this is the current active jenkins agent. The images are built in the global ods project and are named jenkins-agent-terraform and jenkins-agent-terraform-2306. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-terraform:latest or ods/jenkins-agent-terraform-2306:latest. support of multiple terraform versions using tfenv integrated test-framework using kitchen-terraform and cinc-auditor n/a","title":"Terraform Jenkins agents","component":"opendevstack","version":"5.x","name":"inf-terraform","url":"/opendevstack/5.x/jenkins-agents/inf-terraform.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"227":{"id":227,"text":"This agent is used to build Java code. The image is built in the global ods project and is named jenkins-agent-jdk. It can be referenced in a Jenkinsfile with ods/jenkins-agent-jdk. Nexus and HTTP proxy configuration for Maven & Gradle This agent provides 3 JDKs: java 11, java 17 (default) and java 21. For backwards compatibility java 11 is still included. Java projects migrating from previous ODS version will require the use of the bash script use-j11.sh to use java 11. A migration to java 17 and java 21 can be done afterwards. To switch the environment to java 11 the script use-j11.sh is provided at the jenkins home folder. To switch the environment to java 17 the script use-j17.sh is provided at the jenkins home folder. To switch the environment to java 21 the script use-j21.sh is provided at the jenkins home folder. Following command shows how the jenkins build script from the springboot quickstarter switches the java version before calling the gradle wrapper: def status = sh(script: \"$HOME/use-j21.sh && ./gradlew clean build --stacktrace --no-daemon && $HOME/use-j17.sh\", returnStatus: true) like this example, you will need to switch back to java 17 after running the gradlew build. This is required because the jdk agent environment still does not support the latest java version. E.g. the sonar scanner is not compatible with the latest java version. Dockerfile.ubi8 installs: - java-21-openjdk-devel - java-17-openjdk-devel - java-11-openjdk-devel n/a","title":"Jdk Jenkins agent","component":"opendevstack","version":"5.x","name":"jdk","url":"/opendevstack/5.x/jenkins-agents/jdk.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Supported Java Versions","hash":"_supported_java_versions","id":3},{"text":"Installed packages","hash":"_installed_packages","id":4},{"text":"Known limitations","hash":"_known_limitations","id":5}]},"228":{"id":228,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs16. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs16. Node.js version 16 reaches end-of-life in 2024-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 16 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs16","url":"/opendevstack/5.x/jenkins-agents/nodejs16.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"229":{"id":229,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs18. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs18. Node.js version 18 reaches end-of-life in 2025-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 18 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs18","url":"/opendevstack/5.x/jenkins-agents/nodejs18.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"230":{"id":230,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs20. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs20. Node.js version 20 reaches end-of-life in 2026-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 20 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs20","url":"/opendevstack/5.x/jenkins-agents/nodejs20.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"231":{"id":231,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs22. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs22. Node.js version 22 reaches end-of-life in 2027-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 22 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs22","url":"/opendevstack/5.x/jenkins-agents/nodejs22.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"232":{"id":232,"text":"This agent is used to build / execute Python code. The image is built in the global ods project and is named jenkins-agent-python. It can be referenced in a Jenkinsfile with ods/jenkins-agent-python. It supports building on Python versions: 3.12 (default), 3.11, 3.9, 3.8 and 3.6. NOTE: Python 3.6 have reached EOL on 2021-12-23. See Python versions for further information. Python pip virtualenv No special HTTP Proxy configuration.","title":"Python Jenkins agent","component":"opendevstack","version":"5.x","name":"python","url":"/opendevstack/5.x/jenkins-agents/python.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"233":{"id":233,"text":"This agent is used to build / execute Rust code and tools. The image is built in the global ods project and is named jenkins-agent-rust. It can be referenced in a Jenkinsfile with ods/jenkins-agent-rust. Minimum Supported Rust Version (MSRV) 1.79. It can build Rust versions 1.79.x or higher. NOTE: Current Rust edition in use is 2021. See Rust Edition Guide for further information. Rust Axum Cargo Nextest LLVM Coverage Generate No special HTTP Proxy configuration.","title":"Rust Jenkins agent","component":"opendevstack","version":"5.x","name":"rust","url":"/opendevstack/5.x/jenkins-agents/rust.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"234":{"id":234,"text":"This agent is used to build Scala code through SBT (Scala build tool). The image is built in the global ods project and is named jenkins-agent-scala. It can be referenced in a Jenkinsfile with ods/jenkins-agent-scala. SBT 1.8.2 HTTP proxy aware Nexus aware This agent provides 1 JDKs: java 11 and java 17 (default). For backwards compatibility java 11 is till included. Java projects migrating from previous ODS version will require the use of the bash script use-j11.sh to use java 11. A migration to java 17 can be done afterwards. To switch the environment to java 11 the script use-j11.sh is provided at the jenkins home folder. To switch the environment to java 17 the script use-j17.sh is provided at the jenkins home folder. Following command shows how the jenkins build script from the scala quickstarter switches the java version before calling the SBT: def status = sh(script: \"$HOME/use-j11.sh && sbt -v clean scalafmtSbtCheck scalafmtCheckAll coverage test coverageReport coverageOff compile:clean copyDockerFiles && $HOME/use-j17.sh\", returnStatus: true) like this example, you will need to switch back to java 17 after running the SBT build. This is required because the scala agent environment still does not support the latest java version. E.g. the sonar scanner is not compatible with the java 11. Dockerfile.ubi8 installs: - java-17-openjdk-devel - java-11-openjdk-devel In case HTTP Proxy config is injected through environment variables (including NO_PROXY), Nexus configuration is disabled because of an SBT bug.","title":"Scala Jenkins agent","component":"opendevstack","version":"5.x","name":"scala","url":"/opendevstack/5.x/jenkins-agents/scala.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Supported Java Versions","hash":"_supported_java_versions","id":3},{"text":"Installed packages","hash":"_installed_packages","id":4},{"text":"Known limitations","hash":"_known_limitations","id":5}]},"235":{"id":235,"text":"This document describes how you can create your own quickstarter. At the same time, you should be able to find all information required to make changes to an existing quickstarter. Technically speaking, a quickstarter is just a Jenkins pipeline that fills an existing repository with files. How this is done, and what exactly is run in the pipeline is up to the quickstarter author. Typically though, the pipeline makes use of the quickstarter pipeline from the Jenkins shared library, which removes the need to write lots of boilerplate such as running a agent pod, cloning sources, copying files and pushing at the end to the component repository. The rest of the guide assumes that you are using this pipeline. As the Jenkins pipeline runs on a Jenkins agent image, you as the author need to pick either an existing agent image (see \"Jenkins agent Images\" in the navigation on the left), or create your own. The only technical requirement is to have a Jenkinsfile, but depending on the purpose of the quickstarter, a quickstarter should provide the following: A Jenkinsfile in the resulting repository. The best way to do this is by placing a Jenkinsfile.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderJenkinsfile. A sonar-project.properties file in the resulting repository. The best way to do this is by placing a sonar-project.properties.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderSonarProperties. Test setup, e.g. a framework such as JUnit. Test results need to be published in JUnit XML reporting file format. The results need to be stored at build/test-results/test or be configured to a different location. Code Coverage: tests should determine code coverage, and report this to SonarQube. Support for Nexus (pulling dependencies from there) HTTP proxy awareness Documentation. Both for the quickstarter itself (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/quickstarters/pages, following the quickstarter template) and any Jenkins agent image (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/jenkins-agents/pages, following the agent image template). It is recommended to set up proper default metadata values in files/metadata.yml. These default values will also be used to label the generated OpenShift resources when provisioning a new component from the quickstarter for the first time. If you write any custom stages in the quickstarter pipeline, you have access to the pipeline context. Usually, quickstarters are triggered through the provisioning app. However, in order to try a new quickstarter, or to try changes to an existing quickstarter which are made in a branch, you can use the quickstart-with-jenkins/run.sh script in the BIX-Digital/ods-contrib repository to provision a quickstarter without registering it with the provisioning app. See its help for usage. It is highly recommended to use the jenkins-agent-base image as a base image. Otherwise it is likely that some features of the shared pipeline don’t work. The jenkins-agent-base image in turn is based on another base image, e.g. provided by RedHat. The easiest way to get started is to look ath other agent images, such as Go and see how that implements its requirements. If you are just building an image for yourself, do the following: Copy the folder from one of the Jenkins agents to your local machine, and adjust as needed. For sure you’ll need to update the Dockerfile. Also, change the names in the ocp-config folder and delete the Tailorfile in there. Note that the BuildConfig points to a repository and a branch. You will need to push your sources to a matching location. Create the OpenShift resources in your *-cd project via Tailor, e.g. tailor -n foo-cd --param REPO_BASE=https://bitbucket.example.com/scm --param ODS_IMAGE_TAG=2.x …​ Start a build in the OpenShift web console. Reference the built image from your Jenkinsfile like this: imageStreamTag: 'foo-cd/jenkins-agent-bar:latest' If you want to contribute your Jenkins agent image to OpenDevStack, make sure to add documentation according to the agent image template.","title":"Authoring Quickstarters","component":"opendevstack","version":"5.x","name":"authoring-quickstarters","url":"/opendevstack/5.x/quickstarters/authoring-quickstarters.html","titles":[{"text":"Creating / Modifying a quickstarter","hash":"_creating_modifying_a_quickstarter","id":1},{"text":"Creating / Modifying a Jenkins agent image","hash":"_creating_modifying_a_jenkins_agent_image","id":2}]},"236":{"id":236,"text":"Use this quickstarter when you want to use nginx server wrapped within OpenResty dynamic web platform. With this quickstarter you can run many different lightweight server implementations like API gateways and HTTP/TCP/UDP reverse proxies. ├── docker - Contains Dockerfile for the build │ ├── lua - Directory for custom Lua modules │ │ └── server-error.lua - Example of server error response module with Lua │ ├── Dockerfile - Definition of your nginx gateway container │ ├── entrypoint.sh - Enables runtime configurations and runs openresty │ └── nginx.conf - The nginx configuration ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager OpenResty ODS Jenkins Shared Library Simply start to configure your nginx.conf to fit your needs. Also, you can develop and/or use different Lua modules. In order to route/proxy to services in the same namespace you do not need to define environment variables for their ports and/or hosts. OpenShift already loads them into the container’s environment by following a convention like _SERVICE_HOST and _SERVICE_PORT. Please, follow the example provided and comments in the nginx.conf file. One can add official Lua modules by using opm. In the following code snipped one can see how to add an official Lua module through docker build stage. Inside your Dockerfile: RUN opm install zmartzone/lua-resty-openidc Then, one can load such module dependency in new modules like: local http = require(\"resty.openidc\") lua-resty-openidc module is already provided with the default Dockerfile. Lua integration in nginx requires following the Directives provided in its architecture. Notice the importance of the execution order of the directives. Most of the directives require being defined inside your server locations. See next some possibilities one can make use of 1 - Managing access with access_by_lua_block With this directive one can integrate with Identity Providers via different auth/z standars, such as simple HTTP Basic Auth, OAuth, OIDC: access_by_lua_block { require(\"your-auth-module\").authenticate() } 2 - Managing content with content_by_lua_block This directive handles content definition. See the provided server-error.lua module example; by loading the right ENV variables in nginx.conf, you can add in your error location block a custom server error handling: location = /50x.html { content_by_lua_block { require(\"server-error\").make_error() } } 3 - Handle incoming requests with rewrite_by_lua_block One can also make use of the rewrite directive, for example, for filtering/rewriting incoming requests coming from your clients: rewrite_by_lua_block { require(\"filter-requests-headers\").run_filter() } 4 - Handle body responses with body_filter_by_lua_block Filter the body responses comming from your Backend services. For example, one could filter any error response, so to assure filtering stack traces from a JSON object response when running on production: body_filter_by_lua_block { require(\"filter-error-response\").filter_stack_traces() } The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: nginx description: \"Enhanced nginx with Lua embeded. nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server. Technologies: OpenResty/nginx 1.25.3.2-0\" supplier: https://openresty.org version: 1.25.3.2-0 type: ods-service role: integration There are two steps: Build the container image. Deploy. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses jenkins-agent-base N/A","title":"Backend - nginx (be-gateway-nginx)","component":"opendevstack","version":"5.x","name":"be-gateway-nginx","url":"/opendevstack/5.x/quickstarters/be-gateway-nginx.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Routing to your services","hash":"_routing_to_your_services","id":5},{"text":"Adding offical Lua modules","hash":"_adding_offical_lua_modules","id":6},{"text":"Using Lua modules","hash":"_using_lua_modules","id":7},{"text":"Metadata","hash":"_metadata","id":8},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"237":{"id":237,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in golang\" supplier: https://example.com version: 1.0.1 type: ods role: backend There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Golang builder agent. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"5.x","name":"be-golang-plain","url":"/opendevstack/5.x/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"238":{"id":238,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 21 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). The quickstarter uses the spring boot project generator service hosted by Spring (https://start.spring.io) to generate the spring boot project. This is implemented in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project based on version 3.3.3 will be generated and pushed to your git repository. The generated project requires java 21 and includes the required gradle build and wrapper artifact based on gradle version 8.10. The generated spring boot project contains following folders: src (java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,data-rest,data-jpa,h2,security,devtools\"), which are defined in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 21 or later version is required to run gradlew and compile java classes. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Java over Spring Boot\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: spring-boot runtimeVersion: 3.3.3 The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. The jdk builder agent Jenkins builder agent has installed 3 JDK: java 11, java 17 and java 21. The default version is java 17. This makes the agent backwards compatible. If you are migrating an ODS-based spring boot project to java 21 following instructions provide a some guidance about the typical steps to achieve this: change the agent version as indicated in jdk builder agent upgrade the gradle wrapper to version 8.10 running this gradle command at the root folder of your spring project: gradle wrapper --gradle-version 8.10 --distribution-type bin this command use just gradle instead of the wrapper. commit and push the changes to the remote git project repository. Following files are expected to be included in the change: ./gradlew (or gradlew.bat depending on your environment) ./gradle/wrapper/gradle-wrapper.jar ./gradle/wrapper/gradle-wrapper.properties verify that the jenkins build pipeline run successful. Fix any error if is not the case. change your local runtime to java 21 and compile your project with the gradle wrapper. update in your build.gradle file the source compatibility to sourceCompatibility = JavaVersion.VERSION_21 and compile again. update the project Jenkinfile by adding in the stage Build and Unit Test a call to the use-j21.sh before the gradle wrapper. This will set the runtime to `java 21. It would look like this: def status = sh(script: \"use-j21.sh && ./gradlew clean build --stacktrace --no-daemon\", returnStatus: true) commit and push the changes to the remote git project repository. verify that the jenkins build pipeline run successful. Fix any error if is not the case. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"5.x","name":"be-java-springboot","url":"/opendevstack/5.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"Metadata","hash":"_metadata","id":11},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":12},{"text":"Builder agent used","hash":"_builder_agent_used","id":13},{"text":"Migration to Java 21","hash":"_migration_to_java_21","id":14},{"text":"Known limitations","hash":"_known_limitations","id":15}]},"239":{"id":239,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a simple API-server example written in Python and using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── run.sh - This bash script solves issue with permissions for a container user ├── src │ └── main.py - This file is the main entry point in the project. ├── tests │ ├── __init__.py │ └── main_test.py - Unit testing src/main.py ├── .coveragerc - Coverage configuration file ├── metadata.yml - Component metadata ├── mypy.ini - mypy configuration file ├── release-manager.yml - Configuration file for the Release Manager ├── requirements.txt - This file contains a list of required Python modules to run your application ├── tests_requirements.txt - required Python modules for the Test Suite (includes requirements.txt) and IDE integration └── sonar-project.properties - This file contains SonarQube configuration settings Python 3.12 gunicorn flask pytest mypy flake8 The project is production ready when deployed in OpenShift thanks to gunicorn. It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.12, ensure your system’s python executable is also in version 3.12 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Python over Flask\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: flask runtimeVersion: 3.0.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: pip install -r tests_requirements.txt Lint - Runs mypy and flake8 for increasing code quality: mypy src flake8 --max-line-length=120 src Test - Runs pytest and generates xUnit and code coverage reports: PYTHONPATH=src python -m pytest --junitxml=tests.xml -o junit_family=xunit2 --cov-report term-missing --cov-report xml --cov=src -o testpaths=tests Build - Builds the application: copies src folder into docker/dist folder. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. NOTE: The ODS Jenkins Python Agent supports Python versions 3.12, 3.11, 3.9 and 3.8. See next chapter for further information. Build and run environment defaults to python3.12, but python3.11, python3.9 and python3.8 versions are also supported. If you need other versions support in your project, change: in the provided Jenkinsfile, the mentions of python3.12 binary to, for example, python3.9 binary, and switch the FROM statement in your Dockerfile to the python version required, for example, registry.access.redhat.com/ubi8/python-39. Let us know if you find any, thanks!","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"5.x","name":"be-python-flask","url":"/opendevstack/5.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Multiple Python versions support","hash":"_multiple_python_versions_support","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"240":{"id":240,"text":"The project supports generation of Rust programming language based projects, with the Axum web framework by default, and quick installation and integration within OpenShift Jenkins CICD pipelines within the [OpenDevStack](https://www.opendevstack.org/) context. For Database/Postgres integration it is recommended to use SQLx. Check the Axum with SQLx example. Enjoy a full async, safe and high performant setup! This is a Rust project with a common Rust project folder and files structure, with its main.rs file for the final binary to be built, and that makes use of the lib.rs file, which exposes the crates (AKA modules or packages) of the project (where the business logic happens). Similar to Python project structures. The quickstarter comes with a simple API-server example written in Rust and using the Axum web framework. The package allows to easily build a Rust project, using different Rust crates (packages). It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. NOTE The project can be also extended to build other types of solutions with, for example, WASM or IoT. ├── 📂 .config - The local Rust project config folder │ └── 📄 nextest.toml - The local Nextest config file (required for Jenkins CICD) ├── 📂 chart - The Helm chart folder │ ├── 📂 templates - The resource files to define in your project (i.e.: deployment.yml, service.yml,...) │ │ ├── 📂 tests - Helm tests folder │ │ │ └── 📄 test-connection.yaml - Helm test connection to app service after a new release │ │ ├── 📄 _helpers.tpl - Helm helpers template │ │ ├── 📄 deployment.yaml - The k8s Deployment template for the app to release │ │ ├── 📄 NOTES.txt - The release notes processed on each release │ │ └── 📄 service.yaml - The k8s Service template for the app to release │ ├── 📄 .helmignore - The Helm ignore file │ ├── 📄 Chart.yaml - The Helm Chart main config file │ └── 📄 values.yaml - The values to process on your Helm chart ├── 📂 docker - The docker context to build │ └── 📄 Dockerfile - The docker file to deploy and run ├── 🤖 Jenkinsfile - This file contains Jenkins build configuration settings ├── 📂 src │ ├── 📂 api │ │ ├── 📂 routes │ │ │ ├── 🦀 mod.rs - The routes module file │ │ │ └── 🦀 status.rs │ │ ├── 🦀 mod.rs - The api module file │ │ └── 🦀 router.rs - The router API routes file │ ├── 📂 config │ │ ├── 🦀 mod.rs - The config module file │ │ └── 🦀 settings.rs - The settings file │ ├── 📂 models │ │ ├── 🦀 mod.rs - The models module file │ │ └── 🦀 status.rs - The status model example file │ ├── 🦀 lib.rs - The component's library exposing this project's crates to the main.rs │ └── 🦀 main.rs - The component's binary compilation ├── 📂 target - The target folder where all builds (debug, release, ...) are stored (do not commit to git!) ├── 📂 tests - Integration tests folder for all exposed component's crates within the lib.rs │ ├── 🦀 common.rs - Common util implementations and functions │ └── 🦀 status_test.rs - Testing the status endpoint example ├── 📄 .editorconfig - To share with your team IDEs some files formatting defaults ├── 📄 .gitignore - The Git ignore file, with some Rust defaults ├── 📄 .pre-commit-config.yaml - The pre-commit tool config file, prepared for a Rust project. ├── 📄 Cargo.lock - The Rust dependency hash tree of this project ├── 📄 Cargo.toml - The Rust project config file ├── 📄 deny.toml - Cargo Deny TOML configuration based on defaults ├── 📄 metadata.yml - Component metadata ├── 📚 README.md - The README file ├── 📄 release-manager.yml - Configuration file for the Release Manager ├── 📄 rustfmt.toml - The Rust formatter configuration file (for cargo fmt) └── 📄 sonar-project.properties - This file contains SonarQube configuration settings Rust 1.81.x Axum 0.7.x Nextest 0.9.x The project is production ready when deployed in OpenShift. Rust community and official resources are great to get to it, see learn Rust. To get Rust ready on your local environment you just require installing rustup (see install Rust) # Get the Rustup CLI and already install target computer toolchain and latest stable Rust version curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # If you are new to Rust (also check the rustlings TUI) rustup doc --book # Run Unit, Integration and Documentation tests in isolated processes on each test cargo install cargo-nextest # install nextest! cargo nextest run # Cargo format source code cargo fmt # Cargo run locally cargo run # Cargo run Rust linters cargo clippy # Cargo generate documentation cargo doc [--document-private-items] --open One can also extend the cargo features by installing cargo extensions like: # Live reload locally cargo install cargo-watch # https://github.com/watchexec/cargo-watch # Then you can live reload by: cargo watch -x run # Audit Cargo.lock against the advisory DB. The [RustSec Advisory Database](https://github.com/rustsec/rustsec) is a repository of security advisories filed against Rust crates published via crates.io. cargo install cargo-audit # Audit you dependencies on Licenses, Bans, Advisories and Sources, with [cargo-deny](https://github.com/EmbarkStudios/cargo-deny) cargo install cargo-deny # ... NOTE For an extended list of awesome cargo extensions and Rust tools check here and here. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Rust with Axum web framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: rust runtimeVersion: 1.81.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Cargo Check - Checks we can compile: cargo check --all-targets Cargo Format - Checks code is properly formatted: cargo fmt --all -- --check Cargo Clippy - Collection of lints to catch common mistakes and improve your Rust code (output is also used on SonarQube reports): cargo clippy --all-features Cargo Deny - Collection of lints to catch dependency graph issues related to licenses, bans, advisories and sources: cargo deny --all-features check Cargo Test - Runs nextest (instead of cargo test, see above why) with xUnit test report generation (see .config/nextest.toml) and code coverage reports with LLVM coverage tool: cargo nextest run --profile ci cargo llvm-cov nextest --lcov Build - Builds the release target binary and moves it to the docker folder: cargo build --release include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Rust Jenkins builder agent. NOTE: The ODS Jenkins Rust Agent supports Rust versions 1.75.x and above. See the docker spec and openshift templates here. The following main Rust technologies are in use when running this boilerplate: Axum: Web application framework that focuses on ergonomics and modularity. Tokio: Runtime for writing reliable, asynchronous, and slim applications. Tower: Library of modular and reusable components for building robust networking clients and servers. Hyper: A fast and correct HTTP implementation for Rust. First of all, please, let us know if you find any limitation or issue to comment on, thanks! Most of the crates out there, that require cryptographic related features, come with openssl crate as a default dependency feature, but one can check the crate’s docs in regards available features and disable openssl and/or default-features and enable provided alternatives, like rustls`. See some examples of known crates that can be configured to skip requiring OpenSSL C library: With the sqlx crate, one can avoid openssl dependency by enabling the dependency feature tls-rustls which makes use of the crate rustls, like: [dependencies] sqlx = { version = \"0.8\", features = [ \"runtime-tokio\", \"tls-rustls\", \"postgres\", \"uuid\", \"json\", \"chrono\", \"macros\", \"migrate\" ] } See SQLx’s TLS features list support, or all SQLx feature flags, for further learning. With the reqwest crate, one can avoid openssl dependency by enabling the dependency feature rustls-tls, which makes use of the crate rustls and disabling default features, like: [dependencies] reqwest = { version = \"0.12\", default-features = false, features = [\"rustls-tls\"] } See reqwest’s features list for further learning. In some cases one might not be able to skip requiring OpenSSL nor LibreSSL C libraries (see issue), but requires compiling them. To have a lean compilation and shipping experience with Rust, ODS Jenkins Rust agent provides already the dependencies to build OpenSSL from source and statically link them, hence avoiding any mismatch with existing/multiple OS libraries or none (at build or runtime), by enabling statically linking of the dependency within the binary. The only missing piece required is to enable the vendored feature in the crate in your Cargo.toml, see example: [dependencies] openssl = { version = \"0.10\", features = [\"vendored\"] } By doing so, cargo will locally build OpenSSL and statically link the openssl dependencies into the binarie(s) generated, hence avoiding any OS existence nor dependency of the openssl library. In most of cases, one does not require OpenSSL, indeed it is recommended to use more modern alternatives like: ring rustls","title":"Backend Rust Axum Quickstarter (be-rust-axum)","component":"opendevstack","version":"5.x","name":"be-rust-axum","url":"/opendevstack/5.x/quickstarters/be-rust-axum.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Technologies in use","hash":"_technologies_in_use","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9},{"text":"Building with OpenSSL crate or using alternatives","hash":"_building_with_openssl_crate_or_using_alternatives","id":10},{"text":"Recommended first approach","hash":"_recommended_first_approach","id":11},{"text":"SQLx crate without openssl dependency","hash":"_sqlx_crate_without_openssl_dependency","id":12},{"text":"Reqwest crate without openssl dependency","hash":"_reqwest_crate_without_openssl_dependency","id":13},{"text":"Using openssl crate","hash":"_using_openssl_crate","id":14},{"text":"Alternatives to openssl crate","hash":"_alternatives_to_openssl_crate","id":15}]},"241":{"id":241,"text":"This is a Play Framework 2.8.0 quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an reactive Web Application / REST API based on the Scala Language. An example Play Web Application is generated with a Controller and some tests. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── app │ ├── controllers │ │ └── HomeController.scala │ └── views │ ├── index.scala.html │ └── main.scala.html ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ ├── messages │ └── routes ├── docker │ └── Dockerfile ├── project │ ├── build.properties │ ├── plugins.sbt ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── main.js │ └── stylesheets │ └── main.css ├── sonar-project.properties ├── test │ └── controllers │ └── HomeControllerSpec.scala └── .scalafmt.conf This project is generated by SBT using SBTs template generation via the new command. The template used is an adapted version of the official Play Scala Seed Template. It will generate a Play Scala project using version 2.8.2 of Play with Scala version 2.13.10. It uses the logstash-logback-encoder to output logmessages in logstash format. It uses Scalafmt to check/format the source files consistently. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing Or run for running locally in development mode with continous compiling. The application will be accessible under http://localhost:8080 The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Scala over the Play framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: play runtimeVersion: 2.8.2 The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - checks source files formatting, runs the tests and builds and copies the artifacts for creating the docker image to the docker directory. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses the Scala Jenkins agent. NA","title":"Backend Scala Playframework Quickstarter (be-scala-play)","component":"opendevstack","version":"5.x","name":"be-scala-play","url":"/opendevstack/5.x/quickstarters/be-scala-play.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"242":{"id":242,"text":"This is a Node.js (v22) quickstarter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains a basic setup for Docker, Jenkins, SonarQube and OpenShift. The package json is generated by simply using npm init -y, while the tsconfig is generated using tsc --init --skipLibCheck --outDir \"./dist\". The dependencies mentioned below are added to plain package.json file. On top of that, test, build and start script commands are customized to get your node/express application up and running with typescript. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── sum.ts - Sample function │ ├── index.ts - Entrypoint, This runs first ├── __test__ │ ├── sum.spec.ts - Sample test ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration Express (^4.19.2) Jest (^29.7.0) for Unit Testing Typescript (^5.5.4) On top of the mentioned frameworks above, we use libraries: Jest Junit (^16.0.0) @types/node (^22.4.1) When you push your code, your runtime and test code will be compiled using node v10. After deployment the compiled code also runs in node v10. If you developed your code and tests using a different node version locally, this might cause some problems. This is why we made the tsconfig.json file to be compatible with node v10. So bear in mind that any changes to compiler options might result in compilation and runtime errors. Here are our related changes to tsconfig.json file below: \"compilerOptions\": { \"lib\": [\"es2018\"], \"module\": \"commonjs\", \"target\": \"es2018\" } npm install forms the project root to install all the dependencies npm run build transpiles the typescript code to /dist folder npm run start starts the node server npm run test runs tests located under /dist folder, prints the jest output under /build folder and reports test coverage. The report located under /coverage_output folder is then picked by Sonarqube. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in TypeScript over Express\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: node runtimeVersion: 22 The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command is executed to build the application and then the build is copied to the docker/dist folder. Unit Testing : npm run test command is executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.JS 22 builder agent for Jenkins. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"5.x","name":"be-typescript-express","url":"/opendevstack/5.x/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Libraries","hash":"_libraries","id":4},{"text":"Node version","hash":"_node_version","id":5},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":6},{"text":"Metadata","hash":"_metadata","id":7},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":8},{"text":"Builder agent used","hash":"_builder_agent_used","id":9},{"text":"Known limitations","hash":"_known_limitations","id":10}]},"243":{"id":243,"text":"Use this quickstarter when you want to start from a plain Dockerfile only, without any framework on top. A good usecase here is a Dockerfile you found on GitHub which you want to run with OpenDevStack features, or that you need to \"OpenShiftify\", by setting an (non-root) execution user, etc. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - SonarQube Configuration None, except for the ODS jenkins shared library. Amend the generated Dockerfile as needed. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: software-name description: \"Some software packaged in a docker container\" supplier: https://example.com version: 3.2 type: ods-service role: Whatever is in the /docker folder will be passed to oc start build as the docker context. You can add other files to that context as needed: def stageBuild(def context) { stage('Build') { // copy any other artifacts, if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } In case you want to run unit tests, you can add a corresponding statement to stageUnitTest: def stageUnitTest(def context) { stage('Unit Test') { // add your unit tests here, if needed } } Assuming your component contains source code you want to have delivered by the Release Manager, the execution of tests and the reporting of their results is mandatory. For this, your component will have to…​ define name, description, supplier, and version metadata for your component in files/release-manager.yml place the test results in the xUnit XML format in a path known to context.testResults (defaults to build/test-results/test) provide these test results to the Jenkins JUnit plugin via its junit step function. Feel free to look out for examples in our existing quickstarters, such as be-java-springboot. include::partials$secret-scanning-with-gitleaks.adoc none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"5.x","name":"docker-plain","url":"/opendevstack/5.x/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"244":{"id":244,"text":"Provision a shared Jupyter Lab within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker │ ├── Dockerfile │ ├── jupyter_lab_config.json │ ├── requirements.txt │ └── run.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.11 JupyterLab The quickstarter sets up two pods in OpenShift. The ds-jupyter-lab instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt. One can setup specific and independent IPython kernels based on specific Python virtual environments: Open a new terminal session in your Jupyter Lab, then: cd python -m venv . /bin/activate pip install ipykernel pip --upgrade python -m ipykernel install --user --name= jupyter kernelspec list # this is for validating installation Now on a notebook you can select that new kernel by clicking on the name you see on the top right where you see the dot status. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: jupyterlab description: \"JupyterLab is a web-based interactive development environment for Jupyter notebooks, code, and data.\" supplier: https://jupyter.org/ version: 3.0.14 type: ods-service The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partials$secret-scanning-with-gitleaks.adoc jenkins-agent-base Consider if sufficient computing resources can be provided by the OpenShift cluster. You might require installing NodeJS if requiring specific JupyterLab extensions (nodejs >=12.0.0).","title":"Data Science Jupyter Lab","component":"opendevstack","version":"5.x","name":"ds-jupyter-lab","url":"/opendevstack/5.x/quickstarters/ds-jupyter-lab.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Setting up independent environments/kernels","hash":"_setting_up_independent_environmentskernels","id":5},{"text":"Metadata","hash":"_metadata","id":6},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"245":{"id":245,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── docker - This folder contains Docker configuration settings and main R Shiny app │ ├── Dockerfile │ └── app.R ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: shiny description: \"Shiny is an R package that makes it easy to build interactive web apps straight from R.\" supplier: https://www.rstudio.com/ version: 1.6.0 type: ods-service runtime: r runtimeVersion: 4.1.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partials$secret-scanning-with-gitleaks.adoc jenkins-agent-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"5.x","name":"ds-rshiny","url":"/opendevstack/5.x/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"246":{"id":246,"text":"Provisions a streamlit based dashboard with authentication. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker_streamlit │ └── Dockerfile ├── docker_oauth │ └── Dockerfile - Dockerfile for the oauth, please don't change this for proper promotion ├── src - Example code structure based on individual python modules │ ├── calculation │ │ │── __init__.py │ │ └── sample.py │ ├── plots │ │ ├── __init__.py │ │ ├── config.py │ │ └── histogram.py │ └── main.py ├── tests │ └── calculation │ └── sample_test.py │── .gitignore │── requirements.txt - requirements for running the application │── test_requirements.txt - adds additional requirements for the test frameworks │── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.12 streamlit pandas plotly The quickstarter sets up in OpenShift a pod with two containers. The main ds-streamlit container is behind and protected by the OpenShift OAuth proxy container (i.e.: it is a sidecar container). It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.12, ensure your system’s python executable is also in version 3.12 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py name: description: \"Some dashboard based on Streamlit\" supplier: https://example.com version: 1.0.1 type: ods role: dashboard runtime: streamlit runtimeVersion: 1.38.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: Lint - Runs mypy and flake8 for increasing code quality: In order to be sure that your code passes the linting stage execute or add it as a pre-commit hook to your git. black src Test - Runs pytest and generates xUnit and code coverage reports: Build - Builds the application: copies src folder into docker_streamlit/dist folder. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. Let us know if you find any, thanks!","title":"Data Science Streamlit","component":"opendevstack","version":"5.x","name":"ds-streamlit","url":"/opendevstack/5.x/quickstarters/ds-streamlit.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"247":{"id":247,"text":"Cypress end-to-end testing quickstarter project This is a Cypress end-to-end testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── fixtures │ └── example.json ├── plugins │ ├── index.ts │ ├── screenshot.ts │ └── screenshot.types.ts ├── reporters │ └── custom-reporter.js ├── support │ ├── commands.ts │ ├── e2e.ts │ ├── generic-login.ts │ ├── msalv2-login_obsolete.ts │ └── test-evidence.ts ├── tests │ ├── acceptance │ │ └── acceptance.spec.cy.ts │ ├── installation │ │ └── installation.spec.cy.ts │ └── integration │ └── integration.spec.cy.ts ├── cypress-acceptance.config.ts ├── cypress-installation.config.ts ├── cypress-integration.config.ts ├── cypress.config.ts ├── cypress.env.json.template ├── Jenkinsfile ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata ├── package.json ├── README.md ├── release-manager.yml - Configuration file for the Release Manager └── tsconfig.json Cypress TypeScript Check the README.md file at root level for further instructions after the quickstarter has been provisioned. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile there is the following stage: stageTest Load Node.js dependencies by running npm install and executing the e2e tests by running npm run e2e. Please note: TSLint has been deprecated in favor of ESLint. Therefore the support for TSLint has been removed from this quickstarter. Please consider adding ESLint support (see also https://www.npmjs.com/package/eslint#installation-and-usage) or a formatter like Prettier (see also https://prettier.io/docs/en/install.html). While npm install is gathering the dependencies it is also performing a post-installation process which is downloading Cypress' binaries. It is possible to change this behavior, e.g. for getting those binaries from Nexus or a local cache. See https://docs.cypress.io/guides/getting-started/installing-cypress#Advanced for more details. A more advanced solution could be the use of a custom builder agent, where Cypress is already embedded. The related Dockerfile could look like this: # The following FROM tag is informational. It is overwritten by OpenShift. FROM ods/jenkins-agent-nodejs22:4.x ARG cypressVersion=13.13.1 ARG cypressHash=... USER root # Adds cypress@VERSION binaries to /home/jenkins/.cache/Cypress/VERSION/Cypress # This allows to disable post-installation of Cypress binaries and gather those binaries from a cache folder instead. The cache # folder holds the binaries for the respective versions of Cypress. # Setting the following environment variable in the Jenkinsfile allows to disable post-installation of cypress@...: # CYPRESS_INSTALL_BINARY=0 # The custom cache folder can be configured in Jenkinsfile by the following environment variable setting: # CYPRESS_CACHE_FOLDER=/home/jenkins/.cache/Cypress ADD https://download.cypress.io/desktop/${cypressVersion}?platform=linux&arch=x64 /home/jenkins/cypress/cypress-linux.zip RUN md5sum /home/jenkins/cypress/cypress-linux.zip && \\ echo \"${cypressHash} /home/jenkins/cypress/cypress-linux.zip\" | md5sum -c && \\ mkdir -p /home/jenkins/.cache/Cypress/${cypressVersion} && \\ unzip -q /home/jenkins/cypress/cypress-linux.zip -d /home/jenkins/.cache/Cypress/${cypressVersion} && \\ rm /home/jenkins/cypress/cypress-linux.zip # fix access rights RUN chgrp -R 0 $HOME && \\ chmod -R g=u $HOME && \\ chmod ug=rx /home/jenkins/.cache/Cypress/${cypressVersion}/Cypress/Cypress USER 1001 To use Cypress Cloud within the Cypress QuickSarter, follow these steps: Create a project in Cypress Cloud. Access Cypress Cloud by following this link (https://cloud.cypress.io/), and create a project. This project will be used to store your Cypress tests and results. Change the project ID as indicated in Cypress Cloud. After creating the project, you will need to change the project ID in the four config files, to the one indicated in Cypress Cloud. This ID is used to identify your project and ensure that your tests are associated with the correct project. Set the Cypress Record Key as an environment variable in Openshift. To enable recording of your tests in Cypress Cloud, you will need to set the Cypress Record Key as an environment variable named CYPRESS_RECORD_KEY in Openshift. This key is provided by Cypress and is used to authenticate your tests and results. By setting it in Openshift, we ensure that the record functionality will only be used in official runs and not for local development. Modify the Jenkinsfile for using the record script. In the Jenkinsfile, change the exeuction line: def status = sh(script: 'npm run e2e', returnStatus: true) for the following block of code, which will run the record script only when in master or in a release branch: if (context.gitBranch == 'master' || context.gitBranch.startsWith('release/')) { def status = sh(script: 'npm run e2e:jenkins:record', returnStatus: true) } else { def status = sh(script: 'npm run e2e', returnStatus: true) } Only use this functionality in releases, not development. It is important to note that Cypress Cloud is intended for use in releases, not development. This ensures that your tests are run against stable and reliable code, and that the Dashboard does not get overflooded with non-relevant tests. For the same reason, the Jenkinsfile is configured to only pass the record parameter when running in the master branch, or in a release. You can find more information about using the Cypress Cloud in the official documentation for Cypress https://docs.cypress.io/guides/cloud/introduction. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. NA","title":"End-to-end tests with Cypress (e2e-cypress)","component":"opendevstack","version":"5.x","name":"e2e-cypress","url":"/opendevstack/5.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Cypress without post-installation","hash":"_cypress_without_post_installation","id":6},{"text":"Cypress Cloud","hash":"_cypress_cloud","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"248":{"id":248,"text":"End-to-end tests for ETLs quickstarter project This is a python based quicktarter intended to develop end-to-end tests for data pipelines. In order to do that it uses two testing technologies: 1. Great Expectations, meant for data transformation testing data within relational tables. e.g.: You could test the schema of a database, the number of rows, that a specific column has no null values, etc 2. Pytest together with Boto it allows for testing etl triggers, notification system, content of S3 buckets, etc ├── Jenkinsfile - This file contains Jenkins stages. ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── tests - This folder contains the root for test-kitchen │ ├── acceptance/great_expectations - This folder contains the Great Expecations tests to test │ └── acceptance/pytest - This folder contains the pytest tests to test Great-expectations Pytest Check the README.md file at root level for further instructions after the quickstarter has been provisioned. This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"End-to-end tests with Great Expectations and Pytest (e2e-etl-python)","component":"opendevstack","version":"5.x","name":"e2e-etl-python","url":"/opendevstack/5.x/quickstarters/e2e-etl-python.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Builder agent used","hash":"_builder_agent_used","id":5},{"text":"Known limitations","hash":"_known_limitations","id":6}]},"249":{"id":249,"text":"spock, geb and unirest e2e testing quickstarter project This is a spock, geb and unirest e2e testing project quickstarter with basic setup for Jenkins, SonarQube and Gradle. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── README.md ├── sonar-project.properties ├── src │ ├── test │ │ └── acceptance │ │ │ └── groovy │ │ │ │ └── DemoAcceptanceSpec.groovy │ │ │ └── java │ │ │ └── DemoAcceptanceTest.java │ │ └── installation │ │ │ └── groovy │ │ │ │ └── DemoInstallationSpec.groovy │ │ │ └── java │ │ │ └── DemoInstallationTest.java │ │ └── integration │ │ │ └── groovy │ │ │ │ └── DemoIntegrationSpec.groovy │ │ │ └── java │ │ | └── DemoIntegrationTest.java │ │ └── resources │ │ └── application.properties │ │ └── GebConfig.groovy │ │ └── SpecHelper.groovy ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── build.gradle ├── gradlew └── gradlew.bat The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. This project is generated by Gradle spock geb unirest Run command gradlew test in project directory to execute the end-to-end tests via spock/geb against the Google Home page and demo jUnit 5 tests. You will see the results inside a new folder 'build' in project directory. . └── build └── test-results ├── acceptance-groovy │ └── TEST-DemoAcceptance.xml ├── acceptance-java │ └── TEST-DemoAcceptanceTest.xml ├── installation-groovy │ └── TEST-DemoInstallation.xml ├── installation-java │ └── TEST-DemoInstallationTest.xml ├── integration-groovy │ └── TEST-DemoIntegration.xml └── integration-java └── TEST-DemoIntegrationTest.xml You can see how a Java Junit 5 test are developed showing the Demo*Test.java files. You can see how a Groovy Spock/Geb test are developed showing the Demo*Spec.groovy files. The url to test with Geb is configured in the property config.application.url inside application.properties Inside GebConfig.groovy you could change the default navigator (CHROME) The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile.template, there is the following stage: stageTest - Run the programed e2e test with this order: installation-java installation-groovy integration-java integration-groovy acceptance-java acceptance-groovy All the results are stashed and published through Jenkins jUnit publisher. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. NA","title":"End-to-end tests with Spock, Geb and Unirest (e2e-spock-geb)","component":"opendevstack","version":"5.x","name":"e2e-spock-geb","url":"/opendevstack/5.x/quickstarters/e2e-spock-geb.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Gradle Support","hash":"_gradle_support","id":3},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":4},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":5},{"text":"Frameworks used","hash":"_frameworks_used","id":6},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":7},{"text":"Customization - how do you start to configure your test","hash":"_customization_how_do_you_start_to_configure_your_test","id":8},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"250":{"id":250,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json This project is generated by Angular CLI Angular CLI Angular TypeScript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"My Angular-based front end\" supplier: https://example.com version: 1.0.1 type: ods role: frontend runtime: angular-cli runtimeVersion: 18.2.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: stageBuild - Builds the application by running npm install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. This will also create test coverage analysis data which will then be transfered to SonarQube during odsComponentStageScanWithSonar odsComponentStageScanWithSonar - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. Please note: By default the applciation is always build as full production build including all sorts of optimizations. In addition source maps will be added except for builds that are triggered from master. This can be changed by configuring (additional) build configurations within angular.json and by using them via stageBuild or package.json. Please note: The support for TSLint has been removed from this quickstarter. Also Angular is not shipping a linter by default anymore. Please consider adding ESLint support or a formatter like Prettier. For adding ESLint simply type ng add @angular-eslint/schematics. For setting up Prettier please see https://prettier.io/docs/en/install.html. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"5.x","name":"fe-angular","url":"/opendevstack/5.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"251":{"id":251,"text":"Ionic quickstarter project This quickstarter generates an Ionic 7.2.0 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/TypeScript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. . ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── src │ ├── app │ │ ├── home │ │ │ ├── home-routing.module.ts │ │ │ ├── home.module.ts │ │ │ ├── home.page.html │ │ │ ├── home.page.scss │ │ │ ├── home.page.spec.ts │ │ │ └── home.page.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── theme │ │ └── variables.scss │ ├── global.scss │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── test.ts │ └── zone-flags.ts ├── angular.json - This file contains Angular project configuration settings ├── capacitor.config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── ionic.config.json - This file contains Ionic project configuration ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── karma.conf.js ├── metadata.yml - Component metadata ├── package.json - This file contains scripts to run and node packages dependencies for project ├── README.md ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json Ionic CLI Ionic Framework Angular TypeScript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g @ionic/cli Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: Ionic component: frontend instance: description: \"Ionic Framework is the free, open source mobile UI toolkit for developing high-quality cross-platform apps for native iOS, Android, and the web—all from a single codebase. Technologies: Ionic 7.2.0\" supplier: https://ionicframework.com type: ods version: 7.2.0 The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following main stages for this quickstarter: Build Installs Ionic CLI and the dependencies of your project with npm install and generates the build by running ionic build. If the merged git branch is master, it creates the production build with ionic build --prod. Finally, it copies the output folder ./www into ./docker/dist. Unit Test Runs unit test cases by executing npm run test command. If any test fails, the build is marked as failed. This will also create test coverage analysis data which will then be transfered to SonarQube. Lint Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. SonarQube Analysis Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and ./src/environments/** are excluded from the analysis, since they usually don’t contain application logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"5.x","name":"fe-ionic","url":"/opendevstack/5.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known Limitation","hash":"_known_limitation","id":8}]},"252":{"id":252,"text":"The project supports generation of AWS deployments utilizing terraform tooling. installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform resource which deploys a S3 bucket using AWS CloudFormation. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform AWS Quickstarter (inf-terraform-aws)","component":"opendevstack","version":"5.x","name":"inf-terraform-aws","url":"/opendevstack/5.x/quickstarters/inf-terraform-aws.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"253":{"id":253,"text":"Table of Contents Overview Available, official quickstarters Backend Quickstarter Frontend Quickstarter Data Science Quickstarter E2E Test Quickstarter Infrastructure Terraform Quickstarter ODS Contribution Quickstarter Authoring quickstarters Quickstarters are basically templates that help to start out with a component quickly. A quickstarter provides a specific technology, potentially with a framework setup already, such as Java with Springboot in the case of the be-java-springboot quickstarter. Compared to starting out from scratch, using a quickstarter typically helps by: setting up a repository in Bitbucket with webhooks to trigger Jenkins builds shipping a Jenkinsfile with a pipeline that builds and deploys the component (delegating most of the work to the shared library) providing a basic test setup with xUnit reports and code coverage integrating with SonarQube out-of-the-box (including code coverage report) setting up OpenShift resources to build and run the component creating a boilerplate application with one or more sample endpoints Quickstarters are used from the Provisioning App, which allows to add a component to an existing project by running a quickstarter from the configured list of available quickstarters. This list can contain quickstarters from the official repository, ods-quickstarters, or from some other repository such as internally hosted ones in your Bitbucket instance. Backend - Gateway/Nginx Backend - Go Backend - Java/SpringBoot Backend - TypeScript/Express Backend - Python/Flask Backend - Rust/Axum Backend - Scala/Play Frontend - Angular Mobile - Ionic Data Science - Jupyter Lab Data Science - R-Shiny Data Science Streamlit app E2E test - Cypress E2E test - Spock / Geb E2E test - ETL Python AWS deployments utilizing terraform tooling Azure deployments utilizing terraform tooling ODS Fork - Document Generation Service ODS Fork - Provisioning Application Next to those, there is a \"blank\" quickstarter (Docker/Plain) allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences. As mentioned above, it is possible to supply your own quickstarters. Pleasee see the authoring quickstarters guide on how to make completely new quickstarters or how to adapt existing quickstarters to your needs.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Available, official quickstarters","hash":"_available_official_quickstarters","id":2},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":3},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":4},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":5},{"text":"E2E Test Quickstarter","hash":"_e2e_test_quickstarter","id":6},{"text":"Infrastructure Terraform Quickstarter","hash":"_infrastructure_terraform_quickstarter","id":7},{"text":"ODS Contribution Quickstarter","hash":"_ods_contribution_quickstarter","id":8},{"text":"Authoring quickstarters","hash":"_authoring_quickstarters","id":9}]},"254":{"id":254,"text":"The project supports generation of Azure deployments utilizing terraform tooling, installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform which deploys a resource group and a storage account via an ARM template. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with Chef InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.tfbackend.config - This file describes terraform backend parameters in the dev Azure subscription. │ ├── test.tfbackend.config - This file describes terraform backend parameters in the test Azure subscription. │ ├── prod.tfbackend.config - This file describes terraform backend parameters in the production Azure subscription. │ ├── dev.yml - This file describes credential parameters for the development environment. Values are names of secrets held in Jenkins. │ ├── test.yml - This file describes credential parameters for the test environment. Values are names of secrets held in Jenkins. │ ├── prod.yml - This file describes credential parameters for the producation environment. Values are names of secrets held in Jenkins. │ ├── dev.json - This file describes parameters for the development environment. │ ├── test.json - This file describes parameters for the test environment. │ └── prod.json - This file describes parameters for the production environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform Azure Quickstarter (inf-terraform-azure)","component":"opendevstack","version":"5.x","name":"inf-terraform-azure","url":"/opendevstack/5.x/quickstarters/inf-terraform-azure.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"255":{"id":255,"text":"The quickstarters include a skeleton metadata file metadata.yml. This file provides information about the component, but some metadata entries are also used to label the OpenShift resources created for the component. The following is a table with the supported metadata entries and the labels for which they are used: Entry key Meaning Example Label name The name of the software deployed in this component mongodb app.kubernetes.io/name description Description of the software deployed in this component MongoDB is a general-purpose document-based distributed database. supplier Supplier of the software deployed in this component https://www.mongodb.com/ version Version of the software deployed in this component 4.0.8 app.kubernetes.io/version type Type of OpenDevStack component ods-service app.opendevstack.org/type role Role this component plays in the architecture database app.kubernetes.io/component partOf Name of a higher-level application this component is part of my-online-shop app.kubernetes.io/part-of runtime The runtime this software runs on spring-boot app.openshift.io/runtime runtimeVersion The version of the runtime this software runs on 1.4.4.RELEASE app.openshift.io/runtime-version Detailed description of the supported metadata entries. It is strongly recommended to follow the guidelines for the entries that are used to label OpenShift resources. Moreover, OpenShift label values must meet the following restrictions: must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The values given in the metadata file will be sanitised to adhere to those restrictions, but it is recommended to use compliant values that need no sanitation. This is the software deployed in this component. There may be other instances of the same software in other components. For components of type ods, which are pieces of software developed as part of the project, this is recommended to be set to the component ID. For components of type ods-service, which are instances of some existing software, this is recommended to be set to a well-known id of the software being deployed. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the description of the software deployed in this component. Examples: \"User-management microservice\" or \"MongoDB is a general-purpose document-based distributed database\". The supplier of the software being deployed. Possible a web-page link. Example: https://www.mongodb.com/ This is the version of the software identified by the name entry. Example: 4.0.8 This metadata entry will be used as the value of the label app.kubernetes.io/version. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the role this component plays in the architecture. Example: database Any value can be set, but the following values are recommended: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. This metadata entry will be used as the value of the label app.kubernetes.io/component. The name of a higher level application this component is part of. This is used to group components as part of a higher-level application, when suitable. Example: you are building an online shop, and this component is part of it. You can set partOf: my-online-shop This metadata entry will be used as the value of the label app.kubernetes.io/part-of. The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This metadata entry will be used as the value of the label app.openshift.io/runtime. The version of the runtime. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if runtime is not also specified. Example: 1.4.4.RELEASE This metadata entry will be used as the value of the label app.openshift.io/runtime-version.","title":"Component metadata","component":"opendevstack","version":"5.x","name":"metadata","url":"/opendevstack/5.x/quickstarters/metadata.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Detailed description","hash":"_detailed_description","id":2},{"text":"name","hash":"_name","id":3},{"text":"description","hash":"_description","id":4},{"text":"supplier","hash":"_supplier","id":5},{"text":"version","hash":"_version","id":6},{"text":"type","hash":"_type","id":7},{"text":"role","hash":"_role","id":8},{"text":"partOf","hash":"_partof","id":9},{"text":"runtime","hash":"_runtime","id":10},{"text":"runtimeVersion","hash":"_runtimeversion","id":11}]},"256":{"id":256,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-document-generation-svc None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc N/A","title":"Contribution ODS Document Generation Service (ods-document-gen-svc)","component":"opendevstack","version":"5.x","name":"ods-document-gen-svc","url":"/opendevstack/5.x/quickstarters/ods-document-gen-svc.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"257":{"id":257,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-provisioning-app None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app N/A","title":"Contribution ODS Provisioning Application (ods-provisioning-app)","component":"opendevstack","version":"5.x","name":"ods-provisioning-app","url":"/opendevstack/5.x/quickstarters/ods-provisioning-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"258":{"id":258,"text":"The release manager supports the orchestration of multiple repositories into a live application. . ├── docs # Fall-back document chapter templates for (LeVA) compliance reports. ├── Jenkinsfile # The release manager pipeline. ├── .pre-commit-config.yaml ├── README.md └── metadata.yml # Configuration of the release manager pipeline and its repositories. The release manager automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A - id: B name: my-repo-B - id: C For all repositories mentioned above (A, B, C) the library will resolve the default branch configured in each. If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A type: ods - id: B name: my-repo-B type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. This type designates ODS components designed for running some service. Examples include repositories based on the be-gateway-nginx quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. The release manager will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. The default branch configured for the repository will be considered. Instead of merely resolving repositories into a strictly sequential execution model, the release manager automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. The release manager automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process. Note: when you configure a Jira service in metadata.yml, the release manager expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the release manager will fall back to the document chapter templates located in the docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. If you want your target environment to be created from an existing source environment such as dev or test on the fly, you need to provide the environment and sourceEnvironmentToClone parameters to your pipeline, respectively. Their values will be combined with your project ID in the form ${project-id}-${environment} to create the project (namespace) name in your OpenShift cluster. include::partials$secret-scanning-with-gitleaks.adoc","title":"Release Manager","component":"opendevstack","version":"5.x","name":"release-manager","url":"/opendevstack/5.x/quickstarters/release-manager.html","titles":[{"text":"File Structure","hash":"_file_structure","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":12},{"text":"Automated Cloning of Environments","hash":"_automated_cloning_of_environments","id":13}]}},"components":{},"componentVersions":{"opendevstack/5.x":{"displayVersion":"5.x Preview","title":"OpenDevStack","version":"5.x","name":"opendevstack","prerelease":"Preview","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/5.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/5.x/jenkins-shared-library/index.html","urlType":"internal","items":[{"content":"Component Pipeline","url":"/opendevstack/5.x/jenkins-shared-library/component-pipeline.html","urlType":"internal"},{"content":"Orchestration Pipeline","url":"/opendevstack/5.x/jenkins-shared-library/orchestration-pipeline.html","urlType":"internal"},{"content":"Quickstarter Pipeline","url":"/opendevstack/5.x/jenkins-shared-library/quickstarter-pipeline.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/5.x/quickstarters/index.html","urlType":"internal","items":[{"content":"Docker Plain","url":"/opendevstack/5.x/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Gateway/Nginx","url":"/opendevstack/5.x/quickstarters/be-gateway-nginx.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/5.x/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java/Spring Boot","url":"/opendevstack/5.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE TypeScript/Express","url":"/opendevstack/5.x/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python/Flask","url":"/opendevstack/5.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Rust/Axum","url":"/opendevstack/5.x/quickstarters/be-rust-axum.html","urlType":"internal"},{"content":"BE Scala/Play","url":"/opendevstack/5.x/quickstarters/be-scala-play.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/5.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/5.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"Data Science Jupyter Lab","url":"/opendevstack/5.x/quickstarters/ds-jupyter-lab.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/5.x/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Data Science Streamlit app","url":"/opendevstack/5.x/quickstarters/ds-streamlit.html","urlType":"internal"},{"content":"Cypress E2E testing","url":"/opendevstack/5.x/quickstarters/e2e-cypress.html","urlType":"internal"},{"content":"ETL Python E2E testing","url":"/opendevstack/5.x/quickstarters/e2e-etl-python.html","urlType":"internal"},{"content":"Spock, Geb and Unirest E2E testing","url":"/opendevstack/5.x/quickstarters/e2e-spock-geb.html","urlType":"internal"},{"content":"INF Terraform AWS","url":"/opendevstack/5.x/quickstarters/inf-terraform-aws.html","urlType":"internal"},{"content":"INF Terraform AZURE","url":"/opendevstack/5.x/quickstarters/inf-terraform-azure.html","urlType":"internal"},{"content":"Release Manager","url":"/opendevstack/5.x/quickstarters/release-manager.html","urlType":"internal"},{"content":"Jenkins agent Images","items":[{"content":"Base Image","url":"/opendevstack/5.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Go","url":"/opendevstack/5.x/jenkins-agents/golang.html","urlType":"internal"},{"content":"terraform","url":"/opendevstack/5.x/jenkins-agents/inf-terraform.html","urlType":"internal"},{"content":"jdk","url":"/opendevstack/5.x/jenkins-agents/jdk.html","urlType":"internal"},{"content":"Node.js 16","url":"/opendevstack/5.x/jenkins-agents/nodejs16.html","urlType":"internal"},{"content":"Node.js 18","url":"/opendevstack/5.x/jenkins-agents/nodejs18.html","urlType":"internal"},{"content":"Node.js 20","url":"/opendevstack/5.x/jenkins-agents/nodejs20.html","urlType":"internal"},{"content":"Node.js 22","url":"/opendevstack/5.x/jenkins-agents/nodejs22.html","urlType":"internal"},{"content":"Python","url":"/opendevstack/5.x/jenkins-agents/python.html","urlType":"internal"},{"content":"Rust","url":"/opendevstack/5.x/jenkins-agents/rust.html","urlType":"internal"},{"content":"Scala","url":"/opendevstack/5.x/jenkins-agents/scala.html","urlType":"internal"}]},{"content":"Authoring Quickstarters","url":"/opendevstack/5.x/quickstarters/authoring-quickstarters.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/5.x/provisioning-app/index.html","urlType":"internal"}],"root":true,"order":2},{"items":[{"content":"Jenkins","url":"/opendevstack/5.x/jenkins/index.html","urlType":"internal","items":[{"content":"Jenkins Master","url":"/opendevstack/5.x/jenkins/master.html","urlType":"internal"},{"content":"Jenkins Agent Base","url":"/opendevstack/5.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Webhook Proxy","url":"/opendevstack/5.x/jenkins/webhook-proxy.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"SonarQube","url":"/opendevstack/5.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":4},{"items":[{"content":"Update Guides","items":[{"content":"Migrate to 4.x","url":"/opendevstack/5.x/update-guides/4x.html","urlType":"internal"},{"content":"Migrate to 3.x","url":"/opendevstack/5.x/update-guides/3x.html","urlType":"internal"},{"content":"Migrate to 2.x","url":"/opendevstack/5.x/update-guides/2x.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"Administration","items":[{"content":"Installation","url":"/opendevstack/5.x/administration/installation.html","urlType":"internal"},{"content":"Upgrade","items":[{"content":"Helm migration","url":"/opendevstack/5.x/administration/helm-migration.html","urlType":"internal"},{"content":"2.x to 3.x","url":"/opendevstack/5.x/administration/update-2-to-3.html","urlType":"internal"},{"content":"older","url":"/opendevstack/5.x/administration/update-older.html","urlType":"internal"}]},{"content":"Provisioning App","url":"/opendevstack/5.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Keycloak","url":"/opendevstack/5.x/administration/keycloak.html","urlType":"internal"},{"content":"SonarQube","url":"/opendevstack/5.x/sonarqube/administration.html","urlType":"internal"},{"content":"Nexus","url":"/opendevstack/5.x/nexus/administration.html","urlType":"internal"},{"content":"Jenkins","url":"/opendevstack/5.x/jenkins/administration.html","urlType":"internal"},{"content":"Image Lifecycles","url":"/opendevstack/5.x/administration/image-lifecycle.html","urlType":"internal"}]}],"root":true,"order":6},{"items":[{"content":"Contributing to ODS","items":[{"content":"Development","url":"/opendevstack/5.x/contributing/development.html","urlType":"internal"},{"content":"Documentation","url":"/opendevstack/5.x/contributing/documentation.html","urlType":"internal"},{"content":"Provisioning App","url":"/opendevstack/5.x/provisioning-app/architecture.html","urlType":"internal"}]}],"root":true,"order":7}]},"opendevstack/4.x":{"displayVersion":"4.x","title":"OpenDevStack","version":"4.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/latest/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/latest/jenkins-shared-library/index.html","urlType":"internal","items":[{"content":"Component Pipeline","url":"/opendevstack/latest/jenkins-shared-library/component-pipeline.html","urlType":"internal"},{"content":"Orchestration Pipeline","url":"/opendevstack/latest/jenkins-shared-library/orchestration-pipeline.html","urlType":"internal"},{"content":"Quickstarter Pipeline","url":"/opendevstack/latest/jenkins-shared-library/quickstarter-pipeline.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/latest/quickstarters/index.html","urlType":"internal","items":[{"content":"Docker Plain","url":"/opendevstack/latest/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Gateway/Nginx","url":"/opendevstack/latest/quickstarters/be-gateway-nginx.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/latest/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java/Spring Boot","url":"/opendevstack/latest/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE TypeScript/Express","url":"/opendevstack/latest/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python/Flask","url":"/opendevstack/latest/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Rust/Axum","url":"/opendevstack/latest/quickstarters/be-rust-axum.html","urlType":"internal"},{"content":"BE Scala/Play","url":"/opendevstack/latest/quickstarters/be-scala-play.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/latest/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/latest/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"Data Science Jupyter Lab","url":"/opendevstack/latest/quickstarters/ds-jupyter-lab.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/latest/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Data Science Streamlit app","url":"/opendevstack/latest/quickstarters/ds-streamlit.html","urlType":"internal"},{"content":"Cypress E2E testing","url":"/opendevstack/latest/quickstarters/e2e-cypress.html","urlType":"internal"},{"content":"ETL Python E2E testing","url":"/opendevstack/latest/quickstarters/e2e-etl-python.html","urlType":"internal"},{"content":"Spock, Geb and Unirest E2E testing","url":"/opendevstack/latest/quickstarters/e2e-spock-geb.html","urlType":"internal"},{"content":"INF Terraform AWS","url":"/opendevstack/latest/quickstarters/inf-terraform-aws.html","urlType":"internal"},{"content":"INF Terraform AZURE","url":"/opendevstack/latest/quickstarters/inf-terraform-azure.html","urlType":"internal"},{"content":"Release Manager","url":"/opendevstack/latest/quickstarters/release-manager.html","urlType":"internal"},{"content":"Jenkins agent Images","items":[{"content":"Base Image","url":"/opendevstack/latest/jenkins/agent-base.html","urlType":"internal"},{"content":"Go","url":"/opendevstack/latest/jenkins-agents/golang.html","urlType":"internal"},{"content":"terraform","url":"/opendevstack/latest/jenkins-agents/inf-terraform.html","urlType":"internal"},{"content":"jdk","url":"/opendevstack/latest/jenkins-agents/jdk.html","urlType":"internal"},{"content":"Node.js 16","url":"/opendevstack/latest/jenkins-agents/nodejs16.html","urlType":"internal"},{"content":"Node.js 18","url":"/opendevstack/latest/jenkins-agents/nodejs18.html","urlType":"internal"},{"content":"Node.js 20","url":"/opendevstack/latest/jenkins-agents/nodejs20.html","urlType":"internal"},{"content":"Node.js 22","url":"/opendevstack/latest/jenkins-agents/nodejs22.html","urlType":"internal"},{"content":"Python","url":"/opendevstack/latest/jenkins-agents/python.html","urlType":"internal"},{"content":"Rust","url":"/opendevstack/latest/jenkins-agents/rust.html","urlType":"internal"},{"content":"Scala","url":"/opendevstack/latest/jenkins-agents/scala.html","urlType":"internal"}]},{"content":"Authoring Quickstarters","url":"/opendevstack/latest/quickstarters/authoring-quickstarters.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/latest/provisioning-app/index.html","urlType":"internal"}],"root":true,"order":2},{"items":[{"content":"Jenkins","url":"/opendevstack/latest/jenkins/index.html","urlType":"internal","items":[{"content":"Jenkins Master","url":"/opendevstack/latest/jenkins/master.html","urlType":"internal"},{"content":"Jenkins Agent Base","url":"/opendevstack/latest/jenkins/agent-base.html","urlType":"internal"},{"content":"Webhook Proxy","url":"/opendevstack/latest/jenkins/webhook-proxy.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"SonarQube","url":"/opendevstack/latest/sonarqube/index.html","urlType":"internal"}],"root":true,"order":4},{"items":[{"content":"Update Guides","items":[{"content":"Migrate to 4.x","url":"/opendevstack/latest/update-guides/4x.html","urlType":"internal"},{"content":"Migrate to 3.x","url":"/opendevstack/latest/update-guides/3x.html","urlType":"internal"},{"content":"Migrate to 2.x","url":"/opendevstack/latest/update-guides/2x.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"Administration","items":[{"content":"Installation","url":"/opendevstack/latest/administration/installation.html","urlType":"internal"},{"content":"Upgrade","items":[{"content":"Helm migration","url":"/opendevstack/latest/administration/helm-migration.html","urlType":"internal"},{"content":"2.x to 3.x","url":"/opendevstack/latest/administration/update-2-to-3.html","urlType":"internal"},{"content":"older","url":"/opendevstack/latest/administration/update-older.html","urlType":"internal"}]},{"content":"Provisioning App","url":"/opendevstack/latest/provisioning-app/configuration.html","urlType":"internal"},{"content":"Keycloak","url":"/opendevstack/latest/administration/keycloak.html","urlType":"internal"},{"content":"SonarQube","url":"/opendevstack/latest/sonarqube/administration.html","urlType":"internal"},{"content":"Nexus","url":"/opendevstack/latest/nexus/administration.html","urlType":"internal"},{"content":"Jenkins","url":"/opendevstack/latest/jenkins/administration.html","urlType":"internal"},{"content":"Image Lifecycles","url":"/opendevstack/latest/administration/image-lifecycle.html","urlType":"internal"}]}],"root":true,"order":6},{"items":[{"content":"Contributing to ODS","items":[{"content":"Development","url":"/opendevstack/latest/contributing/development.html","urlType":"internal"},{"content":"Documentation","url":"/opendevstack/latest/contributing/documentation.html","urlType":"internal"},{"content":"Provisioning App","url":"/opendevstack/latest/provisioning-app/architecture.html","urlType":"internal"}]}],"root":true,"order":7}]},"opendevstack/3.x":{"displayVersion":"3.x","title":"OpenDevStack","version":"3.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/3.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/3.x/jenkins-shared-library/index.html","urlType":"internal","items":[{"content":"Component Pipeline","url":"/opendevstack/3.x/jenkins-shared-library/component-pipeline.html","urlType":"internal"},{"content":"Orchestration Pipeline","url":"/opendevstack/3.x/jenkins-shared-library/orchestration-pipeline.html","urlType":"internal"},{"content":"Quickstarter Pipeline","url":"/opendevstack/3.x/jenkins-shared-library/quickstarter-pipeline.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/3.x/quickstarters/index.html","urlType":"internal","items":[{"content":"Docker Plain","url":"/opendevstack/3.x/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Gateway/Nginx","url":"/opendevstack/3.x/quickstarters/be-gateway-nginx.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/3.x/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java/Spring Boot","url":"/opendevstack/3.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE TypeScript/Express","url":"/opendevstack/3.x/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python/Flask","url":"/opendevstack/3.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Scala/Play","url":"/opendevstack/3.x/quickstarters/be-scala-play.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/3.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/3.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"Data Science Machine Learning Service","url":"/opendevstack/3.x/quickstarters/ds-ml-service.html","urlType":"internal"},{"content":"Data Science Jupyter Notebook","url":"/opendevstack/3.x/quickstarters/ds-jupyter-notebook.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/3.x/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Cypress E2E testing","url":"/opendevstack/3.x/quickstarters/e2e-cypress.html","urlType":"internal"},{"content":"Spock, Geb and Unirest E2E testing","url":"/opendevstack/3.x/quickstarters/e2e-spock-geb.html","urlType":"internal"},{"content":"Release Manager","url":"/opendevstack/3.x/quickstarters/release-manager.html","urlType":"internal"},{"content":"Jenkins agent Images","items":[{"content":"Base Image","url":"/opendevstack/3.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Go","url":"/opendevstack/3.x/jenkins-agents/golang.html","urlType":"internal"},{"content":"Maven","url":"/opendevstack/3.x/jenkins-agents/maven.html","urlType":"internal"},{"content":"Nodejs10 Angular","url":"/opendevstack/3.x/jenkins-agents/nodejs10-angular.html","urlType":"internal"},{"content":"Python","url":"/opendevstack/3.x/jenkins-agents/python.html","urlType":"internal"},{"content":"Scala","url":"/opendevstack/3.x/jenkins-agents/scala.html","urlType":"internal"}]},{"content":"Authoring Quickstarters","url":"/opendevstack/3.x/quickstarters/authoring-quickstarters.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/3.x/provisioning-app/index.html","urlType":"internal"}],"root":true,"order":2},{"items":[{"content":"Jenkins","url":"/opendevstack/3.x/jenkins/index.html","urlType":"internal","items":[{"content":"Jenkins Master","url":"/opendevstack/3.x/jenkins/master.html","urlType":"internal"},{"content":"Jenkins Agent Base","url":"/opendevstack/3.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Webhook Proxy","url":"/opendevstack/3.x/jenkins/webhook-proxy.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"SonarQube","url":"/opendevstack/3.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":4},{"items":[{"content":"Update Guides","items":[{"content":"Migrate to 3.x","url":"/opendevstack/3.x/update-guides/3x.html","urlType":"internal"},{"content":"Migrate to 2.x","url":"/opendevstack/3.x/update-guides/2x.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"Administration","items":[{"content":"Installation","url":"/opendevstack/3.x/administration/installation.html","urlType":"internal"},{"content":"Upgrade","items":[{"content":"2.x to 3.x","url":"/opendevstack/3.x/administration/update-2-to-3.html","urlType":"internal"},{"content":"older","url":"/opendevstack/3.x/administration/update-older.html","urlType":"internal"}]},{"content":"Provisioning App","url":"/opendevstack/3.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Keycloak","url":"/opendevstack/3.x/administration/keycloak.html","urlType":"internal"},{"content":"SonarQube","url":"/opendevstack/3.x/sonarqube/administration.html","urlType":"internal"},{"content":"Jenkins","url":"/opendevstack/3.x/jenkins/administration.html","urlType":"internal"}]}],"root":true,"order":6},{"items":[{"content":"Contributing to ODS","items":[{"content":"Development","url":"/opendevstack/3.x/contributing/development.html","urlType":"internal"},{"content":"Documentation","url":"/opendevstack/3.x/contributing/documentation.html","urlType":"internal"},{"content":"Provisioning App","url":"/opendevstack/3.x/provisioning-app/architecture.html","urlType":"internal"}]}],"root":true,"order":7}]},"opendevstack/2.x":{"displayVersion":"2.x","title":"OpenDevStack","version":"2.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/2.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/2.x/jenkins-shared-library/index.html","urlType":"internal"}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/2.x/quickstarters/index.html","urlType":"internal","items":[{"content":"BE Docker Plain","url":"/opendevstack/2.x/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/2.x/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java / Spring Boot","url":"/opendevstack/2.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE Node Express","url":"/opendevstack/2.x/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python Flask","url":"/opendevstack/2.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Scala Akka","url":"/opendevstack/2.x/quickstarters/be-scala-akka.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/2.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/2.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"FE React","url":"/opendevstack/2.x/quickstarters/fe-react.html","urlType":"internal"},{"content":"FE Vue","url":"/opendevstack/2.x/quickstarters/fe-vue.html","urlType":"internal"},{"content":"Data Science Machine Learning Service","url":"/opendevstack/2.x/quickstarters/ds-ml-service.html","urlType":"internal"},{"content":"Data Science Jupyter Notebook","url":"/opendevstack/2.x/quickstarters/ds-jupyter-notebook.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/2.x/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Airflow","url":"/opendevstack/2.x/quickstarters/airflow-cluster.html","urlType":"internal"},{"content":"Cypress E2E testing Quickstarters","url":"/opendevstack/2.x/quickstarters/e2e-cypress.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/2.x/provisioning-app/index.html","urlType":"internal","items":[{"content":"Configuration Guide","url":"/opendevstack/2.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Internal Architecture","url":"/opendevstack/2.x/provisioning-app/architecture.html","urlType":"internal"},{"content":"FAQ","url":"/opendevstack/2.x/provisioning-app/faq.html","urlType":"internal"},{"content":"Upgrade Notes","url":"/opendevstack/2.x/provisioning-app/upgrade_notes.html","urlType":"internal"}]}],"root":true,"order":2},{"items":[{"content":"Local Installation","url":"/opendevstack/2.x/local-installation.html","urlType":"internal","items":[{"content":"System and Environment Requirements","url":"/opendevstack/2.x/sysenv-requirements.html","urlType":"internal"},{"content":"Infrastructure Setup","url":"/opendevstack/2.x/infrastructure-setup.html","urlType":"internal"},{"content":"Troubleshooting","url":"/opendevstack/2.x/troubleshooting.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"Jenkins","url":"/opendevstack/2.x/jenkins/index.html","urlType":"internal","items":[{"content":"Webhook Proxy","url":"/opendevstack/2.x/jenkins/webhook-proxy.html","urlType":"internal"},{"content":"Jenkins Slave Base Image","url":"/opendevstack/2.x/jenkins/slave-base.html","urlType":"internal"}]}],"root":true,"order":4},{"items":[{"content":"SonarQube","url":"/opendevstack/2.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":5}]},"opendevstack/1.x":{"displayVersion":"1.x","title":"OpenDevStack","version":"1.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/1.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/1.x/jenkins-shared-library/index.html","urlType":"internal"}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/1.x/quickstarters/index.html","urlType":"internal","items":[{"content":"BE Docker Plain","url":"/opendevstack/1.x/quickstarters/be-docker-plain.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/1.x/quickstarters/be-golang.html","urlType":"internal"},{"content":"BE Java / Spring Boot","url":"/opendevstack/1.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE Node Express","url":"/opendevstack/1.x/quickstarters/be-node-express.html","urlType":"internal"},{"content":"BE Python Flask","url":"/opendevstack/1.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Scala Akka","url":"/opendevstack/1.x/quickstarters/be-scala-akka.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/1.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/1.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"FE React","url":"/opendevstack/1.x/quickstarters/fe-react.html","urlType":"internal"},{"content":"FE Vue","url":"/opendevstack/1.x/quickstarters/fe-vue.html","urlType":"internal"},{"content":"Data Science Machine Learning Service","url":"/opendevstack/1.x/quickstarters/ds-ml-service.html","urlType":"internal"},{"content":"Data Science Jupyter Notebook","url":"/opendevstack/1.x/quickstarters/ds-jupyter-notebook.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/1.x/quickstarters/ds-rshiny-app.html","urlType":"internal"},{"content":"Airflow","url":"/opendevstack/1.x/quickstarters/airflow.html","urlType":"internal"},{"content":"Cypress E2E testing Quickstarters","url":"/opendevstack/1.x/quickstarters/e2e-cypress.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/1.x/provisioning-app/index.html","urlType":"internal","items":[{"content":"Configuration Guide","url":"/opendevstack/1.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Internal Architecture","url":"/opendevstack/1.x/provisioning-app/architecture.html","urlType":"internal"},{"content":"FAQ","url":"/opendevstack/1.x/provisioning-app/faq.html","urlType":"internal"},{"content":"Upgrade Notes","url":"/opendevstack/1.x/provisioning-app/upgrade_notes.html","urlType":"internal"}]}],"root":true,"order":2},{"items":[{"content":"Local Installation","url":"/opendevstack/1.x/local-installation.html","urlType":"internal","items":[{"content":"System and Environment Requirements","url":"/opendevstack/1.x/sysenv-requirements.html","urlType":"internal"},{"content":"Infrastructure Setup","url":"/opendevstack/1.x/infrastructure-setup.html","urlType":"internal"},{"content":"Troubleshooting","url":"/opendevstack/1.x/troubleshooting.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"Jenkins","url":"/opendevstack/1.x/jenkins/index.html","urlType":"internal","items":[{"content":"Webhook Proxy","url":"/opendevstack/1.x/jenkins/webhook-proxy.html","urlType":"internal"},{"content":"Jenkins Slave Base Image","url":"/opendevstack/1.x/jenkins/slave-base.html","urlType":"internal"}]}],"root":true,"order":4},{"items":[{"content":"Shared Images","items":[{"content":"OpenResty Base image + WAF","url":"/opendevstack/1.x/shared-images/openresty-nginx.html","urlType":"internal"},{"content":"Crowd Authproxy","url":"/opendevstack/1.x/shared-images/nginx-authproxy-crowd.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"SonarQube","url":"/opendevstack/1.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":6}]}}}}) \ No newline at end of file +antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1-1",[0,39.238,1,51.636]],["name/1-1",[]],["text/1-1",[]],["component/1-1",[]],["title/1",[2,44.313,3,31.597]],["name/1",[2,0.789,3,0.563]],["text/1",[0,2.842,1,6.745,2,1.976,3,4.127,4,1.924,5,1.42,6,1.66,7,0.849,8,1.724,9,3.707,10,2.216,11,6.166,12,4.598,13,1.126,14,1.431,15,1.772,16,3.644,17,4.289,18,4.857,19,2.06,20,1.924,21,3.064,22,2.735,23,1.549,24,2.992,25,2.504,26,1.388,27,3.064,28,2.906,29,2.159,30,3.048,31,1.859,32,2.248,33,3.574,34,2.408,35,2.978,36,1.504,37,2.022,38,1.886,39,3.064,40,1.143,41,3.064,42,1.513,43,2.786,44,3.064,45,2.501,46,2.419,47,3.064,48,4.43,49,2.394,50,5.958,51,3.064,52,1.594,53,3.064,54,3.048,55,3.064,56,3.356,57,3.109,58,3.41,59,3.064,60,3.41,61,3.064,62,2.843,63,2.159,64,4.018,65,2.263,66,3.064,67,3.064,68,2.01,69,2.504,70,2.607,71,1.794,72,3.064,73,3.064,74,2.735,75,2.607,76,2.086,77,1.934]],["component/1",[7,0.401]],["title/2-1",[78,56.976]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[45,41.22]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[79,41.345]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2-4",[80,62.807]],["name/2-4",[]],["text/2-4",[]],["component/2-4",[]],["title/2-5",[81,84.764]],["name/2-5",[]],["text/2-5",[]],["component/2-5",[]],["title/2-6",[11,37.709,12,34.172,82,44.029]],["name/2-6",[]],["text/2-6",[]],["component/2-6",[]],["title/2-7",[83,47.73,84,18.35,85,52.752]],["name/2-7",[]],["text/2-7",[]],["component/2-7",[]],["title/2-8",[9,61.1]],["name/2-8",[]],["text/2-8",[]],["component/2-8",[]],["title/2-9",[3,27.183,32,26.708,42,29.179]],["name/2-9",[]],["text/2-9",[]],["component/2-9",[]],["title/2-10",[86,46.845]],["name/2-10",[]],["text/2-10",[]],["component/2-10",[]],["title/2-11",[2,44.313,87,48.06]],["name/2-11",[]],["text/2-11",[]],["component/2-11",[]],["title/2-12",[11,37.709,12,34.172,88,20.111]],["name/2-12",[]],["text/2-12",[]],["component/2-12",[]],["title/2-13",[11,43.832,48,42.087]],["name/2-13",[]],["text/2-13",[]],["component/2-13",[]],["title/2-14",[29,25.643,88,20.111,89,52.752]],["name/2-14",[]],["text/2-14",[]],["component/2-14",[]],["title/2-15",[82,38.632,90,26.141,91,33.087,92,34.857]],["name/2-15",[]],["text/2-15",[]],["component/2-15",[]],["title/2-16",[10,23.093,48,31.77,90,26.141,93,32.738]],["name/2-16",[]],["text/2-16",[]],["component/2-16",[]],["title/2-17",[76,35.306,88,17.646,90,26.141,94,34.226]],["name/2-17",[]],["text/2-17",[]],["component/2-17",[]],["title/2-18",[90,29.793,95,42.597,96,31.151]],["name/2-18",[]],["text/2-18",[]],["component/2-18",[]],["title/2-19",[90,26.141,97,37.981,98,36.81,99,28.096]],["name/2-19",[]],["text/2-19",[]],["component/2-19",[]],["title/2-20",[90,26.141,100,47.149,101,27.899,102,31.619]],["name/2-20",[]],["text/2-20",[]],["component/2-20",[]],["title/2-21",[90,26.141,103,42.927,104,28.716,105,24.225]],["name/2-21",[]],["text/2-21",[]],["component/2-21",[]],["title/2-22",[48,28.301,90,23.287,106,32.55,107,35.376,108,35.376]],["name/2-22",[]],["text/2-22",[]],["component/2-22",[]],["title/2-23",[48,42.087,88,23.377]],["name/2-23",[]],["text/2-23",[]],["component/2-23",[]],["title/2-24",[88,23.377,109,62.461]],["name/2-24",[]],["text/2-24",[]],["component/2-24",[]],["title/2-25",[7,16.382,110,30.353,111,36.036]],["name/2-25",[]],["text/2-25",[]],["component/2-25",[]],["title/2-26",[110,30.353,112,30.163,113,28.207]],["name/2-26",[]],["text/2-26",[]],["component/2-26",[]],["title/2-27",[102,36.036,110,30.353,111,36.036]],["name/2-27",[]],["text/2-27",[]],["component/2-27",[]],["title/2-28",[48,36.208,105,27.609,110,30.353]],["name/2-28",[]],["text/2-28",[]],["component/2-28",[]],["title/2-29",[52,35.736,114,77.717]],["name/2-29",[]],["text/2-29",[]],["component/2-29",[]],["title/2-30",[29,25.643,88,20.111,89,52.752]],["name/2-30",[]],["text/2-30",[]],["component/2-30",[]],["title/2-31",[48,36.208,88,20.111,115,37.709]],["name/2-31",[]],["text/2-31",[]],["component/2-31",[]],["title/2-32",[110,35.281,116,41.887]],["name/2-32",[]],["text/2-32",[]],["component/2-32",[]],["title/2-33",[7,14.374,52,26.976,117,23.67,118,19.133]],["name/2-33",[]],["text/2-33",[]],["component/2-33",[]],["title/2-34",[52,21.665,92,27.995,110,21.389,112,21.255,113,19.877,119,31.893]],["name/2-34",[]],["text/2-34",[]],["component/2-34",[]],["title/2-35",[11,43.832,54,42.087]],["name/2-35",[]],["text/2-35",[]],["component/2-35",[]],["title/2-36",[29,25.643,88,20.111,89,52.752]],["name/2-36",[]],["text/2-36",[]],["component/2-36",[]],["title/2-37",[3,21.247,90,23.287,91,29.474,105,21.58,120,30.31]],["name/2-37",[]],["text/2-37",[]],["component/2-37",[]],["title/2-38",[82,34.414,90,23.287,92,31.051,93,29.164,121,28.72]],["name/2-38",[]],["text/2-38",[]],["component/2-38",[]],["title/2-39",[17,19.106,18,20.931,90,20.995,94,27.488,102,25.393,122,30.76]],["name/2-39",[]],["text/2-39",[]],["component/2-39",[]],["title/2-40",[17,19.106,18,20.931,90,20.995,95,30.017,123,31.893,124,34.475]],["name/2-40",[]],["text/2-40",[]],["component/2-40",[]],["title/2-41",[56,27.706,88,17.646,90,26.141,97,37.981]],["name/2-41",[]],["text/2-41",[]],["component/2-41",[]],["title/2-42",[88,20.111,99,32.021,113,28.207]],["name/2-42",[]],["text/2-42",[]],["component/2-42",[]],["title/2-43",[110,35.281,116,41.887]],["name/2-43",[]],["text/2-43",[]],["component/2-43",[]],["title/2-44",[105,27.609,110,30.353,115,37.709]],["name/2-44",[]],["text/2-44",[]],["component/2-44",[]],["title/2-45",[11,43.832,60,47.08]],["name/2-45",[]],["text/2-45",[]],["component/2-45",[]],["title/2-46",[29,25.643,88,20.111,89,52.752]],["name/2-46",[]],["text/2-46",[]],["component/2-46",[]],["title/2-47",[17,21.192,18,23.217,60,31.658,90,23.287,91,29.474]],["name/2-47",[]],["text/2-47",[]],["component/2-47",[]],["title/2-48",[90,26.141,93,32.738,110,26.632,125,26.717]],["name/2-48",[]],["text/2-48",[]],["component/2-48",[]],["title/2-49",[82,38.632,90,26.141,92,34.857,94,34.226]],["name/2-49",[]],["text/2-49",[]],["component/2-49",[]],["title/2-50",[76,31.451,88,15.719,90,23.287,95,33.294,126,36.88]],["name/2-50",[]],["text/2-50",[]],["component/2-50",[]],["title/2-51",[76,35.306,88,17.646,90,26.141,97,37.981]],["name/2-51",[]],["text/2-51",[]],["component/2-51",[]],["title/2-52",[90,26.141,100,47.149,127,36.81,128,32.911]],["name/2-52",[]],["text/2-52",[]],["component/2-52",[]],["title/2-53",[88,15.719,90,23.287,103,38.239,113,22.047,129,24.03]],["name/2-53",[]],["text/2-53",[]],["component/2-53",[]],["title/2-54",[88,14.172,90,20.995,102,25.393,106,29.346,122,30.76,130,27.821]],["name/2-54",[]],["text/2-54",[]],["component/2-54",[]],["title/2-55",[88,20.111,99,32.021,113,28.207]],["name/2-55",[]],["text/2-55",[]],["component/2-55",[]],["title/2-56",[110,35.281,116,41.887]],["name/2-56",[]],["text/2-56",[]],["component/2-56",[]],["title/2-57",[7,14.374,32,23.434,42,25.602,87,36.279]],["name/2-57",[]],["text/2-57",[]],["component/2-57",[]],["title/2-58",[131,84.764]],["name/2-58",[]],["text/2-58",[]],["component/2-58",[]],["title/2-59",[132,71,133,46.178]],["name/2-59",[]],["text/2-59",[]],["component/2-59",[]],["title/2-60",[134,33.036]],["name/2-60",[]],["text/2-60",[]],["component/2-60",[]],["title/2-61",[33,39.082,113,32.787]],["name/2-61",[]],["text/2-61",[]],["component/2-61",[]],["title/2-62",[135,37.916]],["name/2-62",[]],["text/2-62",[]],["component/2-62",[]],["title/2-63",[87,32.317,136,13.368,137,24.766,138,23.078,139,18.53]],["name/2-63",[]],["text/2-63",[]],["component/2-63",[]],["title/2-64",[16,50.316,88,23.377]],["name/2-64",[]],["text/2-64",[]],["component/2-64",[]],["title/2-65",[88,17.646,140,58.665,141,40.946,142,30.762]],["name/2-65",[]],["text/2-65",[]],["component/2-65",[]],["title/2-66",[13,25.254,105,32.092]],["name/2-66",[]],["text/2-66",[]],["component/2-66",[]],["title/2-67",[29,29.806,143,41.69]],["name/2-67",[]],["text/2-67",[]],["component/2-67",[]],["title/2-68",[110,30.353,139,23.708,144,28.362]],["name/2-68",[]],["text/2-68",[]],["component/2-68",[]],["title/2-69",[7,16.382,145,42.597,146,34.906]],["name/2-69",[]],["text/2-69",[]],["component/2-69",[]],["title/2",[147,48.764,148,25.631]],["name/2",[10,0.545,42,0.604]],["text/2",[2,0.799,3,1.439,4,0.168,6,1.863,7,1.916,8,1.269,9,0.923,10,2.43,11,2.874,12,1.809,13,1.029,14,0.361,15,0.155,16,2.173,17,1.436,18,0.507,19,0.18,20,0.33,28,0.254,29,0.983,32,1.265,33,0.83,34,1.436,36,0.379,37,0.177,38,0.323,40,0.544,42,1.976,43,0.477,45,0.507,48,3.564,50,0.498,52,2.15,54,2.61,56,0.28,57,0.482,58,0.183,60,2.252,63,1.028,68,0.957,69,0.219,70,1.764,71,0.854,74,0.689,75,0.859,76,1.277,77,0.782,79,0.389,80,1.117,81,0.542,82,2.561,83,0.815,84,0.644,85,0.468,86,0.441,87,1.713,88,1.757,89,0.689,90,1.412,92,1.522,96,0.769,98,1.472,99,2.905,101,1.596,102,2.673,104,0.559,105,2.505,107,0.948,108,0.591,109,0.477,110,2.803,111,4.529,112,0.137,113,3.269,115,2.467,116,2.358,117,2.213,118,1.477,119,0.402,122,1.077,125,0.27,126,3.87,128,0.641,129,0.644,130,0.827,131,1.508,132,0.277,133,0.353,134,1.766,135,0.773,136,0.223,137,0.281,139,0.497,141,0.211,142,0.735,143,1.138,144,0.7,146,0.31,148,0.462,149,0.303,150,0.126,151,0.394,152,0.597,153,0.222,154,0.424,155,0.839,156,0.303,157,3.953,158,0.454,159,0.303,160,0.745,161,1.348,162,0.211,163,0.15,164,0.683,165,1.224,166,2.195,167,0.477,168,0.837,169,0.644,170,0.832,171,1.295,172,1.711,173,0.303,174,0.231,175,0.303,176,0.303,177,0.268,178,1.416,179,0.203,180,0.679,181,0.216,182,0.268,183,0.12,184,0.498,185,0.586,186,0.31,187,0.958,188,0.507,189,0.778,190,0.179,191,0.803,192,0.951,193,0.303,194,1.879,195,0.36,196,0.685,197,1.891,198,0.303,199,1.959,200,0.739,201,0.209,202,0.225,203,0.509,204,0.243,205,0.231,206,1.152,207,0.239,208,0.254,209,0.205,210,0.303,211,1.299,212,0.303,213,0.303,214,1.119,215,0.603,216,0.303,217,0.303,218,0.303,219,0.303,220,0.603,221,0.199,222,0.689,223,0.239,224,0.291,225,0.216,226,0.717,227,0.196,228,0.152,229,0.303,230,0.26,231,1.117,232,0.468,233,0.732,234,0.778,235,0.268,236,0.128,237,0.594,238,0.424,239,0.141,240,0.623,241,0.468,242,0.216,243,1.894,244,0.303,245,0.402,246,0.248,247,2.778,248,0.565,249,0.307,250,0.207,251,0.146,252,0.626,253,0.384,254,0.201,255,0.941,256,0.254,257,0.26,258,0.225,259,0.268,260,0.219,261,0.248,262,1.461,263,0.415,264,1.183,265,0.199,266,0.222,267,0.644,268,0.186,269,0.303,270,0.886,271,0.141,272,0.475,273,0.239,274,0.594,275,0.429,276,0.303,277,0.805,278,0.969,279,0.63,280,0.845,281,0.873,282,0.177,283,0.176,284,1.65,285,0.44,286,0.172,287,0.211,288,0.239,289,0.225,290,0.594,291,1.142,292,1.692,293,0.362,294,4.003,295,0.303,296,0.355,297,1.161,298,0.594,299,0.303,300,0.199,301,1.496,302,0.303,303,0.303,304,0.616,305,0.303,306,0.303,307,0.303,308,0.24,309,0.498,310,1.142,311,0.596,312,0.303,313,2.02,314,0.268,315,1.068,316,0.666,317,0.205,318,0.873,319,0.678,320,1.686,321,1.671,322,0.789,323,1.65,324,0.214,325,0.187,326,1.142,327,1.069,328,0.225,329,0.303,330,0.9,331,0.591,332,0.235,333,0.176,334,0.303,335,1.078,336,1.671,337,0.248,338,0.222,339,0.303,340,1.646,341,0.339,342,1.28,343,0.789,344,0.239,345,0.901,346,0.836,347,1.069,348,0.9,349,2.364,350,0.473,351,0.262,352,0.214,353,0.254,354,0.178,355,0.893,356,0.458,357,0.49,358,0.303,359,1.891,360,0.825,361,1.262,362,0.303,363,0.303,364,0.594,365,1.142,366,0.594,367,0.873,368,0.594,369,0.303,370,0.303,371,0.594,372,1.142,373,0.303,374,0.216,375,0.193,376,0.303,377,0.725,378,0.205,379,1.105,380,0.873,381,0.772,382,0.772,383,1.65,384,0.716,385,1.142,386,0.628,387,0.873,388,0.666,389,0.268,390,0.772,391,0.439,392,0.772,393,0.277,394,0.19,395,0.189,396,0.26,397,0.859,398,0.219,399,0.303,400,0.303,401,0.136,402,0.131,403,0.214,404,0.239,405,0.26,406,0.705,407,0.303,408,0.309,409,0.303,410,0.303,411,0.228,412,0.398,413,0.248,414,0.225,415,0.199,416,0.303,417,0.303,418,0.453,419,0.594,420,0.41,421,0.162,422,0.594,423,1.142,424,0.211,425,0.268,426,0.277,427,0.303,428,0.468,429,0.201,430,0.205,431,0.342,432,0.231,433,0.303,434,0.268,435,0.303,436,0.487,437,0.594,438,0.211,439,0.49,440,0.373,441,0.357,442,0.211,443,0.46,444,0.303,445,0.186,446,0.151,447,0.277,448,0.303,449,0.326,450,0.198,451,0.296,452,0.207,453,0.542,454,0.303,455,0.292,456,0.303,457,0.211,458,0.186,459,0.362,460,0.128,461,0.468,462,0.303,463,0.303,464,0.186,465,0.126,466,0.171,467,1.671,468,0.89,469,0.303,470,1.921,471,0.303,472,0.873,473,0.303,474,0.205,475,0.26,476,0.677,477,0.303,478,0.44,479,1.401,480,0.248,481,2.801,482,1.522,483,1.824,484,0.384,485,0.303,486,0.362,487,1.018,488,0.303,489,0.303,490,0.303,491,0.303,492,0.205,493,0.468,494,0.303,495,1.401,496,0.303,497,0.303,498,0.303,499,0.303,500,1.332,501,0.303,502,0.617,503,0.51,504,1.65,505,0.189,506,0.623,507,0.594,508,0.174,509,0.701,510,0.277,511,0.239,512,0.303,513,0.239,514,0.401,515,0.303,516,0.248,517,0.175,518,0.402,519,0.591,520,0.209,521,0.196,522,0.277,523,0.178,524,0.303,525,0.262,526,0.239,527,0.303,528,0.169,529,0.303,530,0.303,531,0.146,532,0.398,533,0.303,534,0.303,535,0.303,536,0.225,537,0.303,538,0.228,539,0.222,540,0.303,541,0.231,542,0.268,543,0.303,544,1.043,545,0.58,546,0.222,547,0.253,548,0.195,549,0.151,550,0.303,551,0.303,552,0.122,553,0.18,554,0.303,555,0.303,556,0.18,557,0.174,558,0.205]],["component/2",[7,0.401]],["title/3",[32,26.708,45,29.703,130,39.481]],["name/3",[45,0.615,559,1.223]],["text/3",[11,7.147,16,5.09,26,3.148,45,3.492,48,4.257,52,3.615,54,4.257,60,4.762,77,5.752,91,4.434,155,4.112,191,2.974,232,6.202,560,6.95,561,6.95,562,6.95,563,6.95,564,7.182,565,7.861,566,6.95,567,5.374,568,6.95]],["component/3",[7,0.401]],["title/4-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/4-1",[]],["text/4-1",[]],["component/4-1",[]],["title/4-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/4-2",[]],["text/4-2",[]],["component/4-2",[]],["title/4-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/4-3",[]],["text/4-3",[]],["component/4-3",[]],["title/4-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/4-4",[]],["text/4-4",[]],["component/4-4",[]],["title/4-5",[148,25.631,582,61.318]],["name/4-5",[]],["text/4-5",[]],["component/4-5",[]],["title/4-6",[84,9.983,136,9.304,137,17.238,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156]],["name/4-6",[]],["text/4-6",[]],["component/4-6",[]],["title/4-7",[586,53.814]],["name/4-7",[]],["text/4-7",[]],["component/4-7",[]],["title/4",[587,73.205]],["name/4",[587,1.949]],["text/4",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,137,1.771,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303]],["component/4",[7,0.401]],["title/5-1",[7,22.734]],["name/5-1",[]],["text/5-1",[]],["component/5-1",[]],["title/5-2",[4,43.146,7,19.043]],["name/5-2",[]],["text/5-2",[]],["component/5-2",[]],["title/5-3",[239,31.151,308,27.045,629,59.109]],["name/5-3",[]],["text/5-3",[]],["component/5-3",[]],["title/5-4",[7,19.043,8,18.856]],["name/5-4",[]],["text/5-4",[]],["component/5-4",[]],["title/5-5",[7,14.374,104,28.716,117,23.67,118,19.133]],["name/5-5",[]],["text/5-5",[]],["component/5-5",[]],["title/5-6",[118,21.806,402,14.783,583,37.119]],["name/5-6",[]],["text/5-6",[]],["component/5-6",[]],["title/5-7",[402,17.184,630,46.471]],["name/5-7",[]],["text/5-7",[]],["component/5-7",[]],["title/5-8",[14,27.609,183,26.577,349,34.906]],["name/5-8",[]],["text/5-8",[]],["component/5-8",[]],["title/5",[7,19.043,78,47.724]],["name/5",[631,1.45]],["text/5",[2,1.51,5,1.085,7,0.649,8,1.092,9,1.745,11,1.494,13,2.52,14,3.202,17,1.825,24,1.408,29,1.726,32,1.058,34,2.511,52,2.07,57,1.463,71,1.371,84,0.727,86,1.337,104,1.297,105,2.858,112,2.031,117,3.129,118,3.331,125,2.05,126,1.869,129,1.218,134,1.603,136,1.984,138,1.17,139,1.596,144,1.909,148,1.936,150,1.1,153,1.938,155,1.609,160,2.392,161,3.211,163,1.312,178,1.354,181,1.891,186,2.35,196,1.869,214,0.998,224,1.297,226,1.662,234,1.471,247,2.675,264,0.885,275,1.302,280,2.012,282,1.546,286,2.552,292,1.414,296,2.386,301,1.066,308,3.136,315,1.715,316,1.26,320,1.502,338,1.938,401,2.018,402,1.53,421,1.421,445,1.627,455,2.884,458,1.627,460,1.118,514,1.58,523,1.555,525,1.17,526,3.551,552,1.063,557,2.581,580,1.51,604,1.435,632,2.518,633,2.342,634,2.342,635,2.277,636,3.691,637,2.055,638,2.342,639,2.518,640,2.09,641,2.172,642,2.055,643,2.09,644,2.129,645,2.172,646,2.277,647,2.709,648,2.342,649,2.022,650,2.342,651,3.979,652,2.172,653,2.649,654,1.83,655,2.518,656,2.462,657,2.342,658,2.277,659,1.938,660,2.277,661,2.09,662,2.129,663,2.939,664,2.055,665,2.301,666,1.564,667,3.979,668,1.354,669,2.42,670,2.371,671,2.342,672,1.73,673,1.292,674,3.8,675,1.73,676,1.73,677,1.616,678,2.567,679,1.048,680,1.322,681,1.745,682,1.365,683,1.389,684,1.322,685,2.649,686,1.023]],["component/5",[7,0.401]],["title/6-1",[136,19.88,684,38.775]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[88,23.377,142,40.753]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[6,32.021,687,44.832,688,51.858]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[411,58.446,689,52.112]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[136,19.88,137,36.831]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6-6",[487,33.721,680,38.775]],["name/6-6",[]],["text/6-6",[]],["component/6-6",[]],["title/6-7",[236,39.251]],["name/6-7",[]],["text/6-7",[]],["component/6-7",[]],["title/6-8",[3,37.722]],["name/6-8",[]],["text/6-8",[]],["component/6-8",[]],["title/6",[136,23.734]],["name/6",[631,1.45]],["text/6",[0,1.019,3,1.446,4,1.12,5,0.827,6,2.283,7,0.494,8,0.863,12,1.031,15,1.031,17,2.657,18,0.896,29,1.364,30,0.865,32,0.806,34,1.521,35,1.067,36,2.493,38,1.935,40,0.665,52,1.635,54,1.093,57,1.964,68,1.17,69,1.458,77,3.206,84,0.554,86,1.795,88,1.728,91,1.138,93,1.126,99,2.283,110,0.916,112,0.91,113,1.5,117,2.318,121,1.109,123,1.366,125,0.919,133,2.113,134,1.266,135,2.678,136,2.563,137,3.106,138,1.57,139,2.768,142,1.864,148,0.665,155,2.343,157,1.565,160,1.072,166,1.191,171,2.228,172,2.765,178,1.031,179,1.353,183,0.802,192,1.015,196,1.476,211,1.023,214,3.289,226,2.231,248,0.999,249,1.044,252,0.902,264,0.674,272,1.098,283,1.17,286,1.144,294,1.784,297,1.103,301,0.812,308,1.928,309,1.692,319,0.829,327,1.54,331,1.84,333,1.17,335,1.15,340,1.199,377,1.84,381,1.784,391,1.015,402,0.446,411,1.517,412,1.353,421,1.082,443,1.063,446,1.003,455,1.747,458,1.239,487,2.843,505,1.257,509,2.927,536,3.535,547,0.861,548,2.283,549,2.369,552,0.81,556,1.199,557,1.157,583,1.974,593,0.95,608,1.027,612,1.592,622,2.538,636,1.654,663,2.321,665,1.031,668,1.817,673,1.734,674,1.306,679,1.886,680,3.607,682,1.04,683,1.058,684,1.774,689,1.353,690,1.214,691,1.654,692,2.017,693,2.017,694,1.191,695,2.792,696,1.565,697,1.163,698,1.053,699,1.784,700,1.784,701,2.017,702,1.784,703,1.784,704,1.784,705,1.34,706,2.199,707,1.784,708,2.534,709,1.784,710,2.017,711,2.154,712,1.257,713,1.784,714,1.784,715,2.017,716,1.592,717,1.44,718,1.784,719,1.114,720,1.734,721,2.017,722,4.214,723,0.767,724,1.621,725,1.784,726,1.214,727,1.692,728,1.103,729,1.248,730,1.44,731,1.54,732,3.037,733,1.34,734,1.393,735,3.061,736,2.113,737,1.692,738,1.592,739,1.918,740,1.565,741,1.23,742,1.379,743,1.126,744,1.353]],["component/6",[7,0.401]],["title/7-1",[78,56.976]],["name/7-1",[]],["text/7-1",[]],["component/7-1",[]],["title/7-2",[84,18.35,142,35.06,745,32.486]],["name/7-2",[]],["text/7-2",[]],["component/7-2",[]],["title/7",[136,15.007,137,27.802,214,22.092,264,19.605]],["name/7",[137,0.656,214,0.521]],["text/7",[8,2.362,30,2.459,34,2.452,86,2.894,105,2.367,117,3.344,118,1.869,129,2.635,135,3.387,136,2.12,137,3.928,142,5.105,144,2.431,155,2.963,168,2.905,183,2.278,214,2.158,249,2.966,264,1.915,278,3.364,391,2.882,487,2.487,514,2.012,536,4.25,630,3.427,666,3.384,717,4.091,719,3.166,720,4.926,726,3.449,743,3.198,746,2.33,747,5.731,748,5.731,749,5.731,750,5.731,751,4.375,752,4.876,753,5.731,754,2.452,755,4.375,756,3.808,757,5.067,758,4.194,759,5.731,760,3.843,761,5.731,762,4.141,763,4.194,764,3.918,765,3.958,766,3.711]],["component/7",[7,0.401]],["title/8-1",[52,30.744,350,36.208,680,33.358]],["name/8-1",[]],["text/8-1",[]],["component/8-1",[]],["title/8-2",[3,19.155,84,12.931,112,21.255,487,20.443,673,22.977,680,23.507]],["name/8-2",[]],["text/8-2",[]],["component/8-2",[]],["title/8-3",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/8-3",[]],["text/8-3",[]],["component/8-3",[]],["title/8-4",[502,40.851]],["name/8-4",[]],["text/8-4",[]],["component/8-4",[]],["title/8",[136,17.103,487,29.01,680,33.358]],["name/8",[487,0.6,680,0.69]],["text/8",[3,1.813,5,1.074,8,0.636,13,1.449,14,1.082,17,2.361,18,1.164,20,1.455,29,2.233,32,1.047,34,1.121,35,4.076,38,2.427,52,2.051,84,3.014,86,1.323,101,3.268,112,2.012,117,3.108,118,1.899,125,2.651,134,2.446,136,2.144,157,2.032,168,1.328,170,1.557,171,2.721,172,2.456,178,1.339,180,1.557,195,1.587,196,2.852,214,1.679,226,2.798,248,2.208,252,1.993,255,1.494,263,2.121,277,1.278,279,1.178,286,1.486,294,2.316,297,2.439,301,1.795,309,2.197,319,1.076,327,2,331,2.308,340,1.557,381,2.316,391,2.927,402,0.986,443,1.38,446,1.302,455,4.118,458,1.609,487,2.526,505,1.632,508,1.502,547,1.118,548,1.683,549,1.302,552,1.052,583,2.476,604,3.153,608,1.334,622,3.183,665,1.339,666,1.547,673,2.839,678,1.494,679,3.047,680,3.844,682,1.35,683,1.374,686,2.654,708,2.37,712,1.632,729,1.62,730,1.87,731,2,732,3.709,733,1.741,734,1.81,735,3.738,736,2.65,737,2.197,738,2.067,739,2.491,740,2.032,741,1.598,742,1.791,743,1.462,744,1.757,745,1.273,768,1.893,769,2.491,770,2.316,771,2.032,772,1.557,773,1.669,774,1.725,775,1.943,776,2.316,777,2.316,778,2.316,779,3.527,780,2.149,781,2.149,782,2.197,783,1.943,784,2.149,785,2.197,786,1.38,787,2.316,788,1.52,789,2.252,790,1.426]],["component/8",[7,0.401]],["title/9",[468,43.669]],["name/9",[631,1.45]],["text/9",[]],["component/9",[7,0.401]],["title/10",[139,27.557,144,32.968]],["name/10",[631,1.45]],["text/10",[791,10.218,792,10.218,793,12.497,794,9.034,795,10.218,796,7.487,797,7.487,798,7.487,799,10.218,800,10.218,801,7.487,802,7.487,803,7.487,804,7.487,805,7.487,806,7.487,807,12.497,808,7.487,809,7.487,810,7.487,811,7.487,812,7.487,813,7.487,814,7.487,815,7.487,816,7.487,817,7.487,818,7.487,819,7.487,820,7.487,821,7.487,822,7.487,823,7.487,824,7.487,825,7.487,826,7.487]],["component/10",[7,0.401]],["title/11-1",[32,31.045,35,41.118]],["name/11-1",[]],["text/11-1",[]],["component/11-1",[]],["title/11",[48,31.77,487,25.454,711,35.539,827,31.324]],["name/11",[48,0.52,544,0.878,545,0.639]],["text/11",[0,2.057,6,1.952,8,1.92,17,2.598,32,1.628,34,1.743,35,2.156,36,1.768,45,2.846,48,4.858,57,4.371,58,3.88,88,1.226,101,4.266,105,2.645,127,2.557,138,2.829,164,3.83,171,1.905,196,2.659,211,3.247,214,1.535,243,2.437,252,3.537,264,1.362,296,3.218,301,2.578,356,2.137,406,2.128,451,2.033,460,1.719,482,2.421,487,2.779,545,5.96,546,4.687,547,3.376,549,2.025,586,2.364,697,3.694,698,2.128,711,2.469,720,3.503,827,3.42,828,4.075,829,5.371,830,2.469,831,4.381,832,4.381,833,5.791,834,4.336,835,2.156,836,6.089,837,6.406,838,4.075,839,6.406,840,3.603,841,2.557,842,4.075,843,4.075,844,3.342,845,4.381,846,3.723,847,3.723,848,3.873,849,4.381,850,2.814,851,3.723,852,4.381,853,3.215,854,2.638,855,4.381,856,4.381,857,4.381,858,4.381]],["component/11",[7,0.401]],["title/12-1",[545,51.636,830,47.08]],["name/12-1",[]],["text/12-1",[]],["component/12-1",[]],["title/12-2",[546,56.867,830,47.08]],["name/12-2",[]],["text/12-2",[]],["component/12-2",[]],["title/12-3",[191,35.099]],["name/12-3",[]],["text/12-3",[]],["component/12-3",[]],["title/12-4",[161,19.905,439,29.317,545,34.721,847,47.743,859,31.451]],["name/12-4",[]],["text/12-4",[]],["component/12-4",[]],["title/12",[84,15.136,139,11.986,214,12.73,545,22.46,546,24.735,828,33.804,829,28.343,836,32.132,847,30.882]],["name/12",[545,0.919,829,1.16]],["text/12",[0,1.569,6,1.488,8,1.858,17,2.087,20,1.725,23,2.3,26,1.244,31,1.667,32,2.631,35,3.484,36,1.348,48,3.566,57,4.23,58,1.882,88,0.935,101,4.349,104,1.521,118,1.013,125,1.415,127,3.228,129,1.429,139,1.102,144,1.318,178,1.588,191,1.946,195,1.882,196,2.734,211,2.608,214,1.938,236,1.314,252,2.3,271,1.443,277,2.509,296,2.092,319,1.276,322,2.146,349,1.622,351,1.372,386,1.707,401,1.393,406,1.71,439,1.743,451,1.55,460,1.311,482,3.913,544,2.838,545,5.638,546,5.603,549,3.806,553,3.913,590,2.336,635,2.67,695,1.51,697,2.967,698,1.622,711,3.117,720,4.422,772,1.846,827,4.531,829,2.605,830,3.99,833,2.273,834,4.458,836,8.066,837,5.145,838,3.107,839,5.145,840,5.822,841,1.949,842,3.107,843,3.107,844,2.548,847,2.838,859,1.87,860,3.34,861,1.752,862,2.218,863,2.451,864,7.294,865,1.629,866,3.34,867,2.011,868,2.67,869,2.273,870,3.34,871,2.064,872,2.497,873,1.995,874,3.34,875,3.34,876,3.34,877,3.34,878,3.34,879,3.34,880,3.34,881,3.34,882,3.34,883,3.34,884,3.34,885,2.953,886,3.34,887,3.34,888,3.34]],["component/12",[7,0.401]],["title/13-1",[3,37.722]],["name/13-1",[]],["text/13-1",[]],["component/13-1",[]],["title/13-2",[102,50.007]],["name/13-2",[]],["text/13-2",[]],["component/13-2",[]],["title/13-3",[139,23.708,296,27.183,514,23.467]],["name/13-3",[]],["text/13-3",[]],["component/13-3",[]],["title/13-4",[90,23.287,391,26.28,859,31.451,889,30.859,890,32.091]],["name/13-4",[]],["text/13-4",[]],["component/13-4",[]],["title/13",[135,37.916]],["name/13",[631,1.45]],["text/13",[3,1.389,5,1.4,8,0.829,10,2.19,14,2.297,17,1.386,29,1.31,31,1.833,37,1.993,38,1.859,40,1.127,79,1.523,84,2.77,86,2.809,88,1.673,107,3.766,112,2.51,113,2.969,117,1.379,118,1.114,122,2.231,134,1.981,135,3.649,136,0.874,142,2.917,148,1.127,152,2.336,155,1.222,178,1.746,183,2.797,196,1.418,243,4.208,248,1.692,249,1.769,251,1.648,252,3.145,253,2.212,254,2.27,263,1.625,275,1.679,296,2.262,313,4.235,319,2.891,320,1.938,328,2.534,342,3.122,351,1.509,356,1.792,377,1.769,391,2.798,439,3.948,443,1.8,451,1.705,502,1.504,509,4.321,514,2.47,548,4.519,549,3.497,552,1.372,556,4.819,593,1.608,597,1.897,619,2.25,668,2.843,683,1.792,689,2.291,711,3.37,712,3.465,719,1.887,743,1.907,764,2.336,833,2.5,859,2.056,891,3.021,892,3.021,893,2.194,894,2.212,895,2.5,896,2.144,897,2.865,898,2.608,899,3.021,900,2.177,901,2.865,902,2.865,903,1.897,904,2.534,905,3.417,906,3.021,907,2.411,908,3.021,909,2.336,910,2.043,911,3.122,912,5.563,913,2.65,914,3.417,915,3.417,916,3.417]],["component/13",[7,0.401]],["title/14-1",[236,39.251]],["name/14-1",[]],["text/14-1",[]],["component/14-1",[]],["title/14-2",[34,33.244,754,33.244]],["name/14-2",[]],["text/14-2",[]],["component/14-2",[]],["title/14-3",[917,67.039]],["name/14-3",[]],["text/14-3",[]],["component/14-3",[]],["title/14-4",[918,67.892]],["name/14-4",[]],["text/14-4",[]],["component/14-4",[]],["title/14-5",[919,77.795]],["name/14-5",[]],["text/14-5",[]],["component/14-5",[]],["title/14-6",[351,40.973]],["name/14-6",[]],["text/14-6",[]],["component/14-6",[]],["title/14-7",[394,48.764,754,33.244]],["name/14-7",[]],["text/14-7",[]],["component/14-7",[]],["title/14-8",[36,33.721,137,36.831]],["name/14-8",[]],["text/14-8",[]],["component/14-8",[]],["title/14-9",[191,35.099]],["name/14-9",[]],["text/14-9",[]],["component/14-9",[]],["title/14-10",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/14-10",[]],["text/14-10",[]],["component/14-10",[]],["title/14-11",[110,23.724,118,17.044,264,17.464,752,26.176,762,37.759]],["name/14-11",[]],["text/14-11",[]],["component/14-11",[]],["title/14-12",[754,39.689]],["name/14-12",[]],["text/14-12",[]],["component/14-12",[]],["title/14-13",[264,25.971,679,30.741]],["name/14-13",[]],["text/14-13",[]],["component/14-13",[]],["title/14-14",[752,33.489,754,28.6,762,48.309]],["name/14-14",[]],["text/14-14",[]],["component/14-14",[]],["title/14-15",[148,19.348,155,20.975,514,20.59,754,25.095]],["name/14-15",[]],["text/14-15",[]],["component/14-15",[]],["title/14-16",[135,27.323,752,33.489,754,28.6]],["name/14-16",[]],["text/14-16",[]],["component/14-16",[]],["title/14-17",[502,40.851]],["name/14-17",[]],["text/14-17",[]],["component/14-17",[]],["title/14-18",[923,82.026]],["name/14-18",[]],["text/14-18",[]],["component/14-18",[]],["title/14",[136,17.103,144,28.362,401,29.976]],["name/14",[631,1.45]],["text/14",[3,0.238,4,0.326,5,2.015,6,0.54,8,1.486,14,0.242,15,0.834,17,1.629,18,0.932,19,0.969,20,1.165,23,0.262,24,1.564,25,0.815,26,0.452,29,1.275,30,0.7,31,0.315,32,3.133,34,0.698,35,1.556,36,1.1,37,0.342,38,0.319,40,0.193,42,0.256,52,0.519,57,0.623,68,0.655,69,0.424,71,1.086,76,0.679,79,2.73,82,0.743,84,2.886,88,1.209,90,0.727,93,0.327,96,1.181,101,1.399,106,0.365,107,0.397,110,0.953,111,0.608,112,0.947,113,0.247,115,0.92,117,1.621,118,1.774,120,1.217,121,0.62,122,1.065,123,0.397,124,0.429,125,1.154,127,0.368,134,1.183,135,0.667,136,0.85,137,0.535,139,1.425,142,0.592,143,1.36,144,1.562,145,0.719,148,0.538,155,1.052,160,0.312,161,0.43,163,1.039,166,0.666,168,0.297,169,0.92,171,0.528,172,1.241,178,0.3,181,0.419,183,1.007,186,0.589,191,0.427,192,0.295,194,0.371,196,1.052,200,0.731,201,0.405,214,0.614,224,0.287,226,1.024,239,1.548,243,0.975,251,0.283,252,1.133,255,0.334,256,1.368,262,0.643,263,2.914,264,0.701,266,0.429,267,1.43,271,0.272,272,0.614,275,1.245,277,1.795,278,0.344,280,0.504,282,0.658,283,0.34,285,0.435,286,0.333,287,0.409,292,0.603,296,0.238,300,1.074,301,1.617,304,0.796,308,1.19,316,0.998,317,0.397,319,0.241,331,0.304,332,0.455,333,0.34,341,0.334,349,0.589,350,0.318,351,1.299,354,0.662,355,0.374,375,0.374,377,0.584,388,0.342,394,1.024,398,0.424,401,2.204,402,0.361,406,1.104,412,0.393,415,0.386,420,0.405,421,1.783,424,0.409,439,0.329,440,0.368,441,0.679,442,0.409,445,0.36,446,0.811,451,0.293,455,3.392,468,1.193,470,0.495,482,0.671,492,0.397,502,0.718,505,0.365,508,1.203,509,0.693,514,2.484,517,0.941,521,0.731,523,0.662,525,0.72,531,0.282,547,0.696,548,1.048,549,1.043,552,0.235,553,0.348,570,0.952,577,0.34,580,0.643,581,0.435,583,0.326,586,0.34,593,0.768,596,0.365,597,0.326,602,0.424,603,0.351,615,1.148,617,1.817,621,0.806,625,0.875,630,0.351,641,0.481,665,0.577,670,2.865,675,0.383,676,1.065,679,1.003,682,0.582,684,1.837,686,1.552,688,0.455,689,0.393,698,0.589,705,0.39,711,0.684,717,0.419,719,0.623,723,0.429,732,1.039,733,0.75,734,1.75,741,0.358,745,0.793,752,1.051,754,1.719,760,0.393,762,2.126,763,0.826,764,1.733,766,0.731,775,1.21,790,0.888,835,0.31,850,0.405,854,0.731,865,0.307,867,0.731,873,0.377,894,2.383,896,0.708,904,0.837,917,1.179,918,2.432,919,2.786,920,1.578,921,1.602,924,0.441,925,0.441,926,0.455,927,0.435,928,0.455,929,0.424,930,0.414,931,0.419,932,1.921,933,1.048,934,2.282,935,0.586,936,1.578,937,0.38,938,1.556,939,1.442,940,0.97,941,0.586,942,0.504,943,1.065,944,1.129,945,0.518,946,0.518,947,1.935,948,0.481,949,1.535,950,0.463,951,0.925,952,0.586,953,0.586,954,1.129,955,1.442,956,0.518,957,0.586,958,1.368,959,0.518,960,0.518,961,2.053,962,1.628,963,0.577,964,2.768,965,2.938,966,0.38,967,1.28,968,0.855,969,0.518,970,0.757,971,0.518,972,0.572,973,1.536,974,0.481,975,1.338,976,1.935,977,0.518,978,0.492,979,0.518,980,0.435,981,0.455,982,0.383,983,0.806,984,1.002,985,0.684,986,0.557,987,1.855,988,0.998,989,0.481,990,0.448,991,0.455,992,0.586,993,0.327,994,0.481,995,0.481,996,0.481,997,0.481,998,1.139,999,0.481,1000,0.481,1001,0.435,1002,0.481,1003,0.481,1004,0.393,1005,0.199,1006,1.338,1007,0.481,1008,1.373,1009,0.481,1010,0.397,1011,0.435,1012,0.429,1013,0.435,1014,0.925,1015,1.227,1016,1.129,1017,0.393,1018,0.481,1019,0.455,1020,0.998,1021,0.481,1022,1.227,1023,0.518,1024,0.441,1025,0.481,1026,0.518,1027,0.518,1028,0.518,1029,0.518,1030,0.557,1031,1.151,1032,0.518,1033,0.771,1034,0.518,1035,0.518,1036,0.518,1037,0.518,1038,0.518,1039,0.518,1040,0.336,1041,0.518,1042,0.518,1043,0.518,1044,0.518,1045,0.481,1046,0.946,1047,0.455,1048,0.861,1049,0.463,1050,0.586,1051,0.518,1052,0.518,1053,1.084,1054,0.518,1055,0.518,1056,0.455,1057,0.586,1058,0.586,1059,0.518,1060,0.586,1061,0.481,1062,0.401,1063,0.925,1064,0.414,1065,1.073,1066,0.313,1067,0.586,1068,0.771,1069,0.518,1070,0.504,1071,0.518,1072,0.518,1073,0.448,1074,0.455,1075,0.331,1076,0.524,1077,0.448,1078,0.693,1079,1.245,1080,1.442,1081,0.586,1082,0.455,1083,0.424,1084,1.031,1085,0.586,1086,0.492,1087,0.414,1088,0.481,1089,0.409,1090,0.743,1091,0.331,1092,0.371,1093,0.946,1094,0.492,1095,0.463,1096,0.806,1097,0.393,1098,0.492,1099,0.837,1100,0.536,1101,0.419,1102,0.492,1103,0.492,1104,0.536,1105,0.492,1106,0.841,1107,0.594,1108,0.405,1109,0.401,1110,0.386,1111,0.492,1112,0.441,1113,0.536,1114,0.448,1115,0.586,1116,0.518,1117,0.518,1118,0.946,1119,0.481,1120,0.518,1121,0.518,1122,0.429,1123,0.409,1124,0.518,1125,0.377,1126,0.401,1127,0.414]],["component/14",[7,0.401]],["title/15",[]],["name/15",[947,1.886]],["text/15",[26,3.409,68,4.937,69,6.151,117,3.435,148,2.807,155,3.044,183,4.313,282,4.966,308,3.443,402,1.882,468,4.007,514,3.809,665,4.351,679,3.367,705,5.656,904,6.312,947,6.498,1089,5.941,1090,5.606,1091,4.801]],["component/15",[7,0.401]],["title/16",[]],["name/16",[1086,2.071]],["text/16",[15,4.212,29,2.181,30,3.535,32,3.292,35,5.128,76,3.422,82,5.426,88,1.71,93,3.173,118,3.466,120,3.298,123,3.849,136,1.454,191,2.151,196,2.36,255,3.242,296,2.312,308,2.3,316,2.704,439,3.19,482,3.378,502,2.503,514,2.892,570,4.808,577,3.298,682,2.93,719,3.141,745,2.763,752,2.848,754,3.525,762,7.003,763,6.03,764,7.265,766,5.335,904,4.216,985,3.444,1046,4.767,1076,2.64,1084,5.195,1090,3.744,1092,3.595,1093,6.909,1094,4.767,1095,4.486]],["component/16",[7,0.401]],["title/17",[]],["name/17",[755,1.886]],["text/17",[17,2.961,79,3.254,84,2.004,88,2.197,121,4.013,134,2.6,135,4.011,148,2.408,183,2.903,272,3.974,406,2.426,525,3.225,593,3.437,596,4.548,717,5.213,719,4.033,723,2.775,752,4.916,754,3.124,867,4.728,896,4.582,1022,5.492,1048,5.574,1068,4.992,1106,5.714,1107,5.17,1108,5.043,1109,4.992,1110,4.809,1111,6.123,1112,5.492]],["component/17",[7,0.401]],["title/18",[]],["name/18",[1096,1.764]],["text/18",[18,2.892,40,2.147,68,3.775,84,2.866,90,2.901,96,3.033,125,4.131,134,2.318,139,3.217,155,2.327,262,3.712,275,4.457,301,3.651,351,4.006,421,4.866,514,2.285,665,3.327,723,2.474,741,3.97,775,4.827,867,4.214,873,4.18,958,7.606,963,3.327,968,3.413,1008,4.913,1096,6.476,1097,4.365,1098,5.458,1099,6.727,1100,5.947,1101,4.647,1102,5.458,1103,5.458,1104,5.947,1105,5.458]],["component/18",[7,0.401]],["title/19-1",[42,33.917,502,34.217]],["name/19-1",[]],["text/19-1",[]],["component/19-1",[]],["title/19-2",[183,30.892,1128,43.146]],["name/19-2",[]],["text/19-2",[]],["component/19-2",[]],["title/19-3",[183,30.892,1129,38.042]],["name/19-3",[]],["text/19-3",[]],["component/19-3",[]],["title/19-4",[356,40.753,835,41.118]],["name/19-4",[]],["text/19-4",[]],["component/19-4",[]],["title/19-5",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/19-5",[]],["text/19-5",[]],["component/19-5",[]],["title/19-6",[293,47.398,1004,52.112]],["name/19-6",[]],["text/19-6",[]],["component/19-6",[]],["title/19",[98,48.764,1132,35.506]],["name/19",[1132,1.129]],["text/19",[0,0.81,5,0.657,6,0.768,7,0.393,8,1.98,10,0.631,11,2.738,12,1.481,13,1.824,14,1.636,16,1.875,18,0.712,19,0.953,29,1.519,30,0.688,32,1.157,34,1.239,35,1.533,37,0.936,38,0.873,40,1.601,42,1.729,46,2.022,48,3.393,52,1.332,54,1.569,60,1.755,77,0.895,79,1.291,84,2.94,88,2.205,96,0.747,99,0.768,105,1.636,106,0.999,112,0.723,117,1.958,118,1.292,120,3.633,128,0.9,146,2.068,147,1.006,148,0.955,151,1.065,154,0.779,155,0.573,161,0.611,164,1.732,168,0.813,172,1.222,179,1.075,183,1.151,186,2.068,188,0.93,192,0.806,211,1.468,214,1.828,224,1.418,225,1.145,228,2.431,236,0.678,240,2.068,252,2.169,264,0.968,265,1.056,267,1.634,268,0.985,279,0.721,280,1.295,293,2.96,296,0.652,300,3.196,308,0.649,319,0.659,325,0.992,330,2.544,333,0.93,350,0.868,351,1.749,356,2.077,421,0.86,439,0.9,446,0.797,457,1.119,464,0.985,465,0.669,468,1.865,478,1.189,482,0.953,502,1.275,514,1.704,521,1.038,525,1.279,532,1.942,539,1.173,541,1.224,547,0.684,548,1.03,549,0.797,558,1.086,570,0.936,596,1.804,597,0.89,608,0.816,618,1.132,647,0.965,666,1.711,668,1.481,689,1.075,698,0.837,706,0.992,728,3.069,729,0.992,736,0.953,758,1.173,786,0.845,827,0.856,835,1.533,861,4.802,868,1.378,890,2.433,963,0.82,972,1.468,993,0.895,1004,1.075,1087,1.132,1128,2.199,1129,1.939,1130,1.755,1131,1.804,1133,3.092,1134,1.159,1135,1.244,1136,0.999,1137,1.145,1138,1.98,1139,1.047,1140,1.418,1141,2.093,1142,2.178,1143,2.178,1144,1.173,1145,0.936,1146,1.244,1147,1.418,1148,1.418,1149,2.561,1150,0.845,1151,1.132,1152,1.418,1153,2.376,1154,1.173,1155,1.145,1156,1.418,1157,1.244,1158,1.132,1159,1.418,1160,2.561,1161,1.418,1162,2.286,1163,1.418,1164,2.286,1165,1.418,1166,1.244,1167,1.418,1168,1.173,1169,1.107,1170,2.561,1171,1.418,1172,2.899,1173,1.418,1174,1.038,1175,1.418,1176,1.418,1177,1.418,1178,1.418,1179,1.418,1180,2.561,1181,1.418,1182,1.418,1183,2.561,1184,2.561,1185,2.561,1186,1.418,1187,2.044,1188,2.561,1189,1.418,1190,1.418,1191,1.418,1192,1.418,1193,1.418,1194,1.418,1195,0.941,1196,1.265,1197,3.126,1198,1.418,1199,1.418,1200,1.244,1201,2.708,1202,1.418,1203,2.561,1204,1.315,1205,2.561,1206,1.418,1207,1.418,1208,1.418,1209,1.418,1210,1.345,1211,1.03,1212,1.418]],["component/19",[7,0.401]],["title/20-1",[88,23.377,356,40.753]],["name/20-1",[]],["text/20-1",[]],["component/20-1",[]],["title/20-2",[48,36.208,88,20.111,356,35.06]],["name/20-2",[]],["text/20-2",[]],["component/20-2",[]],["title/20-3",[88,20.111,356,35.06,1172,48.923]],["name/20-3",[]],["text/20-3",[]],["component/20-3",[]],["title/20-4",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/20-4",[]],["text/20-4",[]],["component/20-4",[]],["title/20",[88,23.377,158,40.398]],["name/20",[88,0.743]],["text/20",[7,1,8,2.178,10,1.607,11,0.938,12,0.85,13,1.87,14,2.648,15,1.53,16,3.23,17,0.674,23,1.338,31,0.892,32,1.196,33,1.505,34,2.134,42,1.306,48,3.782,52,1.877,54,2.21,56,0.785,60,3.022,77,0.928,80,1.126,84,1.369,88,3.061,91,2.813,93,2.784,94,1.746,95,1.907,96,0.775,97,1.938,100,2.406,101,2.737,105,2.884,107,2.026,113,3.507,115,0.938,120,4.822,128,0.933,143,1.606,146,0.868,166,2.946,170,0.988,171,0.777,186,1.563,188,0.964,199,0.97,204,1.337,221,1.971,234,0.923,243,0.994,252,1.824,277,0.811,293,1.014,301,2.008,316,2.372,325,2.524,341,1.707,344,1.312,351,1.802,356,5.231,403,1.174,406,0.553,421,0.892,429,1.105,443,1.577,446,1.488,505,3.107,509,1.838,525,3.304,531,0.799,553,1.778,570,0.97,712,1.864,732,1.059,765,2.067,766,1.938,768,2.163,772,0.988,827,0.888,835,3.393,861,1.688,869,1.217,890,3.063,910,0.994,937,1.938,972,0.843,985,1.007,1062,1.137,1076,1.39,1089,1.161,1131,1.864,1133,3.178,1154,2.19,1162,1.312,1164,1.312,1172,6.968,1197,1.312,1213,4.342,1214,4.261,1215,1.663,1216,1.47,1217,1.47,1218,1.47,1219,1.095,1220,3.608,1221,3.347,1222,1.47,1223,1.47,1224,1.47,1225,2.646,1226,1.47,1227,1.47,1228,1.47,1229,1.47,1230,1.47,1231,1.47,1232,1.47,1233,1.47,1234,1.47,1235,1.47,1236,1.47,1237,1.47,1238,3.608,1239,1.47,1240,2.646,1241,1.47,1242,1.47,1243,1.47,1244,1.47,1245,1.47,1246,2.22,1247,1.47,1248,2.646,1249,1.29,1250,1.187,1251,1.47,1252,1.364,1253,1.028,1254,1.47,1255,0.692,1256,2.362,1257,1.47,1258,2.51,1259,1.663,1260,1.663,1261,1.47,1262,1.47,1263,1.663,1264,1.663,1265,1.47,1266,1.47,1267,1.47,1268,1.47,1269,1.47,1270,1.47,1271,1.47,1272,1.47,1273,1.47,1274,1.47,1275,1.47]],["component/20",[7,0.401]],["title/21",[1276,68.801]],["name/21",[1276,1.832]],["text/21",[3,1.263,8,1.248,13,3.292,14,2.719,16,3.331,20,1.725,26,1.244,30,1.333,32,1.241,71,1.608,84,2.102,88,1.981,105,3.777,107,2.103,112,1.402,117,3.424,118,3.532,125,2.999,136,1.959,137,1.472,139,1.102,144,1.318,155,2.355,161,2.917,168,2.608,169,1.752,171,1.452,183,1.235,191,1.175,214,1.17,239,1.448,249,1.608,263,1.478,264,1.038,272,1.691,280,1.389,296,2.092,301,2.65,308,3.699,316,1.478,319,2.114,357,1.743,391,1.562,401,1.393,421,1.667,443,1.636,451,1.55,455,1.527,458,1.908,470,1.364,487,1.348,502,1.368,519,2.103,526,2.451,531,1.493,549,1.544,570,1.813,602,2.245,617,2.814,659,2.273,661,2.451,664,2.41,665,2.63,666,1.835,670,3.469,673,2.509,680,1.55,708,1.651,723,1.955,746,1.263,963,1.588,966,2.011,972,2.608,985,1.882,993,1.734,1132,1.419,1136,1.935,1154,2.273,1277,6.058,1278,2.747,1279,1.87,1280,2.497,1281,2.747,1282,2.336,1283,2.747,1284,2.372,1285,2.245,1286,2.451,1287,1.964,1288,2.747,1289,2.497,1290,2.747,1291,2.245,1292,3.107,1293,2.67,1294,2.548,1295,2.304,1296,2.548,1297,2.747,1298,2.747,1299,2.747,1300,2.41,1301,2.451,1302,2.747]],["component/21",[7,0.401]],["title/22-1",[56,27.706,84,16.101,236,24.817,691,48.109]],["name/22-1",[]],["text/22-1",[]],["component/22-1",[]],["title/22-2",[52,30.744,104,32.728,680,33.358]],["name/22-2",[]],["text/22-2",[]],["component/22-2",[]],["title/22-3",[116,50.007]],["name/22-3",[]],["text/22-3",[]],["component/22-3",[]],["title/22-4",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/22-4",[]],["text/22-4",[]],["component/22-4",[]],["title/22-5",[8,8.202,13,10.985,84,9.278,105,13.959,186,17.648,457,23.594,525,14.928,666,19.961,861,19.065,1131,21.055]],["name/22-5",[]],["text/22-5",[]],["component/22-5",[]],["title/22-6",[528,37.312,531,32.135,596,41.644]],["name/22-6",[]],["text/22-6",[]],["component/22-6",[]],["title/22",[13,21.726,105,27.609,343,46.175]],["name/22",[631,1.45]],["text/22",[3,0.45,4,0.614,7,0.271,8,0.268,13,2.032,14,0.457,15,0.565,16,2.344,17,2.174,18,1.284,26,1.45,33,1.035,34,0.473,40,0.953,45,0.915,48,0.599,52,2.681,54,2.311,56,0.522,58,0.67,60,2.585,65,1.887,70,1.549,77,0.617,84,3.443,88,0.619,91,0.624,92,3.945,96,0.515,98,1.292,101,1.722,102,0.596,104,0.541,105,0.85,106,0.689,107,0.748,110,1.312,111,2.89,112,0.929,113,2.262,116,1.951,117,2.822,118,3.206,120,2.1,121,0.608,123,0.748,128,1.621,130,1.216,134,1.725,143,0.593,145,0.704,148,0.365,155,1.526,160,1.094,161,0.421,163,0.547,168,1.044,171,0.517,178,0.565,179,0.741,185,0.741,186,2.228,196,0.855,199,0.645,214,2.355,215,1.422,227,1.333,236,0.468,243,0.661,248,2.112,252,0.494,255,1.174,263,0.526,264,0.688,279,0.497,280,0.494,293,0.674,296,2.843,297,0.605,301,2.517,304,0.78,313,2.568,316,2.029,332,0.858,335,1.648,360,0.799,361,1.943,378,0.748,394,1.292,397,0.831,402,0.8,406,0.367,408,0.575,421,0.593,438,3.381,439,0.62,440,0.694,443,1.085,446,0.549,457,0.772,465,1.206,487,0.48,505,1.8,506,0.789,508,1.181,514,0.388,519,1.394,525,0.488,528,1.613,531,2.051,547,0.472,549,1.799,552,0.444,556,0.657,575,1.408,577,0.641,580,2.433,596,1.283,604,0.599,618,0.78,619,0.728,620,0.638,622,1.47,642,0.858,665,1.052,666,2.138,669,2.64,670,0.582,674,1.333,678,1.174,679,0.437,680,1.806,691,0.907,706,1.787,743,0.617,773,1.312,786,0.582,861,2.407,865,0.58,885,1.957,889,0.653,900,0.704,907,0.78,910,1.231,963,0.565,966,1.333,1031,2.039,1047,0.858,1049,0.872,1091,1.161,1092,0.699,1110,1.356,1131,1.8,1139,0.722,1157,0.858,1282,1.549,1287,0.699,1303,0.872,1304,1.106,1305,0.844,1306,0.872,1307,1.881,1308,2.115,1309,1.051,1310,0.82,1311,0.977,1312,1.01,1313,1.106,1314,1.106,1315,1.106,1316,1.106,1317,1.106,1318,1.106,1319,0.977,1320,0.977,1321,0.907,1322,0.977,1323,1.82,1324,0.977,1325,1.82,1326,0.977,1327,1.82,1328,0.977,1329,0.977,1330,1.051,1331,1.82,1332,0.977,1333,0.977,1334,1.82,1335,0.977,1336,1.82,1337,0.977,1338,0.977,1339,1.82,1340,1.82,1341,0.977,1342,0.977,1343,0.907,1344,0.977,1345,0.977,1346,0.977,1347,0.977,1348,4.6,1349,3.2,1350,1.82,1351,1.106,1352,0.927,1353,1.106,1354,1.106,1355,2.059,1356,1.726,1357,1.106,1358,2.89,1359,1.106,1360,1.106,1361,0.872,1362,0.977,1363,1.106,1364,4.267,1365,1.106,1366,1.106,1367,3.2,1368,2.059,1369,2.059,1370,1.106,1371,1.106,1372,1.106,1373,1.106,1374,1.106,1375,1.106,1376,1.106,1377,1.106,1378,1.106,1379,0.977,1380,1.106,1381,0.831,1382,0.977,1383,0.977,1384,0.977,1385,0.977,1386,0.977,1387,0.977,1388,1.726,1389,0.872,1390,0.661,1391,0.927,1392,0.977,1393,0.977]],["component/22",[7,0.401]],["title/23-1",[260,42.387,297,32.081,470,25.753,1394,51.864]],["name/23-1",[]],["text/23-1",[]],["component/23-1",[]],["title/23",[871,51.636,1076,36.09]],["name/23",[1395,2.471]],["text/23",[8,2.168,118,2.914,296,3.633,620,5.153,644,7.182,861,6.311,867,5.785,903,4.961,1130,5.413,1174,5.785,1256,7.05,1396,8.936,1397,9.892,1398,7.492,1399,7.68,1400,4.706]],["component/23",[7,0.401]],["title/24-1",[3,37.722]],["name/24-1",[]],["text/24-1",[]],["component/24-1",[]],["title/24-2",[128,52.051]],["name/24-2",[]],["text/24-2",[]],["component/24-2",[]],["title/24-3",[155,27.786,465,32.434]],["name/24-3",[]],["text/24-3",[]],["component/24-3",[]],["title/24-4",[34,25.095,134,20.888,406,19.493,694,34.642]],["name/24-4",[]],["text/24-4",[]],["component/24-4",[]],["title/24-5",[351,40.973]],["name/24-5",[]],["text/24-5",[]],["component/24-5",[]],["title/24-6",[745,45.082]],["name/24-6",[]],["text/24-6",[]],["component/24-6",[]],["title/24-7",[455,38.185,1293,66.798]],["name/24-7",[]],["text/24-7",[]],["component/24-7",[]],["title/24-8",[656,50.738]],["name/24-8",[]],["text/24-8",[]],["component/24-8",[]],["title/24-9",[1401,71,1402,56.867]],["name/24-9",[]],["text/24-9",[]],["component/24-9",[]],["title/24-10",[88,23.377,1403,52.609]],["name/24-10",[]],["text/24-10",[]],["component/24-10",[]],["title/24",[155,20.975,249,30.364,678,33.45,1403,39.712]],["name/24",[1403,1.672]],["text/24",[3,1.134,5,1.568,6,2.61,8,1.616,10,0.606,20,0.854,23,1.247,24,0.818,26,0.616,29,1.07,30,1.642,32,0.615,34,1.193,38,0.837,43,3.077,57,0.85,76,2.304,84,3.716,88,0.839,90,1.243,92,0.914,98,0.965,104,1.874,107,2.591,117,2.687,118,0.502,122,1.822,133,0.914,134,0.993,136,0.394,138,1.232,139,1.933,144,1.624,155,1.681,158,0.8,161,3.043,164,0.92,166,1.648,172,0.649,179,1.032,183,0.612,196,1.158,211,1.941,214,1.051,220,1.062,228,0.771,239,1.3,249,1.981,262,0.877,265,1.837,268,1.713,271,2.831,275,0.756,279,1.255,301,0.619,308,2.205,316,1.327,325,0.951,351,3.16,354,0.903,391,0.774,402,0.34,406,1.272,421,0.825,428,1.214,430,1.041,439,0.863,441,0.926,455,0.756,465,1.598,502,2.071,514,0.979,547,1.633,549,1.903,553,0.914,557,2.195,570,2.233,593,1.313,615,0.841,617,0.841,656,0.841,673,0.75,678,1.591,679,1.514,686,1.078,694,0.908,695,0.748,708,0.818,712,0.958,735,0.988,790,0.837,1008,1.511,1064,1.969,1092,0.973,1106,0.793,1107,0.81,1123,1.074,1138,1.052,1310,1.141,1401,8.421,1403,7.786,1404,1.538,1405,1.538,1406,1.538,1407,6.096,1408,1.538,1409,5.45,1410,1.538,1411,1.538,1412,1.654,1413,2.201,1414,3,1415,3,1416,0.926,1417,2.339,1418,1.405,1419,1.538,1420,2.79,1421,1.052,1422,1.538,1423,1.538,1424,1.405,1425,3.828,1426,3.828,1427,1.538,1428,1.538,1429,1.538,1430,1.538,1431,0.821,1432,2.79,1433,3.828,1434,0.859,1435,1.538,1436,3.077,1437,1.538,1438,1.538,1439,1.538,1440,1.538,1441,1.098,1442,1.538,1443,1.538,1444,1.405,1445,1.538,1446,1.538,1447,1.262,1448,1.157,1449,1.36,1450,1.538,1451,1.193,1452,1.538,1453,1.36,1454,1.538,1455,1.36]],["component/24",[7,0.401]],["title/25-1",[402,17.184,1456,33.432]],["name/25-1",[]],["text/25-1",[]],["component/25-1",[]],["title/25-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/25-2",[]],["text/25-2",[]],["component/25-2",[]],["title/25-3",[8,18.856,150,32.262]],["name/25-3",[]],["text/25-3",[]],["component/25-3",[]],["title/25-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/25-4",[]],["text/25-4",[]],["component/25-4",[]],["title/25-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/25-5",[]],["text/25-5",[]],["component/25-5",[]],["title/25-6",[8,16.222,137,31.686,746,27.183]],["name/25-6",[]],["text/25-6",[]],["component/25-6",[]],["title/25-7",[1255,32.348,1457,33.624]],["name/25-7",[]],["text/25-7",[]],["component/25-7",[]],["title/25",[138,34.207,139,18.53,677,47.243]],["name/25",[138,0.611,677,0.844]],["text/25",[5,2.624,7,0.998,8,1.554,17,1.653,29,2.457,40,1.344,84,3.576,88,1.927,110,1.85,113,1.719,135,1.665,136,1.639,138,4.306,144,2.717,148,2.113,150,1.692,161,3.014,196,3.724,199,3.737,264,1.362,271,1.892,279,1.833,280,3.537,401,2.872,402,0.901,408,2.118,459,2.485,484,4.147,508,3.673,514,3.149,521,2.638,531,1.959,556,2.421,570,2.377,657,3.603,677,2.485,686,1.574,695,4.738,745,1.98,760,2.732,932,4.182,949,5.434,950,3.215,1091,2.298,1106,2.1,1107,2.146,1114,3.111,1390,2.437,1391,3.417,1458,3.342,1459,3.603,1460,3.603,1461,2.196,1462,3.603,1463,3.342,1464,4.075,1465,3.111,1466,3.603,1467,3.161,1468,2.502,1469,2.596,1470,3.603,1471,3.603,1472,2.364]],["component/25",[7,0.401]],["title/26-1",[402,17.184,1456,33.432]],["name/26-1",[]],["text/26-1",[]],["component/26-1",[]],["title/26-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/26-2",[]],["text/26-2",[]],["component/26-2",[]],["title/26-3",[8,18.856,150,32.262]],["name/26-3",[]],["text/26-3",[]],["component/26-3",[]],["title/26-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/26-4",[]],["text/26-4",[]],["component/26-4",[]],["title/26-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/26-5",[]],["text/26-5",[]],["component/26-5",[]],["title/26-6",[8,16.222,137,31.686,746,27.183]],["name/26-6",[]],["text/26-6",[]],["component/26-6",[]],["title/26-7",[1255,32.348,1457,33.624]],["name/26-7",[]],["text/26-7",[]],["component/26-7",[]],["title/26",[178,34.172,1129,32.728,1473,43.651]],["name/26",[1473,1.613]],["text/26",[5,3.513,8,2.329,12,2.364,29,2.71,84,3.113,88,2.126,90,2.061,99,2.215,135,2.888,136,1.808,137,2.192,138,3.12,139,1.64,144,1.962,148,1.525,161,1.762,178,5.572,183,1.839,228,2.317,231,3.131,263,2.2,264,1.546,280,3.158,308,1.871,349,2.415,351,2.043,394,2.902,395,2.881,401,2.074,402,1.562,406,2.348,445,2.84,446,2.299,451,2.308,459,2.821,484,2.995,514,3.369,654,3.194,686,1.786,687,3.102,695,3.433,726,2.784,746,1.881,788,2.683,830,2.802,873,2.97,896,2.902,983,3.302,1068,3.162,1106,2.384,1107,2.436,1187,3.264,1461,2.493,1472,2.683,1473,3.02,1474,4.089,1475,3.194,1476,6.247,1477,2.529,1478,3.717,1479,3.793,1480,4.089,1481,4.089,1482,3.976]],["component/26",[7,0.401]],["title/27-1",[402,17.184,1456,33.432]],["name/27-1",[]],["text/27-1",[]],["component/27-1",[]],["title/27-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/27-2",[]],["text/27-2",[]],["component/27-2",[]],["title/27-3",[118,25.347,694,45.892]],["name/27-3",[]],["text/27-3",[]],["component/27-3",[]],["title/27-4",[1145,45.341,1483,35.06]],["name/27-4",[]],["text/27-4",[]],["component/27-4",[]],["title/27-5",[1091,43.832,1145,45.341]],["name/27-5",[]],["text/27-5",[]],["component/27-5",[]],["title/27-6",[88,20.111,468,31.469,532,44.832]],["name/27-6",[]],["text/27-6",[]],["component/27-6",[]],["title/27-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/27-7",[]],["text/27-7",[]],["component/27-7",[]],["title/27-8",[8,16.222,30,28.681,150,27.755]],["name/27-8",[]],["text/27-8",[]],["component/27-8",[]],["title/27-9",[104,32.728,264,22.343,686,25.822]],["name/27-9",[]],["text/27-9",[]],["component/27-9",[]],["title/27-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/27-10",[]],["text/27-10",[]],["component/27-10",[]],["title/27-11",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/27-11",[]],["text/27-11",[]],["component/27-11",[]],["title/27-12",[8,16.222,137,31.686,746,27.183]],["name/27-12",[]],["text/27-12",[]],["component/27-12",[]],["title/27-13",[1255,32.348,1457,33.624]],["name/27-13",[]],["text/27-13",[]],["component/27-13",[]],["title/27",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/27",[728,0.757,1484,1]],["text/27",[2,0.805,5,1.057,6,1.706,7,0.346,8,1.757,10,1.016,12,0.721,13,1.43,14,1.065,15,2.619,17,0.572,29,1.965,30,1.528,32,1.423,34,1.524,35,0.747,36,0.612,37,0.824,38,0.768,40,2.635,42,0.616,45,1.583,56,1.218,57,1.425,65,0.922,79,2.564,87,1.595,88,1.072,90,1.15,96,0.658,97,0.914,98,1.619,101,2.093,104,1.263,106,2.219,110,1.171,117,1.041,118,3.119,120,2.066,134,2.247,135,0.577,136,1.472,137,1.223,138,2.263,139,1.817,142,0.74,144,1.867,148,0.466,155,0.922,160,0.75,161,0.538,171,0.66,172,1.857,183,1.025,184,1.184,186,1.86,189,0.784,190,0.834,191,1.665,192,0.71,196,1.479,214,0.972,234,0.784,251,0.681,252,0.631,267,2.009,271,2.38,272,0.768,275,0.694,278,0.828,279,1.979,280,0.631,292,1.377,300,0.93,308,1.441,315,1.67,316,2.093,320,1.463,330,1.657,333,0.819,340,0.839,341,0.805,401,2.297,402,1.504,406,1.462,408,0.734,412,0.947,443,1.359,451,0.704,455,0.694,468,2.709,470,1.132,482,1.533,492,4.271,502,0.622,514,2.679,525,2.263,532,2.389,539,1.033,620,0.814,656,2.407,666,0.834,679,1.409,683,1.868,686,2.223,687,0.947,694,1.523,695,0.686,698,0.737,723,0.98,726,1.553,728,3.45,746,1.049,755,1.078,765,0.975,766,0.914,835,2.328,850,1.782,890,3.875,894,0.914,896,0.886,903,0.784,972,0.716,985,2.158,1076,0.656,1083,1.02,1087,1.821,1089,4.017,1090,1.699,1091,3.246,1092,0.892,1096,1.008,1133,4.02,1141,1.02,1142,1.062,1143,1.062,1145,3.968,1150,0.744,1151,4.061,1381,1.062,1400,0.744,1402,2.607,1416,0.85,1434,0.788,1456,0.607,1485,2.281,1486,1.248,1487,2.001,1488,3.472,1489,2.116,1490,0.879,1491,2.922,1492,1.008,1493,1.158,1494,1.158,1495,1.158,1496,1.158,1497,1.248,1498,0.938,1499,0.975,1500,1.248,1501,3.891,1502,2.281,1503,2.281,1504,2.987,1505,1.248,1506,2.281,1507,1.248,1508,1.02,1509,1.114,1510,1.342,1511,1.342,1512,1.342,1513,0.985,1514,2.607,1515,1.047,1516,1.095,1517,1.008,1518,2.116,1519,1.078,1520,0.906,1521,1.158,1522,1.248,1523,1.184,1524,0.947]],["component/27",[7,0.401]],["title/28-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/28-1",[]],["text/28-1",[]],["component/28-1",[]],["title/28-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/28-2",[]],["text/28-2",[]],["component/28-2",[]],["title/28-3",[8,18.856,150,32.262]],["name/28-3",[]],["text/28-3",[]],["component/28-3",[]],["title/28-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/28-4",[]],["text/28-4",[]],["component/28-4",[]],["title/28-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/28-5",[]],["text/28-5",[]],["component/28-5",[]],["title/28-6",[8,16.222,137,31.686,746,27.183]],["name/28-6",[]],["text/28-6",[]],["component/28-6",[]],["title/28-7",[1255,32.348,1457,33.624]],["name/28-7",[]],["text/28-7",[]],["component/28-7",[]],["title/28",[615,46.09,937,37.981,1129,28.716]],["name/28",[615,0.757,937,0.896]],["text/28",[3,1.073,5,2.829,8,1.42,10,1.766,15,2.293,29,3.227,30,2.511,40,2.277,56,1.247,82,1.738,84,3.537,88,2.077,95,1.682,99,1.264,105,1.09,108,1.787,118,1.909,135,1.834,136,1.766,137,2.127,138,1.982,148,0.87,155,0.944,161,3.419,183,1.049,211,2.275,228,1.322,239,1.23,262,1.505,265,1.738,271,1.226,279,2.632,316,1.255,378,3.038,402,0.584,406,2.796,408,1.372,446,1.312,486,5.474,514,3.316,552,1.06,575,1.804,608,2.284,615,2.454,630,1.578,631,1.549,676,1.723,679,1.775,686,1.733,695,2.18,708,2.385,719,1.458,746,1.824,754,1.129,924,1.985,937,4.47,1075,1.489,1106,1.36,1107,1.39,1126,1.804,1127,1.863,1130,1.599,1134,1.907,1150,3.083,1286,2.082,1305,2.015,1390,4.128,1434,1.473,1461,1.423,1469,1.682,1472,1.531,1525,2.639,1526,1.823,1527,1.823,1528,5.051,1529,2.015,1530,2.082,1531,2.164,1532,2.333,1533,1.884,1534,2.333,1535,2.639,1536,2.639,1537,2.015,1538,1.754,1539,2.639,1540,2.082,1541,2.639,1542,2.639,1543,3.54,1544,1.787,1545,1.957,1546,2.121,1547,2.411,1548,2.639,1549,2.411,1550,2.411,1551,1.738,1552,2.164,1553,2.639,1554,2.121,1555,2.905,1556,1.61,1557,2.164,1558,1.481]],["component/28",[7,0.401]],["title/29-1",[402,17.184,1456,33.432]],["name/29-1",[]],["text/29-1",[]],["component/29-1",[]],["title/29-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/29-2",[]],["text/29-2",[]],["component/29-2",[]],["title/29-3",[8,18.856,150,32.262]],["name/29-3",[]],["text/29-3",[]],["component/29-3",[]],["title/29-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/29-4",[]],["text/29-4",[]],["component/29-4",[]],["title/29-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/29-5",[]],["text/29-5",[]],["component/29-5",[]],["title/29-6",[8,16.222,137,31.686,746,27.183]],["name/29-6",[]],["text/29-6",[]],["component/29-6",[]],["title/29-7",[1255,32.348,1457,33.624]],["name/29-7",[]],["text/29-7",[]],["component/29-7",[]],["title/29",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/29",[1431,0.739,1559,0.928]],["text/29",[0,0.957,3,0.771,5,3.088,6,0.908,8,1.526,10,2.967,13,0.616,17,2.228,29,3.397,30,0.813,32,2.194,40,0.625,42,0.827,45,2.015,56,0.895,84,3.649,88,1.365,104,0.928,105,2.597,106,1.18,108,1.283,112,0.855,113,0.8,116,1.021,117,0.765,118,2.621,121,1.042,135,1.375,136,1.16,137,1.594,138,2.003,148,1.496,150,1.397,154,0.921,155,1.622,160,1.007,161,2.092,189,1.052,211,1.705,220,1.309,223,1.495,228,2.272,248,0.938,251,0.914,255,1.918,262,1.081,271,2.551,275,0.931,279,0.852,292,1.796,297,1.84,322,1.309,352,2.374,354,1.112,377,0.981,402,0.744,406,2.313,408,0.985,464,1.164,482,1.126,506,1.353,514,1.928,531,0.911,557,1.087,575,1.296,586,1.099,593,1.583,656,1.036,663,1.237,668,0.969,678,1.081,679,0.75,682,2.338,686,1.752,695,0.921,746,1.368,754,0.811,772,1.126,779,1.148,830,3.328,863,3.579,895,1.387,1075,1.069,1106,0.977,1107,0.998,1108,3.133,1109,2.3,1150,3.313,1195,1.112,1214,1.259,1381,1.425,1390,1.133,1431,4.729,1434,1.058,1436,1.523,1441,3.238,1456,0.815,1461,1.021,1468,2.066,1469,1.207,1483,0.855,1487,1.47,1490,1.18,1524,1.271,1526,2.323,1527,1.309,1556,1.156,1559,3.683,1560,1.801,1561,1.369,1562,1.495,1563,1.675,1564,4.536,1565,1.447,1566,1.675,1567,1.731,1568,1.895,1569,1.895,1570,1.895,1571,1.731,1572,1.895,1573,1.895,1574,1.895,1575,3.364,1576,1.895,1577,1.895,1578,3.319,1579,1.895,1580,4.722,1581,3.72,1582,1.895,1583,1.895,1584,1.895,1585,1.227,1586,3.364,1587,1.895,1588,1.895,1589,1.895,1590,1.447]],["component/29",[7,0.401]],["title/30-1",[402,17.184,1456,33.432]],["name/30-1",[]],["text/30-1",[]],["component/30-1",[]],["title/30-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/30-2",[]],["text/30-2",[]],["component/30-2",[]],["title/30-3",[8,18.856,150,32.262]],["name/30-3",[]],["text/30-3",[]],["component/30-3",[]],["title/30-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/30-4",[]],["text/30-4",[]],["component/30-4",[]],["title/30-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/30-5",[]],["text/30-5",[]],["component/30-5",[]],["title/30-6",[8,16.222,137,31.686,746,27.183]],["name/30-6",[]],["text/30-6",[]],["component/30-6",[]],["title/30-7",[1255,32.348,1457,33.624]],["name/30-7",[]],["text/30-7",[]],["component/30-7",[]],["title/30",[402,9.484,827,22.902,1129,20.996,1591,42.477,1592,57.305]],["name/30",[1591,0.882,1592,1.189]],["text/30",[3,1.338,8,2.124,13,1.07,29,3.358,30,1.412,37,1.92,40,2.262,42,1.437,56,1.555,84,3.659,99,2.584,104,1.611,105,2.228,106,2.05,113,1.389,118,2.587,135,1.345,136,1.38,137,1.56,138,1.454,148,1.086,154,1.599,155,1.177,161,3.582,191,1.245,204,2.646,211,3.476,214,2.032,248,2.672,273,4.258,280,1.471,296,1.338,351,3.028,402,1.754,406,1.793,420,2.273,464,2.021,493,7.836,514,1.894,525,1.454,590,2.475,608,1.675,656,1.8,686,2.084,690,1.981,708,1.75,716,2.597,754,1.408,827,4.235,835,1.742,929,2.378,990,2.513,1075,1.857,1150,1.734,1195,1.932,1413,2.597,1434,1.837,1504,2.76,1517,2.35,1524,2.207,1591,5.053,1592,5.894,1593,3.292,1594,3.292,1595,2.91,1596,2.646,1597,2.91,1598,3.292,1599,4.771,1600,2.91,1601,2.91,1602,4.771,1603,3.292,1604,3.292,1605,3.292,1606,3.292,1607,3.292,1608,2.829]],["component/30",[7,0.401]],["title/31-1",[402,17.184,1456,33.432]],["name/31-1",[]],["text/31-1",[]],["component/31-1",[]],["title/31-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/31-2",[]],["text/31-2",[]],["component/31-2",[]],["title/31-3",[8,18.856,150,32.262]],["name/31-3",[]],["text/31-3",[]],["component/31-3",[]],["title/31-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/31-4",[]],["text/31-4",[]],["component/31-4",[]],["title/31-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/31-5",[]],["text/31-5",[]],["component/31-5",[]],["title/31-6",[8,16.222,137,31.686,746,27.183]],["name/31-6",[]],["text/31-6",[]],["component/31-6",[]],["title/31-7",[1255,32.348,1457,33.624]],["name/31-7",[]],["text/31-7",[]],["component/31-7",[]],["title/31",[311,30.628,1609,35.079,1610,36.54,1611,38.977]],["name/31",[1610,0.599,1611,0.639,1612,0.551]],["text/31",[8,1.949,10,2.567,13,1.355,17,1.691,18,1.852,30,1.789,34,1.784,45,1.852,48,3.532,79,1.858,84,3.425,99,1.997,105,1.722,117,1.682,118,1.36,121,2.291,134,1.485,136,1.067,137,1.976,138,1.841,139,1.478,144,1.769,148,1.375,155,3.525,166,2.462,168,2.114,170,2.477,174,3.183,183,1.657,214,1.57,249,2.158,251,2.011,266,3.051,296,1.695,308,1.687,311,2.177,316,1.983,356,2.186,402,0.922,442,2.91,460,1.759,465,1.74,468,3.07,487,1.809,500,3.963,514,2.819,549,2.072,608,2.122,617,2.28,679,2.58,686,2.519,695,2.026,708,2.216,754,1.784,758,3.051,963,2.131,1015,3.136,1062,2.85,1075,2.352,1431,4.289,1434,2.327,1441,4.656,1487,3.234,1562,3.29,1609,2.493,1610,5.003,1611,4.333,1613,3.686,1614,3.686,1615,3.686,1616,3.963,1617,3.584,1618,4.483,1619,3.234,1620,4.333,1621,3.351,1622,3.092,1623,3.419]],["component/31",[7,0.401]],["title/32-1",[3,31.597,56,36.704]],["name/32-1",[]],["text/32-1",[]],["component/32-1",[]],["title/32-2",[5,31.842,547,33.151]],["name/32-2",[]],["text/32-2",[]],["component/32-2",[]],["title/32-3",[136,23.734]],["name/32-3",[]],["text/32-3",[]],["component/32-3",[]],["title/32-4",[406,25.824,430,52.609]],["name/32-4",[]],["text/32-4",[]],["component/32-4",[]],["title/32-5",[547,28.52,1434,37.312,1624,63.552]],["name/32-5",[]],["text/32-5",[]],["component/32-5",[]],["title/32-6",[161,35.339]],["name/32-6",[]],["text/32-6",[]],["component/32-6",[]],["title/32-7",[183,30.892,1625,55.481]],["name/32-7",[]],["text/32-7",[]],["component/32-7",[]],["title/32-8",[42,29.179,502,29.437,1625,47.73]],["name/32-8",[]],["text/32-8",[]],["component/32-8",[]],["title/32-9",[191,29.399,311,40.574]],["name/32-9",[]],["text/32-9",[]],["component/32-9",[]],["title/32-10",[84,16.101,351,37.219,1626,55.762]],["name/32-10",[]],["text/32-10",[]],["component/32-10",[]],["title/32-11",[694,39.481,1526,46.175,1527,46.175]],["name/32-11",[]],["text/32-11",[]],["component/32-11",[]],["title/32-12",[355,49.513,1627,59.325]],["name/32-12",[]],["text/32-12",[]],["component/32-12",[]],["title/32-13",[1628,88.192]],["name/32-13",[]],["text/32-13",[]],["component/32-13",[]],["title/32-14",[729,48.06,1627,59.325]],["name/32-14",[]],["text/32-14",[]],["component/32-14",[]],["title/32-15",[729,48.06,1629,62.461]],["name/32-15",[]],["text/32-15",[]],["component/32-15",[]],["title/32-16",[32,26.708,35,35.374,1627,51.038]],["name/32-16",[]],["text/32-16",[]],["component/32-16",[]],["title/32-17",[32,26.708,35,35.374,1629,53.736]],["name/32-17",[]],["text/32-17",[]],["component/32-17",[]],["title/32-18",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/32-18",[]],["text/32-18",[]],["component/32-18",[]],["title/32-19",[8,16.222,137,31.686,746,27.183]],["name/32-19",[]],["text/32-19",[]],["component/32-19",[]],["title/32-20",[8,18.856,150,32.262]],["name/32-20",[]],["text/32-20",[]],["component/32-20",[]],["title/32-21",[1255,32.348,1457,33.624]],["name/32-21",[]],["text/32-21",[]],["component/32-21",[]],["title/32",[311,30.628,678,33.45,1609,35.079,1630,55.762]],["name/32",[547,0.41,1612,0.551,1631,0.758]],["text/32",[0,0.327,2,0.707,3,0.726,5,0.732,6,0.594,8,1.277,10,0.488,15,0.331,17,1.889,18,0.287,20,1.272,24,0.95,29,0.685,30,1.705,31,0.958,32,1.102,34,1.538,35,2.629,36,1.56,38,0.972,40,0.91,42,1,45,1.765,57,1.265,58,1.082,68,0.375,71,0.642,74,0.511,75,0.487,79,1.422,84,1.091,85,0.979,87,0.4,88,0.195,90,0.553,91,0.7,99,0.31,101,1.71,103,0.473,104,1.35,105,0.738,110,0.811,113,1.164,115,1.556,117,0.501,118,0.211,119,3.562,121,1.976,122,1.166,125,1.638,127,0.406,129,0.298,130,0.382,133,0.737,134,1.541,135,0.264,136,0.457,137,0.588,138,1.218,139,0.978,143,0.347,146,0.338,147,0.406,148,0.91,150,0.269,154,0.868,155,1.547,161,1.648,164,0.742,165,0.419,168,0.629,171,1.071,172,0.967,174,0.494,178,0.331,180,0.384,182,1.097,183,1.429,186,1.196,188,1.036,189,0.359,190,0.382,191,1.503,196,2.184,200,0.419,201,0.447,203,0.378,211,0.629,214,0.244,223,0.979,224,0.875,225,0.462,227,0.419,228,1.148,231,0.438,239,1.487,243,2.971,249,0.335,251,0.312,263,0.85,265,0.426,271,0.576,275,0.878,277,0.605,278,0.38,279,2.366,280,0.289,282,0.378,283,0.375,286,0.367,293,0.395,296,1.121,300,0.817,301,1.741,304,3.053,308,1.291,311,3.278,316,0.85,319,0.266,331,0.642,349,0.648,350,0.672,351,0.286,355,4.642,357,1.285,360,0.468,375,0.412,386,1.516,390,0.572,402,0.143,404,1.808,406,1.061,413,1.465,414,0.48,430,0.438,431,1.321,432,3.793,440,0.406,446,0.322,450,1.496,451,0.323,457,0.452,459,0.395,465,0.956,482,0.384,484,1.483,487,1.197,502,1.405,514,1.519,531,0.859,536,0.92,547,3.774,549,1.139,580,1.019,583,1.272,586,0.375,593,0.305,601,0.48,604,0.968,608,0.329,613,0.468,615,0.977,617,2.877,656,0.678,659,0.473,663,0.81,665,0.331,672,0.422,678,0.707,679,1.091,681,0.817,682,0.333,683,0.937,686,0.69,687,0.434,694,0.382,695,0.314,698,0.338,705,0.43,706,0.767,708,1.218,723,0.679,729,2.224,736,0.384,745,0.868,751,1.749,754,0.277,763,0.473,773,0.412,779,0.392,783,0.48,784,1.465,790,0.352,827,0.954,834,0.438,835,0.656,851,0.591,853,0.511,859,0.389,889,0.382,917,0.468,927,0.48,963,0.331,972,0.328,982,0.422,993,0.692,998,0.452,1024,0.933,1073,0.947,1075,0.365,1092,0.409,1108,2.205,1109,1.566,1122,0.473,1123,0.866,1130,0.392,1131,0.773,1138,0.848,1150,0.341,1201,1.221,1213,0.84,1219,0.426,1250,0.462,1285,0.468,1350,0.572,1416,1.075,1431,1.704,1434,0.692,1441,0.886,1456,0.278,1458,1.017,1468,0.762,1475,0.447,1483,0.292,1490,0.403,1508,0.896,1513,0.866,1515,0.48,1529,0.494,1551,0.426,1559,1.849,1596,0.52,1615,0.572,1617,0.556,1619,2.139,1620,1.187,1625,5.071,1627,8.013,1629,5.996,1632,0.615,1633,0.615,1634,0.556,1635,0.615,1636,0.615,1637,0.615,1638,0.615,1639,1.969,1640,0.438,1641,0.997,1642,2.622,1643,0.487,1644,0.572,1645,1.698,1646,0.615,1647,1.177,1648,1.179,1649,0.615,1650,0.875,1651,0.615,1652,1.179,1653,0.615,1654,0.615,1655,1.698,1656,1.133,1657,0.615,1658,0.615,1659,0.494,1660,0.591,1661,0.473,1662,0.615,1663,0.615,1664,0.615,1665,0.572,1666,0.615,1667,1.179,1668,0.615,1669,0.908,1670,0.615,1671,0.572,1672,0.572,1673,0.615,1674,0.615,1675,0.615,1676,0.615,1677,0.615,1678,0.615,1679,0.615,1680,0.615,1681,0.556,1682,0.487,1683,0.615,1684,0.615,1685,0.615,1686,5.001,1687,0.615,1688,0.556,1689,0.615,1690,1.179,1691,0.502,1692,0.52,1693,0.572,1694,0.615,1695,0.615,1696,0.615,1697,0.615,1698,0.615,1699,0.615,1700,0.615,1701,0.615,1702,1.179,1703,1.698,1704,1.698,1705,0.615,1706,0.615,1707,0.615,1708,0.434,1709,1.179,1710,1.179,1711,1.179,1712,0.615,1713,0.615,1714,0.615,1715,0.494,1716,0.615,1717,0.615,1718,1.698,1719,2.178,1720,2.178,1721,1.179,1722,0.615,1723,1.179,1724,1.179,1725,0.615,1726,0.52,1727,0.442,1728,1.179,1729,1.179,1730,0.947,1731,0.615,1732,0.615,1733,1.344,1734,0.615,1735,0.344,1736,0.615,1737,1.179,1738,1.179,1739,1.179,1740,1.698,1741,0.487,1742,0.615,1743,0.615,1744,0.615,1745,0.615,1746,0.647,1747,0.502,1748,0.591,1749,0.572,1750,0.48,1751,0.615,1752,0.572,1753,0.615]],["component/32",[7,0.401]],["title/33-1",[402,17.184,1456,33.432]],["name/33-1",[]],["text/33-1",[]],["component/33-1",[]],["title/33-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/33-2",[]],["text/33-2",[]],["component/33-2",[]],["title/33-3",[8,18.856,150,32.262]],["name/33-3",[]],["text/33-3",[]],["component/33-3",[]],["title/33-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/33-4",[]],["text/33-4",[]],["component/33-4",[]],["title/33-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/33-5",[]],["text/33-5",[]],["component/33-5",[]],["title/33-6",[8,16.222,137,31.686,746,27.183]],["name/33-6",[]],["text/33-6",[]],["component/33-6",[]],["title/33-7",[1255,32.348,1457,33.624]],["name/33-7",[]],["text/33-7",[]],["component/33-7",[]],["title/33",[105,24.225,311,30.628,1609,35.079,1754,41.4]],["name/33",[14,0.397,1612,0.551,1754,0.678]],["text/33",[5,3.282,8,1.327,13,1.777,14,2.259,17,3.844,18,2.43,48,4.338,84,3.185,88,2.41,105,3.308,118,1.784,136,2.049,137,2.592,138,3.538,139,1.939,148,1.804,155,3.731,168,2.773,214,2.06,271,2.54,308,2.212,316,2.601,356,2.868,402,1.209,406,2.662,460,2.308,487,2.373,514,3.327,608,2.784,617,2.991,679,3.169,686,3.094,695,2.658,708,2.907,754,2.34,833,4.002,963,2.796,1075,4.518,1461,2.948,1468,3.359,1472,3.172,1615,4.836,1754,5.653,1755,4.056,1756,4.836,1757,5.881]],["component/33",[7,0.401]],["title/34-1",[402,17.184,1456,33.432]],["name/34-1",[]],["text/34-1",[]],["component/34-1",[]],["title/34-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/34-2",[]],["text/34-2",[]],["component/34-2",[]],["title/34-3",[8,18.856,150,32.262]],["name/34-3",[]],["text/34-3",[]],["component/34-3",[]],["title/34-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/34-4",[]],["text/34-4",[]],["component/34-4",[]],["title/34-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/34-5",[]],["text/34-5",[]],["component/34-5",[]],["title/34-6",[8,16.222,137,31.686,746,27.183]],["name/34-6",[]],["text/34-6",[]],["component/34-6",[]],["title/34-7",[1255,32.348,1457,33.624]],["name/34-7",[]],["text/34-7",[]],["component/34-7",[]],["title/34",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/34",[1758,0.856,1759,0.764]],["text/34",[3,0.918,8,0.548,10,2.048,13,0.734,19,1.342,29,4.093,34,0.966,40,0.745,42,0.985,56,1.066,63,1.407,71,1.169,84,3.754,88,0.679,99,2.492,104,1.921,113,1.655,118,2.028,135,0.923,136,1.004,137,1.86,138,0.997,142,1.184,154,1.097,155,0.807,161,3.647,166,1.333,171,1.056,172,1.655,183,1.56,186,1.179,188,2.276,191,0.854,200,1.462,214,0.85,228,1.131,247,1.342,251,1.893,263,1.866,279,1.016,301,0.909,316,1.074,319,0.928,350,1.223,377,1.169,391,2.617,402,1.375,406,2.566,474,1.529,486,5.615,502,0.994,514,1.377,523,1.325,525,0.997,553,2.332,593,1.063,656,1.235,686,2.01,726,1.359,746,1.595,754,0.966,786,1.189,867,1.462,968,3.692,1076,1.049,1119,1.852,1150,2.067,1195,1.325,1451,1.751,1461,2.115,1483,1.77,1487,1.751,1528,2.562,1538,2.607,1540,1.782,1544,1.529,1545,1.675,1552,1.852,1557,1.852,1558,2.201,1585,2.541,1622,1.675,1691,1.751,1758,3.845,1759,4.582,1760,2.146,1761,1.996,1762,3.218,1763,3.373,1764,1.996,1765,1.996,1766,2.146,1767,1.996,1768,1.996,1769,1.941,1770,4.267,1771,1.996,1772,1.632,1773,2.146,1774,2.146,1775,3.73,1776,2.146,1777,2.146,1778,2.146,1779,1.612,1780,1.852,1781,1.941,1782,1.941,1783,1.675,1784,1.815,1785,2.146]],["component/34",[7,0.401]],["title/35-1",[402,17.184,1456,33.432]],["name/35-1",[]],["text/35-1",[]],["component/35-1",[]],["title/35-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/35-2",[]],["text/35-2",[]],["component/35-2",[]],["title/35-3",[8,18.856,150,32.262]],["name/35-3",[]],["text/35-3",[]],["component/35-3",[]],["title/35-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/35-4",[]],["text/35-4",[]],["component/35-4",[]],["title/35-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/35-5",[]],["text/35-5",[]],["component/35-5",[]],["title/35-6",[8,16.222,137,31.686,746,27.183]],["name/35-6",[]],["text/35-6",[]],["component/35-6",[]],["title/35-7",[1255,32.348,1457,33.624]],["name/35-7",[]],["text/35-7",[]],["component/35-7",[]],["title/35",[1128,32.569,1558,47.283,1786,33.829]],["name/35",[1558,0.776,1786,0.798]],["text/35",[3,0.893,5,3.114,6,1.052,8,0.929,10,2.401,13,0.714,14,0.907,17,2.473,29,3.135,30,1.643,32,0.877,40,1.68,49,1.517,56,1.037,84,3.796,88,1.835,99,1.834,103,1.607,105,0.907,113,0.926,118,2.479,121,1.207,130,1.297,135,1.565,136,1.303,137,1.815,138,2.249,154,1.067,155,0.785,161,1.459,211,1.113,228,2.551,271,2.365,279,0.988,280,0.982,320,1.245,395,1.368,402,1.126,406,2.525,408,1.142,461,1.733,464,1.349,486,2.336,514,2.428,531,1.056,552,0.882,558,1.487,615,1.201,656,1.201,670,1.157,686,1.967,695,1.067,726,2.305,746,1.557,754,0.939,774,1.446,865,1.152,903,1.219,1106,1.132,1107,1.157,1128,1.219,1150,3.644,1195,1.289,1214,1.459,1390,1.313,1434,2.137,1461,1.184,1465,1.676,1469,1.399,1483,0.991,1517,1.568,1524,1.473,1526,1.517,1527,1.517,1528,1.434,1537,1.676,1538,1.459,1543,1.733,1544,2.593,1545,1.628,1551,1.446,1556,2.336,1558,4.586,1565,1.676,1585,2.48,1590,1.676,1759,1.213,1787,1.841,1788,1.942,1789,1.841,1790,1.628,1791,1.888,1792,2.087,1793,2.087,1794,1.733,1795,3.211,1796,1.841,1797,1.942,1798,1.841,1799,1.841,1800,1.841,1801,1.733,1802,1.733,1803,1.676,1804,1.841,1805,1.733,1806,1.765,1807,1.628,1808,1.676,1809,1.733,1810,1.942,1811,1.733,1812,1.841,1813,1.733,1814,2.196,1815,3.386,1816,4.407,1817,1.942,1818,1.533]],["component/35",[7,0.401]],["title/36-1",[402,17.184,1456,33.432]],["name/36-1",[]],["text/36-1",[]],["component/36-1",[]],["title/36-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/36-2",[]],["text/36-2",[]],["component/36-2",[]],["title/36-3",[8,18.856,150,32.262]],["name/36-3",[]],["text/36-3",[]],["component/36-3",[]],["title/36-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/36-4",[]],["text/36-4",[]],["component/36-4",[]],["title/36-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/36-5",[]],["text/36-5",[]],["component/36-5",[]],["title/36-6",[8,16.222,137,31.686,746,27.183]],["name/36-6",[]],["text/36-6",[]],["component/36-6",[]],["title/36-7",[1255,32.348,1457,33.624]],["name/36-7",[]],["text/36-7",[]],["component/36-7",[]],["title/36",[1128,32.569,1786,33.829,1819,55.503]],["name/36",[1786,0.798,1819,0.911]],["text/36",[3,1.152,5,3.578,6,0.75,8,1.156,10,2.65,14,1.968,17,2.73,18,0.695,29,3.092,30,1.666,32,2.204,34,0.67,36,0.679,40,1.572,42,0.683,56,1.338,79,2.123,84,3.676,88,2.307,94,1.653,99,0.75,105,0.646,112,0.706,117,0.632,118,2.195,125,0.713,134,1.009,135,1.158,136,1.219,137,1.343,138,1.715,144,0.664,146,0.817,148,0.516,150,0.65,154,0.761,155,0.56,158,1.473,161,1.815,169,0.883,172,0.66,183,1.126,194,1.792,196,1.612,199,0.913,211,0.793,221,1.031,228,1.419,234,0.869,254,1.883,267,0.883,271,2.562,279,0.704,280,0.7,301,0.63,320,0.888,336,1.384,388,0.913,401,0.702,402,1.054,406,2.237,408,0.814,414,1.161,431,0.903,455,0.769,458,0.961,465,1.183,486,4.105,502,2.098,508,0.897,514,2.363,520,1.081,531,0.752,547,0.668,549,1.408,552,0.628,557,0.897,558,1.06,577,2.252,615,2.124,647,0.942,656,0.856,670,0.824,679,0.619,682,0.807,684,0.781,686,1.5,695,0.761,726,2.337,746,1.152,754,0.67,772,0.93,788,0.908,835,0.828,903,0.869,933,1.005,964,1.177,1106,0.807,1107,0.824,1125,1.82,1150,2.51,1168,1.145,1214,1.04,1287,0.99,1301,1.235,1352,2.376,1390,1.695,1434,0.873,1461,0.844,1469,0.997,1483,0.706,1528,1.022,1538,1.04,1544,1.918,1545,1.161,1551,1.031,1556,0.955,1557,1.284,1558,2.673,1565,1.195,1585,2.514,1669,1.145,1735,0.832,1759,0.865,1790,1.161,1791,1.345,1794,1.235,1801,1.235,1802,1.235,1803,1.195,1805,1.235,1807,1.161,1808,1.195,1809,1.235,1811,1.235,1813,1.235,1816,2.048,1819,5.309,1820,1.384,1821,2.236,1822,3.433,1823,3.256,1824,1.384,1825,1.384,1826,1.488,1827,1.145,1828,1.488,1829,1.488,1830,1.488,1831,1.384,1832,1.384,1833,1.488,1834,1.488,1835,1.488,1836,1.488,1837,1.488,1838,1.384,1839,1.312,1840,1.488,1841,1.488,1842,1.488,1843,1.258,1844,1.384,1845,1.312,1846,1.131,1847,1.384,1848,1.384,1849,1.195,1850,2.694,1851,2.376,1852,1.06,1853,1.384]],["component/36",[7,0.401]],["title/37-1",[402,17.184,1456,33.432]],["name/37-1",[]],["text/37-1",[]],["component/37-1",[]],["title/37-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/37-2",[]],["text/37-2",[]],["component/37-2",[]],["title/37-3",[8,18.856,150,32.262]],["name/37-3",[]],["text/37-3",[]],["component/37-3",[]],["title/37-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/37-4",[]],["text/37-4",[]],["component/37-4",[]],["title/37-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/37-5",[]],["text/37-5",[]],["component/37-5",[]],["title/37-6",[8,16.222,137,31.686,746,27.183]],["name/37-6",[]],["text/37-6",[]],["component/37-6",[]],["title/37",[1128,32.569,1786,33.829,1854,58.665,1855,45.501]],["name/37",[1786,0.798,1855,1.073]],["text/37",[3,0.864,5,3.29,6,1.018,8,0.516,10,2.935,17,2.417,18,0.944,26,1.49,29,3.269,30,2.13,32,0.849,36,0.922,40,1.637,56,1.003,79,2.212,82,1.399,84,3.731,88,1.793,99,1.782,112,0.959,118,2.21,134,1.325,135,1.521,136,1.525,137,1.763,138,2.192,144,0.901,146,1.109,148,1.227,154,1.032,155,0.76,161,2.27,172,0.896,183,1.479,196,0.882,211,1.077,221,1.399,228,1.064,234,1.18,240,1.517,267,1.198,271,2.305,279,0.956,320,1.205,401,0.953,402,1.318,406,1.98,408,1.104,431,1.225,486,4.547,502,1.638,508,1.218,514,2.819,520,1.467,531,1.021,541,1.622,552,0.853,558,1.438,577,2.879,590,1.598,615,2.715,656,1.162,670,1.119,672,1.387,679,0.84,682,1.095,686,1.917,695,1.032,746,1.513,754,0.909,788,1.232,835,1.124,933,1.364,1106,1.095,1107,1.119,1125,1.364,1139,1.387,1150,3.139,1214,1.412,1287,1.343,1291,1.535,1390,2.225,1434,1.186,1461,1.145,1469,1.354,1538,1.412,1556,1.296,1557,1.742,1558,1.192,1585,3.214,1669,1.555,1735,1.129,1762,4.888,1789,3.12,1790,1.576,1806,1.708,1807,1.576,1816,2.689,1827,1.555,1839,1.782,1845,1.782,1846,1.535,1851,3.12,1852,1.438,1855,3.85,1856,2.125,1857,2.125,1858,2.125,1859,2.125,1860,2.125,1861,2.125,1862,2.125,1863,2.125,1864,2.125,1865,2.125,1866,2.125,1867,2.125,1868,2.125,1869,2.125,1870,2.125,1871,2.125,1872,2.125,1873,2.125,1874,2.125,1875,2.125,1876,2.125,1877,1.782]],["component/37",[7,0.401]],["title/38-1",[402,17.184,1456,33.432]],["name/38-1",[]],["text/38-1",[]],["component/38-1",[]],["title/38-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/38-2",[]],["text/38-2",[]],["component/38-2",[]],["title/38-3",[8,18.856,150,32.262]],["name/38-3",[]],["text/38-3",[]],["component/38-3",[]],["title/38-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/38-4",[]],["text/38-4",[]],["component/38-4",[]],["title/38-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/38-5",[]],["text/38-5",[]],["component/38-5",[]],["title/38-6",[8,16.222,137,31.686,746,27.183]],["name/38-6",[]],["text/38-6",[]],["component/38-6",[]],["title/38-7",[1255,32.348,1457,33.624]],["name/38-7",[]],["text/38-7",[]],["component/38-7",[]],["title/38",[1128,32.569,1786,33.829,1878,69.118]],["name/38",[1786,0.798,1878,1.135]],["text/38",[3,0.595,5,1.854,8,0.647,10,1.781,13,0.475,26,1.47,29,3.244,30,1.941,40,1.492,56,0.691,84,3.83,88,1.104,99,0.701,101,0.696,105,1.516,118,1.198,135,0.598,136,0.939,137,1.263,138,1.177,142,0.767,143,1.43,146,0.764,148,0.483,151,1.771,154,0.711,155,0.523,161,2.459,172,0.617,191,0.554,199,0.854,214,1.004,228,1.335,239,0.682,240,1.045,248,0.724,251,0.706,262,0.834,271,1.238,279,0.658,287,1.021,300,0.964,350,0.792,402,1.001,406,2.704,408,1.386,446,1.325,457,1.021,464,0.899,486,4.238,502,0.644,506,1.045,514,2.07,531,0.703,547,0.624,552,0.587,583,1.48,656,0.8,678,0.834,682,0.754,686,1.418,694,0.864,695,1.295,726,3.549,736,0.869,746,1.084,754,0.626,850,1.841,895,1.071,911,1.337,968,1.398,1106,0.754,1107,0.771,1150,2.384,1195,0.859,1214,0.972,1250,1.045,1305,1.117,1390,2.706,1434,0.817,1461,0.789,1465,1.117,1469,0.932,1483,2.042,1514,1.071,1517,1.045,1526,1.011,1527,1.011,1528,2.955,1537,1.117,1538,0.972,1544,0.991,1547,1.337,1549,1.337,1550,1.337,1551,0.964,1556,0.892,1557,1.2,1558,1.496,1567,1.337,1585,1.726,1590,1.117,1634,1.258,1691,1.135,1759,0.808,1761,1.294,1762,2.186,1763,1.258,1790,1.085,1803,2.035,1806,1.176,1807,1.085,1808,1.117,1817,1.294,1823,2.235,1839,1.227,1878,5.294,1879,1.463,1880,1.135,1881,1.463,1882,1.463,1883,1.463,1884,1.463,1885,1.463,1886,1.463,1887,1.463,1888,6.455,1889,2.357,1890,1.463,1891,1.463,1892,5.896,1893,5.896,1894,1.463,1895,1.463,1896,1.463,1897,1.463,1898,1.463,1899,1.463,1900,2.666,1901,1.463,1902,1.463,1903,1.463,1904,1.463,1905,1.463,1906,1.463,1907,1.463,1908,1.294,1909,1.463,1910,1.463,1911,1.463,1912,1.463,1913,1.463,1914,1.463,1915,1.463,1916,1.337,1917,2.666,1918,1.463,1919,1.463,1920,1.463,1921,1.463,1922,1.463,1923,1.463,1924,1.258,1925,1.463,1926,1.463,1927,1.463,1928,1.463,1929,1.463,1930,1.337,1931,1.463,1932,1.463,1933,1.155,1934,1.463,1935,1.463]],["component/38",[7,0.401]],["title/39-1",[343,64.077]],["name/39-1",[]],["text/39-1",[]],["component/39-1",[]],["title/39-2",[402,17.184,1129,38.042]],["name/39-2",[]],["text/39-2",[]],["component/39-2",[]],["title/39-3",[402,17.184,1128,43.146]],["name/39-3",[]],["text/39-3",[]],["component/39-3",[]],["title/39-4",[311,34.906,402,14.783,1609,39.979]],["name/39-4",[]],["text/39-4",[]],["component/39-4",[]],["title/39-5",[402,20.515]],["name/39-5",[]],["text/39-5",[]],["component/39-5",[]],["title/39-6",[236,39.251]],["name/39-6",[]],["text/39-6",[]],["component/39-6",[]],["title/39-7",[163,33.101,319,27.465,402,14.783]],["name/39-7",[]],["text/39-7",[]],["component/39-7",[]],["title/39-8",[296,27.183,402,14.783,1936,41.347]],["name/39-8",[]],["text/39-8",[]],["component/39-8",[]],["title/39-9",[7,12.805,79,23.287,134,18.607,163,25.873,871,34.721]],["name/39-9",[]],["text/39-9",[]],["component/39-9",[]],["title/39",[7,19.043,402,17.184]],["name/39",[631,1.45]],["text/39",[5,1.382,6,0.91,7,0.466,8,1.335,13,1.788,14,1.877,16,5.21,24,1.01,26,2.523,29,2.111,34,3.229,40,0.627,42,0.829,52,2.09,56,1.593,70,1.429,77,1.06,79,1.503,84,1.511,88,0.572,90,1.503,99,0.91,104,0.93,105,0.785,113,0.802,117,1.361,118,1.483,128,1.066,134,3.157,135,1.378,136,1.612,137,2.154,139,0.674,144,0.806,146,1.761,148,1.112,151,1.263,152,1.299,155,1.206,160,2.925,161,1.284,163,2.251,168,0.963,169,1.072,171,0.888,172,0.802,178,0.971,183,1.34,192,0.956,196,1.887,214,0.716,236,0.804,239,0.885,248,2.725,251,0.917,263,2.162,267,3.104,271,1.566,275,0.934,279,1.517,296,1.848,297,1.844,301,2.536,311,2.873,316,0.904,319,1.385,324,1.341,335,1.083,340,1.129,343,1.312,354,1.115,361,0.865,386,1.044,395,1.184,401,0.852,402,2.314,406,1.829,408,0.988,431,1.096,450,1.241,455,1.657,465,1.897,514,0.667,519,3.726,525,1.489,547,0.811,548,1.22,593,0.894,608,1.716,615,1.039,643,1.499,647,2.736,661,1.499,665,1.723,666,1.122,674,3.563,676,1.241,678,2.592,681,1.251,683,0.996,686,0.734,723,0.722,741,1.159,742,1.299,744,1.274,779,1.151,786,1.001,790,1.034,871,1.263,900,1.211,903,1.872,937,1.23,983,1.357,1076,2.111,1106,0.979,1107,1.001,1128,3.056,1129,3.695,1144,1.39,1166,1.474,1306,2.661,1400,1.001,1403,1.286,1418,1.736,1444,1.736,1468,1.167,1473,1.241,1477,1.039,1487,2.615,1558,1.066,1609,3.291,1610,1.184,1611,1.263,1708,1.274,1755,1.409,1758,1.175,1759,1.05,1819,1.251,1821,1.499,1855,1.474,1878,1.558,1936,2.085,1937,1.68,1938,1.68,1939,1.9,1940,1.68,1941,1.9,1942,2.772,1943,1.527,1944,1.68,1945,1.211,1946,1.499,1947,1.499,1948,1.527,1949,1.9,1950,1.326,1951,1.9,1952,1.474,1953,1.9,1954,1.9,1955,1.68,1956,1.9,1957,1.9,1958,1.9,1959,1.9,1960,1.9,1961,1.527,1962,1.474,1963,2.765,1964,1.558,1965,1.558,1966,1.9]],["component/39",[7,0.401]],["title/40-1",[0,39.238,1,51.636]],["name/40-1",[]],["text/40-1",[]],["component/40-1",[]],["title/40",[2,44.313,3,31.597]],["name/40",[2,0.789,3,0.563]],["text/40",[0,2.842,1,6.745,2,1.976,3,4.127,4,1.924,5,1.42,6,1.66,7,0.849,8,1.724,9,3.707,10,2.216,11,6.166,12,4.598,13,1.126,14,1.431,15,1.772,16,3.644,17,4.289,18,4.857,19,2.06,20,1.924,21,3.064,22,2.735,23,1.549,24,2.992,25,2.504,26,1.388,27,3.064,28,2.906,29,2.159,30,3.048,31,1.859,32,2.248,33,3.574,34,2.408,35,2.978,36,1.504,37,2.022,38,1.886,39,3.064,40,1.143,41,3.064,42,1.513,43,2.786,44,3.064,45,2.501,46,2.419,47,3.064,48,4.43,49,2.394,50,5.958,51,3.064,52,1.594,53,3.064,54,3.048,55,3.064,56,3.356,57,3.109,58,3.41,59,3.064,60,3.41,61,3.064,62,2.843,63,2.159,64,4.018,65,2.263,66,3.064,67,3.064,68,2.01,69,2.504,70,2.607,71,1.794,72,3.064,73,3.064,74,2.735,75,2.607,76,2.086,77,1.934]],["component/40",[7,0.401]],["title/41-1",[78,56.976]],["name/41-1",[]],["text/41-1",[]],["component/41-1",[]],["title/41-2",[45,41.22]],["name/41-2",[]],["text/41-2",[]],["component/41-2",[]],["title/41-3",[79,41.345]],["name/41-3",[]],["text/41-3",[]],["component/41-3",[]],["title/41-4",[80,62.807]],["name/41-4",[]],["text/41-4",[]],["component/41-4",[]],["title/41-5",[81,84.764]],["name/41-5",[]],["text/41-5",[]],["component/41-5",[]],["title/41-6",[11,37.709,12,34.172,82,44.029]],["name/41-6",[]],["text/41-6",[]],["component/41-6",[]],["title/41-7",[83,47.73,84,18.35,85,52.752]],["name/41-7",[]],["text/41-7",[]],["component/41-7",[]],["title/41-8",[9,61.1]],["name/41-8",[]],["text/41-8",[]],["component/41-8",[]],["title/41-9",[3,27.183,32,26.708,42,29.179]],["name/41-9",[]],["text/41-9",[]],["component/41-9",[]],["title/41-10",[86,46.845]],["name/41-10",[]],["text/41-10",[]],["component/41-10",[]],["title/41-11",[2,44.313,87,48.06]],["name/41-11",[]],["text/41-11",[]],["component/41-11",[]],["title/41-12",[11,37.709,12,34.172,88,20.111]],["name/41-12",[]],["text/41-12",[]],["component/41-12",[]],["title/41-13",[11,43.832,48,42.087]],["name/41-13",[]],["text/41-13",[]],["component/41-13",[]],["title/41-14",[29,25.643,88,20.111,89,52.752]],["name/41-14",[]],["text/41-14",[]],["component/41-14",[]],["title/41-15",[82,38.632,90,26.141,91,33.087,92,34.857]],["name/41-15",[]],["text/41-15",[]],["component/41-15",[]],["title/41-16",[10,23.093,48,31.77,90,26.141,93,32.738]],["name/41-16",[]],["text/41-16",[]],["component/41-16",[]],["title/41-17",[76,35.306,88,17.646,90,26.141,94,34.226]],["name/41-17",[]],["text/41-17",[]],["component/41-17",[]],["title/41-18",[90,29.793,95,42.597,96,31.151]],["name/41-18",[]],["text/41-18",[]],["component/41-18",[]],["title/41-19",[90,26.141,97,37.981,98,36.81,99,28.096]],["name/41-19",[]],["text/41-19",[]],["component/41-19",[]],["title/41-20",[90,26.141,100,47.149,101,27.899,102,31.619]],["name/41-20",[]],["text/41-20",[]],["component/41-20",[]],["title/41-21",[90,26.141,103,42.927,104,28.716,105,24.225]],["name/41-21",[]],["text/41-21",[]],["component/41-21",[]],["title/41-22",[48,28.301,90,23.287,106,32.55,107,35.376,108,35.376]],["name/41-22",[]],["text/41-22",[]],["component/41-22",[]],["title/41-23",[48,42.087,88,23.377]],["name/41-23",[]],["text/41-23",[]],["component/41-23",[]],["title/41-24",[88,23.377,109,62.461]],["name/41-24",[]],["text/41-24",[]],["component/41-24",[]],["title/41-25",[7,16.382,110,30.353,111,36.036]],["name/41-25",[]],["text/41-25",[]],["component/41-25",[]],["title/41-26",[110,30.353,112,30.163,113,28.207]],["name/41-26",[]],["text/41-26",[]],["component/41-26",[]],["title/41-27",[102,36.036,110,30.353,111,36.036]],["name/41-27",[]],["text/41-27",[]],["component/41-27",[]],["title/41-28",[48,36.208,105,27.609,110,30.353]],["name/41-28",[]],["text/41-28",[]],["component/41-28",[]],["title/41-29",[52,35.736,114,77.717]],["name/41-29",[]],["text/41-29",[]],["component/41-29",[]],["title/41-30",[29,25.643,88,20.111,89,52.752]],["name/41-30",[]],["text/41-30",[]],["component/41-30",[]],["title/41-31",[48,36.208,88,20.111,115,37.709]],["name/41-31",[]],["text/41-31",[]],["component/41-31",[]],["title/41-32",[110,35.281,116,41.887]],["name/41-32",[]],["text/41-32",[]],["component/41-32",[]],["title/41-33",[7,14.374,52,26.976,117,23.67,118,19.133]],["name/41-33",[]],["text/41-33",[]],["component/41-33",[]],["title/41-34",[52,21.665,92,27.995,110,21.389,112,21.255,113,19.877,119,31.893]],["name/41-34",[]],["text/41-34",[]],["component/41-34",[]],["title/41-35",[11,43.832,54,42.087]],["name/41-35",[]],["text/41-35",[]],["component/41-35",[]],["title/41-36",[29,25.643,88,20.111,89,52.752]],["name/41-36",[]],["text/41-36",[]],["component/41-36",[]],["title/41-37",[3,21.247,90,23.287,91,29.474,105,21.58,120,30.31]],["name/41-37",[]],["text/41-37",[]],["component/41-37",[]],["title/41-38",[82,34.414,90,23.287,92,31.051,93,29.164,121,28.72]],["name/41-38",[]],["text/41-38",[]],["component/41-38",[]],["title/41-39",[17,19.106,18,20.931,90,20.995,94,27.488,102,25.393,122,30.76]],["name/41-39",[]],["text/41-39",[]],["component/41-39",[]],["title/41-40",[17,19.106,18,20.931,90,20.995,95,30.017,123,31.893,124,34.475]],["name/41-40",[]],["text/41-40",[]],["component/41-40",[]],["title/41-41",[56,27.706,88,17.646,90,26.141,97,37.981]],["name/41-41",[]],["text/41-41",[]],["component/41-41",[]],["title/41-42",[88,20.111,99,32.021,113,28.207]],["name/41-42",[]],["text/41-42",[]],["component/41-42",[]],["title/41-43",[110,35.281,116,41.887]],["name/41-43",[]],["text/41-43",[]],["component/41-43",[]],["title/41-44",[105,27.609,110,30.353,115,37.709]],["name/41-44",[]],["text/41-44",[]],["component/41-44",[]],["title/41-45",[11,43.832,60,47.08]],["name/41-45",[]],["text/41-45",[]],["component/41-45",[]],["title/41-46",[29,25.643,88,20.111,89,52.752]],["name/41-46",[]],["text/41-46",[]],["component/41-46",[]],["title/41-47",[17,21.192,18,23.217,60,31.658,90,23.287,91,29.474]],["name/41-47",[]],["text/41-47",[]],["component/41-47",[]],["title/41-48",[90,26.141,93,32.738,110,26.632,125,26.717]],["name/41-48",[]],["text/41-48",[]],["component/41-48",[]],["title/41-49",[82,38.632,90,26.141,92,34.857,94,34.226]],["name/41-49",[]],["text/41-49",[]],["component/41-49",[]],["title/41-50",[76,31.451,88,15.719,90,23.287,95,33.294,126,36.88]],["name/41-50",[]],["text/41-50",[]],["component/41-50",[]],["title/41-51",[76,35.306,88,17.646,90,26.141,97,37.981]],["name/41-51",[]],["text/41-51",[]],["component/41-51",[]],["title/41-52",[90,26.141,100,47.149,127,36.81,128,32.911]],["name/41-52",[]],["text/41-52",[]],["component/41-52",[]],["title/41-53",[88,15.719,90,23.287,103,38.239,113,22.047,129,24.03]],["name/41-53",[]],["text/41-53",[]],["component/41-53",[]],["title/41-54",[88,14.172,90,20.995,102,25.393,106,29.346,122,30.76,130,27.821]],["name/41-54",[]],["text/41-54",[]],["component/41-54",[]],["title/41-55",[88,20.111,99,32.021,113,28.207]],["name/41-55",[]],["text/41-55",[]],["component/41-55",[]],["title/41-56",[110,35.281,116,41.887]],["name/41-56",[]],["text/41-56",[]],["component/41-56",[]],["title/41-57",[7,14.374,32,23.434,42,25.602,87,36.279]],["name/41-57",[]],["text/41-57",[]],["component/41-57",[]],["title/41-58",[131,84.764]],["name/41-58",[]],["text/41-58",[]],["component/41-58",[]],["title/41-59",[132,71,133,46.178]],["name/41-59",[]],["text/41-59",[]],["component/41-59",[]],["title/41-60",[134,33.036]],["name/41-60",[]],["text/41-60",[]],["component/41-60",[]],["title/41-61",[33,39.082,113,32.787]],["name/41-61",[]],["text/41-61",[]],["component/41-61",[]],["title/41-62",[135,37.916]],["name/41-62",[]],["text/41-62",[]],["component/41-62",[]],["title/41-63",[87,32.317,136,13.368,137,24.766,138,23.078,139,18.53]],["name/41-63",[]],["text/41-63",[]],["component/41-63",[]],["title/41-64",[16,50.316,88,23.377]],["name/41-64",[]],["text/41-64",[]],["component/41-64",[]],["title/41-65",[88,17.646,140,58.665,141,40.946,142,30.762]],["name/41-65",[]],["text/41-65",[]],["component/41-65",[]],["title/41-66",[13,25.254,105,32.092]],["name/41-66",[]],["text/41-66",[]],["component/41-66",[]],["title/41-67",[29,29.806,143,41.69]],["name/41-67",[]],["text/41-67",[]],["component/41-67",[]],["title/41-68",[110,30.353,139,23.708,144,28.362]],["name/41-68",[]],["text/41-68",[]],["component/41-68",[]],["title/41-69",[7,16.382,145,42.597,146,34.906]],["name/41-69",[]],["text/41-69",[]],["component/41-69",[]],["title/41",[147,48.764,148,25.631]],["name/41",[10,0.545,42,0.604]],["text/41",[2,0.792,3,1.501,4,0.167,6,1.85,7,1.925,8,1.261,9,0.915,10,2.417,11,2.857,12,1.797,13,1.022,14,0.358,15,0.153,16,2.158,17,1.497,18,0.503,19,0.178,20,0.327,28,0.252,29,0.975,32,1.257,33,0.823,34,1.426,36,0.376,37,0.175,38,0.616,40,0.619,42,1.964,43,0.473,45,0.617,48,3.546,50,0.494,52,2.137,54,2.594,56,0.278,57,0.626,58,0.182,60,2.237,63,1.02,68,0.95,69,0.217,70,1.751,71,0.847,74,0.683,75,0.852,76,1.267,77,0.775,79,0.386,80,1.108,81,0.538,82,2.544,83,0.809,84,0.639,85,0.464,86,0.437,87,1.701,88,1.713,89,0.683,90,1.402,92,1.511,96,0.763,98,1.461,99,2.89,101,1.672,102,2.657,104,0.554,105,2.491,107,0.941,108,0.586,109,0.473,110,2.788,111,4.511,112,0.135,113,3.315,115,2.538,116,2.343,117,2.2,118,1.418,119,0.398,122,1.225,125,0.268,126,3.848,128,0.635,129,0.639,130,0.821,131,1.496,132,0.274,133,0.35,134,1.755,135,0.861,136,0.222,137,0.279,139,0.493,141,0.21,142,0.729,143,1.13,144,0.694,146,0.307,148,0.458,149,0.3,150,0.125,151,0.391,152,0.592,153,0.22,154,0.421,155,0.832,156,0.3,157,3.929,158,0.45,159,0.3,160,0.739,161,1.339,162,0.21,163,0.149,164,0.677,165,1.214,166,2.18,167,0.473,168,0.83,169,0.639,170,0.826,171,1.286,172,1.7,173,0.3,174,0.229,175,0.3,176,0.3,177,0.265,178,1.406,179,0.201,180,0.673,181,0.214,182,0.265,183,0.119,184,0.494,185,0.395,186,0.307,187,0.95,188,0.502,189,0.771,190,0.177,191,0.797,192,0.943,193,0.3,194,1.866,195,0.357,196,0.68,197,1.876,198,0.3,199,1.945,200,0.733,201,0.207,202,0.223,203,0.505,204,0.241,205,0.229,206,1.143,207,0.237,208,0.252,209,0.203,210,0.3,211,1.289,212,0.3,213,0.3,214,1.111,215,0.598,216,0.3,217,0.3,218,0.3,219,0.3,220,0.598,221,0.198,222,0.683,223,0.237,224,0.288,225,0.214,226,0.711,227,0.194,228,0.15,229,0.3,230,0.258,231,1.108,232,0.464,233,0.726,234,0.771,235,0.265,236,0.127,237,0.589,238,0.42,239,0.14,240,0.809,241,0.464,242,0.214,243,1.993,244,0.3,245,0.398,246,0.246,247,2.761,248,0.561,249,0.305,250,0.205,251,0.145,252,0.621,253,0.381,254,0.199,255,0.933,256,0.252,257,0.258,258,0.223,259,0.265,260,0.217,261,0.246,262,1.45,263,0.412,264,1.114,265,0.198,266,0.22,267,0.639,268,0.184,269,0.3,270,0.879,271,0.139,272,0.471,273,0.237,274,0.589,275,0.425,276,0.3,277,0.798,278,0.961,279,0.625,280,0.838,281,0.866,282,0.175,283,0.174,284,1.637,285,0.437,286,0.17,287,0.21,288,0.237,289,0.223,290,0.589,291,1.133,292,1.68,293,0.359,294,3.978,295,0.3,296,0.352,297,1.152,298,0.589,299,0.3,300,0.198,301,1.486,302,0.3,303,0.3,304,0.611,305,0.3,306,0.3,307,0.3,308,0.238,309,0.494,310,1.133,311,0.591,312,0.3,313,2.116,314,0.265,315,1.06,316,0.661,317,0.203,318,0.866,319,0.771,320,1.674,321,1.658,322,0.782,323,1.637,324,0.212,325,0.186,326,1.133,327,1.061,328,0.223,329,0.3,330,0.892,331,0.586,332,0.233,333,0.174,334,0.3,335,1.07,336,1.658,337,0.246,338,0.22,339,0.3,340,1.754,341,0.336,342,1.27,343,0.782,344,0.237,345,0.894,346,0.829,347,1.061,348,0.892,349,2.349,350,0.469,351,0.26,352,0.212,353,0.252,354,0.176,355,0.885,356,0.594,357,0.486,358,0.3,359,1.876,360,0.818,361,1.253,362,0.3,363,0.3,364,0.589,365,1.133,366,0.589,367,0.866,368,0.589,369,0.3,370,0.3,371,0.589,372,1.133,373,0.3,374,0.214,375,0.191,376,0.3,377,0.719,378,0.203,379,1.096,380,0.866,381,0.766,382,0.766,383,1.637,384,0.71,385,1.133,386,0.623,387,0.866,388,0.661,389,0.265,390,0.766,391,0.435,392,0.766,393,0.274,394,0.188,395,0.187,396,0.258,397,0.852,398,0.217,399,0.3,400,0.3,401,0.135,402,0.13,403,0.212,404,0.237,405,0.258,406,0.7,407,0.3,408,0.306,409,0.3,410,0.3,411,0.226,412,0.395,413,0.246,414,0.223,415,0.198,416,0.3,417,0.3,418,0.449,419,0.589,420,0.407,421,0.161,422,0.589,423,1.133,424,0.21,425,0.265,426,0.274,427,0.3,428,0.464,429,0.199,430,0.203,431,0.339,432,0.229,433,0.3,434,0.265,435,0.3,436,0.483,437,0.589,438,0.21,439,0.635,440,0.369,441,0.354,442,0.21,443,0.456,444,0.3,445,0.184,446,0.149,447,0.274,448,0.3,450,0.196,451,0.294,452,0.205,453,0.538,454,0.3,455,0.289,456,0.3,457,0.21,458,0.184,459,0.359,460,0.127,461,0.464,462,0.3,463,0.3,464,0.184,465,0.125,466,0.169,467,1.658,468,0.883,469,0.3,470,1.908,471,0.3,472,0.866,473,0.3,474,0.203,475,0.258,476,0.672,477,0.3,478,0.437,479,1.39,480,0.246,481,2.781,482,1.511,483,1.81,484,0.381,485,0.3,486,0.359,487,1.01,488,0.3,489,0.3,490,0.3,491,0.3,492,0.203,493,0.464,494,0.3,495,1.39,496,0.3,497,0.3,498,0.3,499,0.3,500,1.321,501,0.3,502,0.612,503,0.506,504,1.637,505,0.187,506,0.618,507,0.589,508,0.172,509,0.696,510,0.274,511,0.237,512,0.3,513,0.237,514,0.398,515,0.3,516,0.246,517,0.173,518,0.398,519,0.586,520,0.207,521,0.194,522,0.274,523,0.176,524,0.3,525,0.26,526,0.237,527,0.3,528,0.168,529,0.3,530,0.3,531,0.144,532,0.395,533,0.3,534,0.3,535,0.3,536,0.223,537,0.3,538,0.226,539,0.22,540,0.3,541,0.229,542,0.265,543,0.3,544,1.035,545,0.575,546,0.22,547,0.251,548,0.193,549,0.149,550,0.3,551,0.3,552,0.121,553,0.178,554,0.3,555,0.3,556,0.178,557,0.172,558,0.203,740,0.233,913,0.233,1010,0.203,1289,0.241,1310,0.223]],["component/41",[7,0.401]],["title/42",[32,26.708,45,29.703,130,39.481]],["name/42",[45,0.615,559,1.223]],["text/42",[11,7.147,16,5.09,26,3.148,45,3.492,48,4.257,52,3.615,54,4.257,60,4.762,77,5.752,91,4.434,155,4.112,191,2.974,232,6.202,560,6.95,561,6.95,562,6.95,563,6.95,564,7.182,565,7.861,566,6.95,567,5.374,568,6.95]],["component/42",[7,0.401]],["title/43-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/43-1",[]],["text/43-1",[]],["component/43-1",[]],["title/43-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/43-2",[]],["text/43-2",[]],["component/43-2",[]],["title/43-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/43-3",[]],["text/43-3",[]],["component/43-3",[]],["title/43-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/43-4",[]],["text/43-4",[]],["component/43-4",[]],["title/43-5",[148,25.631,582,61.318]],["name/43-5",[]],["text/43-5",[]],["component/43-5",[]],["title/43-6",[84,9.983,136,9.304,137,17.238,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156]],["name/43-6",[]],["text/43-6",[]],["component/43-6",[]],["title/43-7",[586,53.814]],["name/43-7",[]],["text/43-7",[]],["component/43-7",[]],["title/43",[587,73.205]],["name/43",[587,1.949]],["text/43",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,137,1.771,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303]],["component/43",[7,0.401]],["title/44-1",[7,22.734]],["name/44-1",[]],["text/44-1",[]],["component/44-1",[]],["title/44-2",[4,43.146,7,19.043]],["name/44-2",[]],["text/44-2",[]],["component/44-2",[]],["title/44-3",[239,31.151,308,27.045,629,59.109]],["name/44-3",[]],["text/44-3",[]],["component/44-3",[]],["title/44-4",[7,19.043,8,18.856]],["name/44-4",[]],["text/44-4",[]],["component/44-4",[]],["title/44-5",[7,14.374,104,28.716,117,23.67,118,19.133]],["name/44-5",[]],["text/44-5",[]],["component/44-5",[]],["title/44-6",[118,21.806,402,14.783,583,37.119]],["name/44-6",[]],["text/44-6",[]],["component/44-6",[]],["title/44-7",[402,17.184,630,46.471]],["name/44-7",[]],["text/44-7",[]],["component/44-7",[]],["title/44-8",[14,27.609,183,26.577,349,34.906]],["name/44-8",[]],["text/44-8",[]],["component/44-8",[]],["title/44",[7,19.043,78,47.724]],["name/44",[631,1.45]],["text/44",[2,1.51,5,1.085,7,0.649,8,1.092,9,1.745,11,1.494,13,2.52,14,3.202,17,1.825,24,1.408,29,1.726,32,1.058,34,2.511,52,2.07,57,1.463,71,1.371,84,0.727,86,1.337,104,1.297,105,2.858,112,2.031,117,3.129,118,3.331,125,2.05,126,1.869,129,1.218,134,1.603,136,1.984,138,1.17,139,1.596,144,1.909,148,1.936,150,1.1,153,1.938,155,1.609,160,2.392,161,3.211,163,1.312,178,1.354,181,1.891,186,2.35,196,1.869,214,0.998,224,1.297,226,1.662,234,1.471,247,2.675,264,0.885,275,1.302,280,2.012,282,1.546,286,2.552,292,1.414,296,2.386,301,1.066,308,3.136,315,1.715,316,1.26,320,1.502,338,1.938,401,2.018,402,1.53,421,1.421,445,1.627,455,2.884,458,1.627,460,1.118,514,1.58,523,1.555,525,1.17,526,3.551,552,1.063,557,2.581,580,1.51,604,1.435,632,2.518,633,2.342,634,2.342,635,2.277,636,3.691,637,2.055,638,2.342,639,2.518,640,2.09,641,2.172,642,2.055,643,2.09,644,2.129,645,2.172,646,2.277,647,2.709,648,2.342,649,2.022,650,2.342,651,3.979,652,2.172,653,2.649,654,1.83,655,2.518,656,2.462,657,2.342,658,2.277,659,1.938,660,2.277,661,2.09,662,2.129,663,2.939,664,2.055,665,2.301,666,1.564,667,3.979,668,1.354,669,2.42,670,2.371,671,2.342,672,1.73,673,1.292,674,3.8,675,1.73,676,1.73,677,1.616,678,2.567,679,1.048,680,1.322,681,1.745,682,1.365,683,1.389,684,1.322,685,2.649,686,1.023]],["component/44",[7,0.401]],["title/45-1",[136,19.88,684,38.775]],["name/45-1",[]],["text/45-1",[]],["component/45-1",[]],["title/45-2",[88,23.377,142,40.753]],["name/45-2",[]],["text/45-2",[]],["component/45-2",[]],["title/45-3",[6,32.021,687,44.832,688,51.858]],["name/45-3",[]],["text/45-3",[]],["component/45-3",[]],["title/45-4",[411,58.446,689,52.112]],["name/45-4",[]],["text/45-4",[]],["component/45-4",[]],["title/45-5",[136,19.88,137,36.831]],["name/45-5",[]],["text/45-5",[]],["component/45-5",[]],["title/45-6",[487,33.721,680,38.775]],["name/45-6",[]],["text/45-6",[]],["component/45-6",[]],["title/45-7",[236,39.251]],["name/45-7",[]],["text/45-7",[]],["component/45-7",[]],["title/45-8",[3,37.722]],["name/45-8",[]],["text/45-8",[]],["component/45-8",[]],["title/45",[136,23.734]],["name/45",[631,1.45]],["text/45",[0,1.019,3,1.446,4,1.12,5,0.827,6,2.283,7,0.494,8,0.863,12,1.031,15,1.031,17,2.657,18,0.896,29,1.364,30,0.865,32,0.806,34,1.521,35,1.067,36,2.493,38,1.935,40,0.665,52,1.635,54,1.093,57,1.964,68,1.17,69,1.458,77,3.206,84,0.554,86,1.795,88,1.728,91,1.138,93,1.126,99,2.283,110,0.916,112,0.91,113,1.5,117,2.318,121,1.109,123,1.366,125,0.919,133,2.113,134,1.266,135,2.678,136,2.563,137,3.106,138,1.57,139,2.768,142,1.864,148,0.665,155,2.343,157,1.565,160,1.072,166,1.191,171,2.228,172,2.765,178,1.031,179,1.353,183,0.802,192,1.015,196,1.476,211,1.023,214,3.289,226,2.231,248,0.999,249,1.044,252,0.902,264,0.674,272,1.098,283,1.17,286,1.144,294,1.784,297,1.103,301,0.812,308,1.928,309,1.692,319,0.829,327,1.54,331,1.84,333,1.17,335,1.15,340,1.199,377,1.84,381,1.784,391,1.015,402,0.446,411,1.517,412,1.353,421,1.082,443,1.063,446,1.003,455,1.747,458,1.239,487,2.843,505,1.257,509,2.927,536,3.535,547,0.861,548,2.283,549,2.369,552,0.81,556,1.199,557,1.157,583,1.974,593,0.95,608,1.027,612,1.592,622,2.538,636,1.654,663,2.321,665,1.031,668,1.817,673,1.734,674,1.306,679,1.886,680,3.607,682,1.04,683,1.058,684,1.774,689,1.353,690,1.214,691,1.654,692,2.017,693,2.017,694,1.191,695,2.792,696,1.565,697,1.163,698,1.053,699,1.784,700,1.784,701,2.017,702,1.784,703,1.784,704,1.784,705,1.34,706,2.199,707,1.784,708,2.534,709,1.784,710,2.017,711,2.154,712,1.257,713,1.784,714,1.784,715,2.017,716,1.592,717,1.44,718,1.784,719,1.114,720,1.734,721,2.017,722,4.214,723,0.767,724,1.621,725,1.784,726,1.214,727,1.692,728,1.103,729,1.248,730,1.44,731,1.54,732,3.037,733,1.34,734,1.393,735,3.061,736,2.113,737,1.692,738,1.592,739,1.918,740,1.565,741,1.23,742,1.379,743,1.126,744,1.353]],["component/45",[7,0.401]],["title/46-1",[78,56.976]],["name/46-1",[]],["text/46-1",[]],["component/46-1",[]],["title/46-2",[84,18.35,142,35.06,745,32.486]],["name/46-2",[]],["text/46-2",[]],["component/46-2",[]],["title/46",[136,15.007,137,27.802,214,22.092,264,19.605]],["name/46",[137,0.656,214,0.521]],["text/46",[8,2.362,30,2.459,34,2.452,86,2.894,105,2.367,117,3.344,118,1.869,129,2.635,135,3.387,136,2.12,137,3.928,142,5.105,144,2.431,155,2.963,168,2.905,183,2.278,214,2.158,249,2.966,264,1.915,278,3.364,391,2.882,487,2.487,514,2.012,536,4.25,630,3.427,666,3.384,717,4.091,719,3.166,720,4.926,726,3.449,743,3.198,746,2.33,747,5.731,748,5.731,749,5.731,750,5.731,751,4.375,752,4.876,753,5.731,754,2.452,755,4.375,756,3.808,757,5.067,758,4.194,759,5.731,760,3.843,761,5.731,762,4.141,763,4.194,764,3.918,765,3.958,766,3.711]],["component/46",[7,0.401]],["title/47-1",[729,57.377]],["name/47-1",[]],["text/47-1",[]],["component/47-1",[]],["title/47-2",[84,21.33,706,48.06]],["name/47-2",[]],["text/47-2",[]],["component/47-2",[]],["title/47-3",[514,27.277,706,48.06]],["name/47-3",[]],["text/47-3",[]],["component/47-3",[]],["title/47-4",[786,48.87]],["name/47-4",[]],["text/47-4",[]],["component/47-4",[]],["title/47-5",[1967,66.236]],["name/47-5",[]],["text/47-5",[]],["component/47-5",[]],["title/47-6",[52,30.744,350,36.208,680,33.358]],["name/47-6",[]],["text/47-6",[]],["component/47-6",[]],["title/47-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/47-7",[]],["text/47-7",[]],["component/47-7",[]],["title/47-8",[502,40.851]],["name/47-8",[]],["text/47-8",[]],["component/47-8",[]],["title/47",[136,17.103,487,29.01,680,33.358]],["name/47",[487,0.6,680,0.69]],["text/47",[4,0.98,7,0.774,8,0.428,13,0.574,14,0.729,17,2.115,18,1.403,20,0.98,26,2.401,29,0.677,32,0.705,35,3.172,36,0.766,38,2.331,46,1.232,52,2.398,71,0.914,84,2.53,96,0.822,101,3.44,108,1.195,110,0.801,112,1.933,117,2.919,118,1.955,125,1.951,134,2.754,136,1.851,142,0.926,148,0.582,155,1.864,157,2.449,161,0.672,163,0.874,164,1.055,165,1.143,170,1.049,171,1.476,172,2.529,178,0.902,180,1.049,195,1.069,196,2.165,214,1.189,226,1.981,239,0.822,247,1.049,248,1.563,250,1.207,252,1.915,255,1.8,263,2.48,275,0.867,277,2.089,279,0.794,280,0.789,297,2.343,301,2.912,315,1.143,319,0.725,327,1.347,331,2.217,340,1.049,346,1.291,347,1.347,351,0.779,375,1.124,377,1.634,378,1.195,386,0.97,391,2.154,395,1.099,398,1.275,418,1.347,430,1.195,446,0.877,451,0.881,452,1.207,455,3.8,458,1.084,465,0.737,487,3.546,505,1.099,508,1.012,514,1.504,525,2.303,547,0.753,583,1.753,597,0.98,604,2.32,608,0.898,622,2.254,665,0.902,673,1.54,679,3.757,680,4.982,682,0.91,683,1.656,686,1.655,689,1.183,698,0.921,705,1.173,708,0.938,712,3.248,729,1.091,730,3.058,731,1.347,732,2.729,733,1.173,734,1.219,735,2.751,736,2.546,737,1.48,738,1.393,741,1.926,745,0.858,770,1.56,771,2.449,772,1.876,773,1.124,774,1.162,775,1.309,776,1.56,777,1.56,778,1.56,779,2.595,780,1.447,781,2.589,782,1.48,783,1.309,785,2.647,786,1.663,787,1.56,788,1.024,789,1.517,790,0.96,889,1.864,973,1.291,985,1.069,993,0.985,1010,1.195,1033,2.929,1076,0.82,1097,2.117,1219,1.162,1416,1.062,1478,1.419,1551,1.162,1640,1.195,1659,1.347,1730,1.347,1733,1.327,1933,1.393,1943,1.419,1967,1.26,1968,1.612,1969,1.447,1970,1.48,1971,2.885,1972,1.612,1973,2.647,1974,1.517,1975,1.612,1976,1.612,1977,1.612,1978,1.48,1979,1.612,1980,1.612]],["component/47",[7,0.401]],["title/48",[468,43.669]],["name/48",[631,1.45]],["text/48",[]],["component/48",[7,0.401]],["title/49-1",[3,37.722]],["name/49-1",[]],["text/49-1",[]],["component/49-1",[]],["title/49-2",[102,50.007]],["name/49-2",[]],["text/49-2",[]],["component/49-2",[]],["title/49-3",[139,23.708,296,27.183,514,23.467]],["name/49-3",[]],["text/49-3",[]],["component/49-3",[]],["title/49-4",[90,23.287,391,26.28,859,31.451,889,30.859,890,32.091]],["name/49-4",[]],["text/49-4",[]],["component/49-4",[]],["title/49",[135,37.916]],["name/49",[631,1.45]],["text/49",[3,1.389,5,1.4,8,0.829,10,2.19,14,2.297,17,1.386,29,1.31,31,1.833,37,1.993,38,1.859,40,1.127,79,1.523,84,2.77,86,2.809,88,1.673,107,3.766,112,2.51,113,2.969,117,1.379,118,1.114,122,2.231,134,1.981,135,3.649,136,0.874,142,2.917,148,1.127,152,2.336,155,1.222,178,1.746,183,2.797,196,1.418,243,4.208,248,1.692,249,1.769,251,1.648,252,3.145,253,2.212,254,2.27,263,1.625,275,1.679,296,2.262,313,4.235,319,2.891,320,1.938,328,2.534,342,3.122,351,1.509,356,1.792,377,1.769,391,2.798,439,3.948,443,1.8,451,1.705,502,1.504,509,4.321,514,2.47,548,4.519,549,3.497,552,1.372,556,4.819,593,1.608,597,1.897,619,2.25,668,2.843,683,1.792,689,2.291,711,3.37,712,3.465,719,1.887,743,1.907,764,2.336,833,2.5,859,2.056,891,3.021,892,3.021,893,2.194,894,2.212,895,2.5,896,2.144,897,2.865,898,2.608,899,3.021,900,2.177,901,2.865,902,2.865,903,1.897,904,2.534,905,3.417,906,3.021,907,2.411,908,3.021,909,2.336,910,2.043,911,3.122,912,5.563,913,2.65,914,3.417,915,3.417,916,3.417]],["component/49",[7,0.401]],["title/50-1",[236,39.251]],["name/50-1",[]],["text/50-1",[]],["component/50-1",[]],["title/50-2",[34,33.244,754,33.244]],["name/50-2",[]],["text/50-2",[]],["component/50-2",[]],["title/50-3",[917,67.039]],["name/50-3",[]],["text/50-3",[]],["component/50-3",[]],["title/50-4",[918,67.892]],["name/50-4",[]],["text/50-4",[]],["component/50-4",[]],["title/50-5",[919,77.795]],["name/50-5",[]],["text/50-5",[]],["component/50-5",[]],["title/50-6",[351,40.973]],["name/50-6",[]],["text/50-6",[]],["component/50-6",[]],["title/50-7",[394,48.764,754,33.244]],["name/50-7",[]],["text/50-7",[]],["component/50-7",[]],["title/50-8",[36,33.721,137,36.831]],["name/50-8",[]],["text/50-8",[]],["component/50-8",[]],["title/50-9",[191,35.099]],["name/50-9",[]],["text/50-9",[]],["component/50-9",[]],["title/50-10",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/50-10",[]],["text/50-10",[]],["component/50-10",[]],["title/50-11",[110,23.724,118,17.044,264,17.464,752,26.176,762,37.759]],["name/50-11",[]],["text/50-11",[]],["component/50-11",[]],["title/50-12",[754,39.689]],["name/50-12",[]],["text/50-12",[]],["component/50-12",[]],["title/50-13",[264,25.971,679,30.741]],["name/50-13",[]],["text/50-13",[]],["component/50-13",[]],["title/50-14",[752,33.489,754,28.6,762,48.309]],["name/50-14",[]],["text/50-14",[]],["component/50-14",[]],["title/50-15",[148,19.348,155,20.975,514,20.59,754,25.095]],["name/50-15",[]],["text/50-15",[]],["component/50-15",[]],["title/50-16",[135,27.323,752,33.489,754,28.6]],["name/50-16",[]],["text/50-16",[]],["component/50-16",[]],["title/50-17",[502,40.851]],["name/50-17",[]],["text/50-17",[]],["component/50-17",[]],["title/50-18",[923,82.026]],["name/50-18",[]],["text/50-18",[]],["component/50-18",[]],["title/50",[136,17.103,144,28.362,401,29.976]],["name/50",[631,1.45]],["text/50",[3,0.235,4,0.321,5,1.993,6,0.533,8,1.472,14,0.238,15,0.822,17,1.61,18,0.92,19,0.956,20,1.149,23,0.258,24,1.329,25,0.803,26,0.445,29,1.259,30,0.69,31,0.31,32,3.109,34,0.688,35,1.537,36,1.424,37,0.337,38,0.314,40,0.19,42,0.252,52,0.511,57,0.614,68,0.645,69,0.417,71,1.071,76,0.669,79,2.704,82,0.732,84,3.005,88,1.289,90,0.717,93,0.322,96,1.165,101,1.189,106,0.36,107,0.391,110,0.94,111,0.599,112,0.934,113,0.244,115,0.907,117,1.602,118,1.673,120,1.201,121,0.611,122,1.05,123,0.391,124,0.423,125,1.139,127,0.362,134,1.169,135,0.657,136,0.84,137,0.981,139,1.52,142,0.583,143,1.342,144,1.232,145,0.708,148,0.53,155,1.038,160,0.307,161,0.424,163,1.025,166,0.657,168,0.293,169,0.627,171,0.52,172,1.225,178,0.295,181,0.412,183,0.994,186,0.581,191,0.421,192,0.29,194,0.365,196,1.038,200,0.72,201,0.399,214,0.606,224,0.283,226,1.009,239,1.529,243,0.962,251,0.279,252,1.298,255,0.329,256,0.484,262,0.634,263,2.886,264,0.537,266,0.423,267,1.411,271,0.268,272,0.605,275,1.229,277,1.774,278,0.339,280,0.497,282,0.649,283,0.335,285,0.428,286,0.327,287,0.403,292,0.594,296,0.235,300,1.059,301,1.725,304,0.785,308,1.175,316,0.984,317,0.391,319,0.457,331,0.299,332,0.448,333,0.335,341,0.329,349,0.581,350,0.313,351,1.104,355,0.368,375,0.368,377,0.576,388,0.337,394,1.009,398,0.417,401,1.78,402,0.128,406,1.091,412,0.387,415,0.38,420,0.399,421,1.761,424,0.403,439,0.324,440,0.362,441,0.669,442,0.403,445,0.355,446,0.799,451,0.288,455,2.875,468,1.177,470,0.488,482,0.661,492,0.391,502,0.708,505,0.36,508,1.187,509,0.683,514,2.463,517,0.927,521,0.72,523,0.653,525,0.71,531,0.278,547,0.686,548,1.033,549,1.029,552,0.232,553,0.343,570,0.938,577,0.335,580,0.917,581,0.428,583,0.321,586,0.335,593,0.757,596,0.36,597,0.321,602,0.417,603,0.345,615,1.132,617,1.795,621,0.794,625,0.862,630,0.345,641,0.474,665,0.568,670,2.835,675,0.377,676,1.05,679,0.989,682,0.573,684,1.638,686,1.405,688,0.448,689,0.387,698,0.581,705,0.384,711,0.674,717,0.412,719,0.614,723,0.423,732,0.708,733,0.739,734,1.727,741,0.352,745,0.781,752,1.037,754,1.699,760,0.387,762,2.098,763,0.814,764,1.71,766,0.72,775,1.193,790,0.875,835,0.306,850,0.399,854,0.72,865,0.303,867,0.72,873,0.371,894,2.355,896,0.698,904,0.825,917,1.162,918,2.402,919,2.752,920,1.557,921,1.58,924,0.434,925,0.434,926,0.448,927,0.428,928,0.448,929,0.417,930,0.408,931,0.412,932,1.896,933,1.033,934,2.821,935,0.577,936,1.557,937,0.374,938,1.535,939,1.422,940,0.956,941,0.577,942,0.496,943,1.05,944,1.112,945,0.51,946,0.51,947,2.217,948,0.474,949,1.759,950,0.456,951,0.912,952,0.577,953,0.577,954,1.112,955,1.422,956,0.51,957,0.577,958,1.348,959,0.51,960,0.51,961,2.027,962,1.606,963,0.568,964,2.735,965,2.902,966,0.374,967,0.981,968,0.843,969,0.51,970,0.746,971,0.51,972,0.564,973,1.515,974,0.474,975,1.319,976,1.909,977,0.51,978,0.484,979,0.51,980,0.428,981,0.448,982,0.377,983,0.794,984,0.988,985,0.674,986,0.549,987,1.83,988,0.983,989,0.474,990,0.441,991,0.448,992,0.577,993,0.322,994,0.474,995,0.474,996,0.474,997,0.474,998,1.122,999,0.474,1000,0.474,1001,0.428,1002,0.474,1003,0.474,1004,0.387,1005,0.196,1006,1.698,1007,0.474,1008,1.354,1009,0.474,1010,0.391,1011,0.428,1012,0.423,1013,0.428,1014,0.912,1015,1.209,1016,1.112,1017,0.387,1018,0.474,1019,0.448,1020,0.983,1021,0.474,1022,1.209,1023,0.51,1024,0.434,1025,0.474,1026,0.51,1027,0.51,1028,0.51,1029,0.51,1030,0.549,1031,1.135,1032,0.51,1033,0.76,1034,0.51,1035,0.51,1036,0.51,1037,0.51,1038,0.51,1039,0.51,1040,0.331,1041,0.51,1042,0.51,1043,0.51,1044,0.51,1045,0.474,1046,0.932,1047,0.448,1048,0.849,1049,0.456,1050,0.577,1051,0.51,1052,0.51,1053,1.068,1054,0.51,1055,0.51,1056,0.448,1057,0.577,1058,0.577,1059,0.51,1060,0.577,1061,0.474,1062,0.395,1063,0.912,1064,0.408,1065,1.057,1066,0.308,1067,0.577,1068,0.76,1069,0.51,1070,0.496,1071,0.51,1072,0.51,1073,0.441,1074,0.448,1075,0.326,1076,0.516,1077,0.441,1078,0.683,1079,1.228,1080,1.422,1081,0.577,1082,0.448,1083,0.417,1084,1.016,1085,0.577,1086,0.484,1087,0.408,1088,0.474,1089,0.403,1090,0.732,1091,0.326,1092,0.365,1093,0.932,1094,0.484,1095,0.456,1096,0.794,1097,0.387,1098,0.484,1099,0.825,1100,0.528,1101,0.412,1102,0.484,1103,0.484,1104,0.528,1105,0.484,1106,0.829,1107,0.586,1108,0.399,1109,0.395,1110,0.38,1111,0.484,1112,0.434,1113,0.528,1114,0.441,1115,0.577,1116,0.51,1117,0.51,1118,0.932,1119,0.474,1120,0.51,1121,0.51,1122,0.423,1123,0.403,1124,0.51,1125,0.371,1126,0.395,1127,0.408,1961,0.464,1981,0.484,1982,0.484,1983,0.484,1984,0.484,1985,0.621,1986,0.484,1987,0.484,1988,0.484,1989,0.484,1990,0.484,1991,0.484,1992,0.464,1993,0.484,1994,0.484,1995,0.456,1996,0.441,1997,0.528,1998,0.528,1999,0.484]],["component/50",[7,0.401]],["title/51",[]],["name/51",[947,1.886]],["text/51",[26,3.409,68,4.937,69,6.151,117,3.435,148,2.807,155,3.044,183,4.313,282,4.966,308,3.443,402,1.882,468,4.007,514,3.809,665,4.351,679,3.367,705,5.656,904,6.312,947,6.498,1089,5.941,1090,5.606,1091,4.801]],["component/51",[7,0.401]],["title/52",[]],["name/52",[1086,2.071]],["text/52",[15,4.212,29,2.181,30,3.535,32,3.292,35,5.128,76,3.422,82,5.426,88,1.71,93,3.173,118,3.466,120,3.298,123,3.849,136,1.454,191,2.151,196,2.36,255,3.242,296,2.312,308,2.3,316,2.704,439,3.19,482,3.378,502,2.503,514,2.892,570,4.808,577,3.298,682,2.93,719,3.141,745,2.763,752,2.848,754,3.525,762,7.003,763,6.03,764,7.265,766,5.335,904,4.216,985,3.444,1046,4.767,1076,2.64,1084,5.195,1090,3.744,1092,3.595,1093,6.909,1094,4.767,1095,4.486]],["component/52",[7,0.401]],["title/53",[]],["name/53",[755,1.886]],["text/53",[17,2.961,79,3.254,84,2.004,88,2.197,121,4.013,134,2.6,135,4.011,148,2.408,183,2.903,272,3.974,406,2.426,525,3.225,593,3.437,596,4.548,717,5.213,719,4.033,723,2.775,752,4.916,754,3.124,867,4.728,896,4.582,1022,5.492,1048,5.574,1068,4.992,1106,5.714,1107,5.17,1108,5.043,1109,4.992,1110,4.809,1111,6.123,1112,5.492]],["component/53",[7,0.401]],["title/54",[]],["name/54",[1096,1.764]],["text/54",[18,2.892,40,2.147,68,3.775,84,2.866,90,2.901,96,3.033,125,4.131,134,2.318,139,3.217,155,2.327,262,3.712,275,4.457,301,3.651,351,4.006,421,4.866,514,2.285,665,3.327,723,2.474,741,3.97,775,4.827,867,4.214,873,4.18,958,7.606,963,3.327,968,3.413,1008,4.913,1096,6.476,1097,4.365,1098,5.458,1099,6.727,1100,5.947,1101,4.647,1102,5.458,1103,5.458,1104,5.947,1105,5.458]],["component/54",[7,0.401]],["title/55-1",[42,33.917,502,34.217]],["name/55-1",[]],["text/55-1",[]],["component/55-1",[]],["title/55-2",[183,30.892,1128,43.146]],["name/55-2",[]],["text/55-2",[]],["component/55-2",[]],["title/55-3",[183,30.892,1129,38.042]],["name/55-3",[]],["text/55-3",[]],["component/55-3",[]],["title/55-4",[356,40.753,835,41.118]],["name/55-4",[]],["text/55-4",[]],["component/55-4",[]],["title/55-5",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/55-5",[]],["text/55-5",[]],["component/55-5",[]],["title/55-6",[293,47.398,1004,52.112]],["name/55-6",[]],["text/55-6",[]],["component/55-6",[]],["title/55",[98,48.764,1132,35.506]],["name/55",[1132,1.129]],["text/55",[0,0.81,5,0.657,6,0.768,7,0.393,8,1.98,10,0.631,11,2.738,12,1.481,13,1.824,14,1.636,16,1.875,18,0.712,19,0.953,29,1.519,30,0.688,32,1.157,34,1.239,35,1.533,37,0.936,38,0.873,40,1.601,42,1.729,46,2.022,48,3.393,52,1.332,54,1.569,60,1.755,77,0.895,79,1.291,84,2.94,88,2.205,96,0.747,99,0.768,105,1.636,106,0.999,112,0.723,117,1.958,118,1.292,120,3.633,128,0.9,146,2.068,147,1.006,148,0.955,151,1.065,154,0.779,155,0.573,161,0.611,164,1.732,168,0.813,172,1.222,179,1.075,183,1.151,186,2.068,188,0.93,192,0.806,211,1.468,214,1.828,224,1.418,225,1.145,228,2.431,236,0.678,240,2.068,252,2.169,264,0.968,265,1.056,267,1.634,268,0.985,279,0.721,280,1.295,293,2.96,296,0.652,300,3.196,308,0.649,319,0.659,325,0.992,330,2.544,333,0.93,350,0.868,351,1.749,356,2.077,421,0.86,439,0.9,446,0.797,457,1.119,464,0.985,465,0.669,468,1.865,478,1.189,482,0.953,502,1.275,514,1.704,521,1.038,525,1.279,532,1.942,539,1.173,541,1.224,547,0.684,548,1.03,549,0.797,558,1.086,570,0.936,596,1.804,597,0.89,608,0.816,618,1.132,647,0.965,666,1.711,668,1.481,689,1.075,698,0.837,706,0.992,728,3.069,729,0.992,736,0.953,758,1.173,786,0.845,827,0.856,835,1.533,861,4.802,868,1.378,890,2.433,963,0.82,972,1.468,993,0.895,1004,1.075,1087,1.132,1128,2.199,1129,1.939,1130,1.755,1131,1.804,1133,3.092,1134,1.159,1135,1.244,1136,0.999,1137,1.145,1138,1.98,1139,1.047,1140,1.418,1141,2.093,1142,2.178,1143,2.178,1144,1.173,1145,0.936,1146,1.244,1147,1.418,1148,1.418,1149,2.561,1150,0.845,1151,1.132,1152,1.418,1153,2.376,1154,1.173,1155,1.145,1156,1.418,1157,1.244,1158,1.132,1159,1.418,1160,2.561,1161,1.418,1162,2.286,1163,1.418,1164,2.286,1165,1.418,1166,1.244,1167,1.418,1168,1.173,1169,1.107,1170,2.561,1171,1.418,1172,2.899,1173,1.418,1174,1.038,1175,1.418,1176,1.418,1177,1.418,1178,1.418,1179,1.418,1180,2.561,1181,1.418,1182,1.418,1183,2.561,1184,2.561,1185,2.561,1186,1.418,1187,2.044,1188,2.561,1189,1.418,1190,1.418,1191,1.418,1192,1.418,1193,1.418,1194,1.418,1195,0.941,1196,1.265,1197,3.126,1198,1.418,1199,1.418,1200,1.244,1201,2.708,1202,1.418,1203,2.561,1204,1.315,1205,2.561,1206,1.418,1207,1.418,1208,1.418,1209,1.418,1210,1.345,1211,1.03,1212,1.418]],["component/55",[7,0.401]],["title/56-1",[88,23.377,356,40.753]],["name/56-1",[]],["text/56-1",[]],["component/56-1",[]],["title/56-2",[48,36.208,88,20.111,356,35.06]],["name/56-2",[]],["text/56-2",[]],["component/56-2",[]],["title/56-3",[88,20.111,356,35.06,1172,48.923]],["name/56-3",[]],["text/56-3",[]],["component/56-3",[]],["title/56-4",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/56-4",[]],["text/56-4",[]],["component/56-4",[]],["title/56",[88,23.377,158,40.398]],["name/56",[88,0.743]],["text/56",[7,1,8,2.178,10,1.607,11,0.938,12,0.85,13,1.87,14,2.648,15,1.53,16,3.23,17,0.674,23,1.338,31,0.892,32,1.196,33,1.505,34,2.134,42,1.306,48,3.782,52,1.877,54,2.21,56,0.785,60,3.022,77,0.928,80,1.126,84,1.369,88,3.061,91,2.813,93,2.784,94,1.746,95,1.907,96,0.775,97,1.938,100,2.406,101,2.737,105,2.884,107,2.026,113,3.507,115,0.938,120,4.822,128,0.933,143,1.606,146,0.868,166,2.946,170,0.988,171,0.777,186,1.563,188,0.964,199,0.97,204,1.337,221,1.971,234,0.923,243,0.994,252,1.824,277,0.811,293,1.014,301,2.008,316,2.372,325,2.524,341,1.707,344,1.312,351,1.802,356,5.231,403,1.174,406,0.553,421,0.892,429,1.105,443,1.577,446,1.488,505,3.107,509,1.838,525,3.304,531,0.799,553,1.778,570,0.97,712,1.864,732,1.059,765,2.067,766,1.938,768,2.163,772,0.988,827,0.888,835,3.393,861,1.688,869,1.217,890,3.063,910,0.994,937,1.938,972,0.843,985,1.007,1062,1.137,1076,1.39,1089,1.161,1131,1.864,1133,3.178,1154,2.19,1162,1.312,1164,1.312,1172,6.968,1197,1.312,1213,4.342,1214,4.261,1215,1.663,1216,1.47,1217,1.47,1218,1.47,1219,1.095,1220,3.608,1221,3.347,1222,1.47,1223,1.47,1224,1.47,1225,2.646,1226,1.47,1227,1.47,1228,1.47,1229,1.47,1230,1.47,1231,1.47,1232,1.47,1233,1.47,1234,1.47,1235,1.47,1236,1.47,1237,1.47,1238,3.608,1239,1.47,1240,2.646,1241,1.47,1242,1.47,1243,1.47,1244,1.47,1245,1.47,1246,2.22,1247,1.47,1248,2.646,1249,1.29,1250,1.187,1251,1.47,1252,1.364,1253,1.028,1254,1.47,1255,0.692,1256,2.362,1257,1.47,1258,2.51,1259,1.663,1260,1.663,1261,1.47,1262,1.47,1263,1.663,1264,1.663,1265,1.47,1266,1.47,1267,1.47,1268,1.47,1269,1.47,1270,1.47,1271,1.47,1272,1.47,1273,1.47,1274,1.47,1275,1.47]],["component/56",[7,0.401]],["title/57",[1276,68.801]],["name/57",[1276,1.832]],["text/57",[3,1.263,8,1.248,13,3.292,14,2.719,16,3.331,20,1.725,26,1.244,30,1.333,32,1.241,71,1.608,84,2.102,88,1.981,105,3.777,107,2.103,112,1.402,117,3.424,118,3.532,125,2.999,136,1.959,137,1.472,139,1.102,144,1.318,155,2.355,161,2.917,168,2.608,169,1.752,171,1.452,183,1.235,191,1.175,214,1.17,239,1.448,249,1.608,263,1.478,264,1.038,272,1.691,280,1.389,296,2.092,301,2.65,308,3.699,316,1.478,319,2.114,357,1.743,391,1.562,401,1.393,421,1.667,443,1.636,451,1.55,455,1.527,458,1.908,470,1.364,487,1.348,502,1.368,519,2.103,526,2.451,531,1.493,549,1.544,570,1.813,602,2.245,617,2.814,659,2.273,661,2.451,664,2.41,665,2.63,666,1.835,670,3.469,673,2.509,680,1.55,708,1.651,723,1.955,746,1.263,963,1.588,966,2.011,972,2.608,985,1.882,993,1.734,1132,1.419,1136,1.935,1154,2.273,1277,6.058,1278,2.747,1279,1.87,1280,2.497,1281,2.747,1282,2.336,1283,2.747,1284,2.372,1285,2.245,1286,2.451,1287,1.964,1288,2.747,1289,2.497,1290,2.747,1291,2.245,1292,3.107,1293,2.67,1294,2.548,1295,2.304,1296,2.548,1297,2.747,1298,2.747,1299,2.747,1300,2.41,1301,2.451,1302,2.747]],["component/57",[7,0.401]],["title/58-1",[56,27.706,84,16.101,236,24.817,691,48.109]],["name/58-1",[]],["text/58-1",[]],["component/58-1",[]],["title/58-2",[52,30.744,104,32.728,680,33.358]],["name/58-2",[]],["text/58-2",[]],["component/58-2",[]],["title/58-3",[116,50.007]],["name/58-3",[]],["text/58-3",[]],["component/58-3",[]],["title/58-4",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/58-4",[]],["text/58-4",[]],["component/58-4",[]],["title/58-5",[8,8.202,13,10.985,84,9.278,105,13.959,186,17.648,457,23.594,525,14.928,666,19.961,861,19.065,1131,21.055]],["name/58-5",[]],["text/58-5",[]],["component/58-5",[]],["title/58-6",[528,37.312,531,32.135,596,41.644]],["name/58-6",[]],["text/58-6",[]],["component/58-6",[]],["title/58",[13,21.726,105,27.609,343,46.175]],["name/58",[631,1.45]],["text/58",[3,0.45,4,0.614,7,0.271,8,0.268,13,2.032,14,0.457,15,0.565,16,2.344,17,2.174,18,1.284,26,1.45,33,1.035,34,0.473,40,0.953,45,0.915,48,0.599,52,2.681,54,2.311,56,0.522,58,0.67,60,2.585,65,1.887,70,1.549,77,0.617,84,3.443,88,0.619,91,0.624,92,3.945,96,0.515,98,1.292,101,1.722,102,0.596,104,0.541,105,0.85,106,0.689,107,0.748,110,1.312,111,2.89,112,0.929,113,2.262,116,1.951,117,2.822,118,3.206,120,2.1,121,0.608,123,0.748,128,1.621,130,1.216,134,1.725,143,0.593,145,0.704,148,0.365,155,1.526,160,1.094,161,0.421,163,0.547,168,1.044,171,0.517,178,0.565,179,0.741,185,0.741,186,2.228,196,0.855,199,0.645,214,2.355,215,1.422,227,1.333,236,0.468,243,0.661,248,2.112,252,0.494,255,1.174,263,0.526,264,0.688,279,0.497,280,0.494,293,0.674,296,2.843,297,0.605,301,2.517,304,0.78,313,2.568,316,2.029,332,0.858,335,1.648,360,0.799,361,1.943,378,0.748,394,1.292,397,0.831,402,0.8,406,0.367,408,0.575,421,0.593,438,3.381,439,0.62,440,0.694,443,1.085,446,0.549,457,0.772,465,1.206,487,0.48,505,1.8,506,0.789,508,1.181,514,0.388,519,1.394,525,0.488,528,1.613,531,2.051,547,0.472,549,1.799,552,0.444,556,0.657,575,1.408,577,0.641,580,2.433,596,1.283,604,0.599,618,0.78,619,0.728,620,0.638,622,1.47,642,0.858,665,1.052,666,2.138,669,2.64,670,0.582,674,1.333,678,1.174,679,0.437,680,1.806,691,0.907,706,1.787,743,0.617,773,1.312,786,0.582,861,2.407,865,0.58,885,1.957,889,0.653,900,0.704,907,0.78,910,1.231,963,0.565,966,1.333,1031,2.039,1047,0.858,1049,0.872,1091,1.161,1092,0.699,1110,1.356,1131,1.8,1139,0.722,1157,0.858,1282,1.549,1287,0.699,1303,0.872,1304,1.106,1305,0.844,1306,0.872,1307,1.881,1308,2.115,1309,1.051,1310,0.82,1311,0.977,1312,1.01,1313,1.106,1314,1.106,1315,1.106,1316,1.106,1317,1.106,1318,1.106,1319,0.977,1320,0.977,1321,0.907,1322,0.977,1323,1.82,1324,0.977,1325,1.82,1326,0.977,1327,1.82,1328,0.977,1329,0.977,1330,1.051,1331,1.82,1332,0.977,1333,0.977,1334,1.82,1335,0.977,1336,1.82,1337,0.977,1338,0.977,1339,1.82,1340,1.82,1341,0.977,1342,0.977,1343,0.907,1344,0.977,1345,0.977,1346,0.977,1347,0.977,1348,4.6,1349,3.2,1350,1.82,1351,1.106,1352,0.927,1353,1.106,1354,1.106,1355,2.059,1356,1.726,1357,1.106,1358,2.89,1359,1.106,1360,1.106,1361,0.872,1362,0.977,1363,1.106,1364,4.267,1365,1.106,1366,1.106,1367,3.2,1368,2.059,1369,2.059,1370,1.106,1371,1.106,1372,1.106,1373,1.106,1374,1.106,1375,1.106,1376,1.106,1377,1.106,1378,1.106,1379,0.977,1380,1.106,1381,0.831,1382,0.977,1383,0.977,1384,0.977,1385,0.977,1386,0.977,1387,0.977,1388,1.726,1389,0.872,1390,0.661,1391,0.927,1392,0.977,1393,0.977]],["component/58",[7,0.401]],["title/59-1",[260,42.387,297,32.081,470,25.753,1394,51.864]],["name/59-1",[]],["text/59-1",[]],["component/59-1",[]],["title/59",[871,51.636,1076,36.09]],["name/59",[1395,2.471]],["text/59",[8,2.168,118,2.914,296,3.633,620,5.153,644,7.182,861,6.311,867,5.785,903,4.961,1130,5.413,1174,5.785,1256,7.05,1396,8.936,1397,9.892,1398,7.492,1399,7.68,1400,4.706]],["component/59",[7,0.401]],["title/60-1",[3,37.722]],["name/60-1",[]],["text/60-1",[]],["component/60-1",[]],["title/60-2",[128,52.051]],["name/60-2",[]],["text/60-2",[]],["component/60-2",[]],["title/60-3",[155,27.786,465,32.434]],["name/60-3",[]],["text/60-3",[]],["component/60-3",[]],["title/60-4",[34,25.095,134,20.888,406,19.493,694,34.642]],["name/60-4",[]],["text/60-4",[]],["component/60-4",[]],["title/60-5",[351,40.973]],["name/60-5",[]],["text/60-5",[]],["component/60-5",[]],["title/60-6",[745,45.082]],["name/60-6",[]],["text/60-6",[]],["component/60-6",[]],["title/60-7",[455,38.185,1293,66.798]],["name/60-7",[]],["text/60-7",[]],["component/60-7",[]],["title/60-8",[656,50.738]],["name/60-8",[]],["text/60-8",[]],["component/60-8",[]],["title/60-9",[1401,71,1402,56.867]],["name/60-9",[]],["text/60-9",[]],["component/60-9",[]],["title/60-10",[88,23.377,1403,52.609]],["name/60-10",[]],["text/60-10",[]],["component/60-10",[]],["title/60",[155,20.975,249,30.364,678,33.45,1403,39.712]],["name/60",[249,0.716,1403,0.937]],["text/60",[3,1.062,5,1.477,6,2.479,8,1.664,10,0.563,13,0.465,20,0.795,23,1.168,24,0.761,26,0.573,29,1.002,30,1.546,32,1.044,34,1.118,38,0.779,43,2.897,57,0.791,76,2.169,84,3.687,88,1.084,90,1.164,92,0.85,98,0.898,104,1.764,107,2.44,108,0.969,117,2.568,118,0.467,122,1.706,133,0.85,134,0.93,136,0.366,138,1.154,139,2.432,144,1.108,155,2.276,158,0.744,161,2.929,164,0.856,166,1.543,172,1.102,179,0.96,183,0.569,196,1.496,211,1.827,214,1.675,220,0.988,228,0.717,239,1.217,249,3.007,262,0.816,264,0.478,265,1.72,271,2.956,275,0.703,277,0.698,279,1.175,301,0.576,308,2.094,316,1.242,319,0.588,325,0.885,335,0.816,351,3.028,354,0.84,391,0.72,402,0.578,406,1.198,421,0.768,428,1.129,430,0.969,432,1.093,439,0.803,441,0.861,455,0.703,465,1.504,483,1.23,502,1.959,514,0.917,547,1.537,549,1.791,553,0.85,557,2.067,570,2.103,593,1.23,615,0.783,617,0.783,656,0.783,673,0.698,678,1.49,679,1.426,682,0.738,686,1.009,694,0.845,695,0.695,697,0.825,708,0.761,712,0.891,735,0.919,790,0.779,933,0.919,1008,1.415,1064,1.844,1092,0.905,1106,0.738,1107,0.754,1123,0.999,1138,0.978,1155,1.022,1250,1.022,1310,1.061,1401,8.159,1403,7.925,1404,1.431,1405,1.431,1406,1.431,1407,5.809,1408,1.431,1409,5.176,1410,1.431,1411,1.431,1413,2.061,1416,0.861,1417,2.191,1418,1.308,1419,1.431,1420,2.613,1421,0.978,1422,1.431,1423,1.431,1424,1.308,1425,4.448,1426,4.448,1427,1.431,1428,1.431,1429,1.431,1430,1.431,1431,0.764,1432,2.613,1433,3.604,1434,0.799,1435,1.431,1436,2.897,1437,1.431,1438,1.431,1439,1.431,1440,1.431,1441,1.022,1442,1.431,1443,1.431,1444,1.308,1445,1.431,1446,1.431,1447,1.174,1448,1.076,1449,1.265,1450,1.431,1451,1.11,1452,1.431,1453,1.265,1454,1.431,1455,1.265,2000,1.539,2001,1.539,2002,1.539,2003,1.15,2004,1.539]],["component/60",[7,0.401]],["title/61-1",[402,17.184,1456,33.432]],["name/61-1",[]],["text/61-1",[]],["component/61-1",[]],["title/61-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/61-2",[]],["text/61-2",[]],["component/61-2",[]],["title/61-3",[8,18.856,150,32.262]],["name/61-3",[]],["text/61-3",[]],["component/61-3",[]],["title/61-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/61-4",[]],["text/61-4",[]],["component/61-4",[]],["title/61-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/61-5",[]],["text/61-5",[]],["component/61-5",[]],["title/61-6",[8,16.222,137,31.686,746,27.183]],["name/61-6",[]],["text/61-6",[]],["component/61-6",[]],["title/61-7",[1255,32.348,1457,33.624]],["name/61-7",[]],["text/61-7",[]],["component/61-7",[]],["title/61",[178,34.172,1129,32.728,1473,43.651]],["name/61",[677,0.844,1473,0.903]],["text/61",[5,3.513,8,2.329,12,2.364,29,2.71,84,3.113,88,2.126,90,2.061,99,2.215,135,2.888,136,1.808,137,2.192,138,3.12,139,1.64,144,1.962,148,1.525,161,1.762,178,5.572,183,1.839,228,2.317,231,3.131,263,2.2,264,1.546,280,3.158,308,1.871,349,2.415,351,2.043,394,2.902,395,2.881,401,2.074,402,1.562,406,2.348,445,2.84,446,2.299,451,2.308,459,2.821,484,2.995,514,3.369,654,3.194,686,1.786,687,3.102,695,3.433,726,2.784,746,1.881,788,2.683,830,2.802,873,2.97,896,2.902,983,3.302,1068,3.162,1106,2.384,1107,2.436,1187,3.264,1461,2.493,1472,2.683,1473,3.02,1474,4.089,1475,3.194,1476,6.247,1477,2.529,1478,3.717,1479,3.793,1480,4.089,1481,4.089,1482,3.976]],["component/61",[7,0.401]],["title/62-1",[402,17.184,1456,33.432]],["name/62-1",[]],["text/62-1",[]],["component/62-1",[]],["title/62-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/62-2",[]],["text/62-2",[]],["component/62-2",[]],["title/62-3",[118,25.347,694,45.892]],["name/62-3",[]],["text/62-3",[]],["component/62-3",[]],["title/62-4",[1145,45.341,1483,35.06]],["name/62-4",[]],["text/62-4",[]],["component/62-4",[]],["title/62-5",[1091,43.832,1145,45.341]],["name/62-5",[]],["text/62-5",[]],["component/62-5",[]],["title/62-6",[88,20.111,468,31.469,532,44.832]],["name/62-6",[]],["text/62-6",[]],["component/62-6",[]],["title/62-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/62-7",[]],["text/62-7",[]],["component/62-7",[]],["title/62-8",[8,16.222,30,28.681,150,27.755]],["name/62-8",[]],["text/62-8",[]],["component/62-8",[]],["title/62-9",[104,32.728,264,22.343,686,25.822]],["name/62-9",[]],["text/62-9",[]],["component/62-9",[]],["title/62-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/62-10",[]],["text/62-10",[]],["component/62-10",[]],["title/62-11",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/62-11",[]],["text/62-11",[]],["component/62-11",[]],["title/62-12",[8,16.222,137,31.686,746,27.183]],["name/62-12",[]],["text/62-12",[]],["component/62-12",[]],["title/62-13",[1255,32.348,1457,33.624]],["name/62-13",[]],["text/62-13",[]],["component/62-13",[]],["title/62",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/62",[728,0.757,1484,1]],["text/62",[2,0.805,5,1.057,6,1.706,7,0.346,8,1.757,10,1.016,12,0.721,13,1.43,14,1.065,15,2.619,17,0.572,29,1.965,30,1.528,32,1.423,34,1.524,35,0.747,36,0.612,37,0.824,38,0.768,40,2.635,42,0.616,45,1.583,56,1.218,57,1.425,65,0.922,79,2.564,87,1.595,88,1.072,90,1.15,96,0.658,97,0.914,98,1.619,101,2.093,104,1.263,106,2.219,110,1.171,117,1.041,118,3.119,120,2.066,134,2.247,135,0.577,136,1.472,137,1.223,138,2.263,139,1.817,142,0.74,144,1.867,148,0.466,155,0.922,160,0.75,161,0.538,171,0.66,172,1.857,183,1.025,184,1.184,186,1.86,189,0.784,190,0.834,191,1.665,192,0.71,196,1.479,214,0.972,234,0.784,251,0.681,252,0.631,267,2.009,271,2.38,272,0.768,275,0.694,278,0.828,279,1.979,280,0.631,292,1.377,300,0.93,308,1.441,315,1.67,316,2.093,320,1.463,330,1.657,333,0.819,340,0.839,341,0.805,401,2.297,402,1.504,406,1.462,408,0.734,412,0.947,443,1.359,451,0.704,455,0.694,468,2.709,470,1.132,482,1.533,492,4.271,502,0.622,514,2.679,525,2.263,532,2.389,539,1.033,620,0.814,656,2.407,666,0.834,679,1.409,683,1.868,686,2.223,687,0.947,694,1.523,695,0.686,698,0.737,723,0.98,726,1.553,728,3.45,746,1.049,755,1.078,765,0.975,766,0.914,835,2.328,850,1.782,890,3.875,894,0.914,896,0.886,903,0.784,972,0.716,985,2.158,1076,0.656,1083,1.02,1087,1.821,1089,4.017,1090,1.699,1091,3.246,1092,0.892,1096,1.008,1133,4.02,1141,1.02,1142,1.062,1143,1.062,1145,3.968,1150,0.744,1151,4.061,1381,1.062,1400,0.744,1402,2.607,1416,0.85,1434,0.788,1456,0.607,1485,2.281,1486,1.248,1487,2.001,1488,3.472,1489,2.116,1490,0.879,1491,2.922,1492,1.008,1493,1.158,1494,1.158,1495,1.158,1496,1.158,1497,1.248,1498,0.938,1499,0.975,1500,1.248,1501,3.891,1502,2.281,1503,2.281,1504,2.987,1505,1.248,1506,2.281,1507,1.248,1508,1.02,1509,1.114,1510,1.342,1511,1.342,1512,1.342,1513,0.985,1514,2.607,1515,1.047,1516,1.095,1517,1.008,1518,2.116,1519,1.078,1520,0.906,1521,1.158,1522,1.248,1523,1.184,1524,0.947]],["component/62",[7,0.401]],["title/63-1",[402,17.184,1456,33.432]],["name/63-1",[]],["text/63-1",[]],["component/63-1",[]],["title/63-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/63-2",[]],["text/63-2",[]],["component/63-2",[]],["title/63-3",[8,18.856,150,32.262]],["name/63-3",[]],["text/63-3",[]],["component/63-3",[]],["title/63-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/63-4",[]],["text/63-4",[]],["component/63-4",[]],["title/63-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/63-5",[]],["text/63-5",[]],["component/63-5",[]],["title/63-6",[8,16.222,137,31.686,746,27.183]],["name/63-6",[]],["text/63-6",[]],["component/63-6",[]],["title/63-7",[1255,32.348,1457,33.624]],["name/63-7",[]],["text/63-7",[]],["component/63-7",[]],["title/63",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/63",[1431,0.739,1559,0.928]],["text/63",[0,0.957,3,0.771,5,3.088,6,0.908,8,1.526,10,2.967,13,0.616,17,2.228,29,3.397,30,0.813,32,2.194,40,0.625,42,0.827,45,2.015,56,0.895,84,3.649,88,1.365,104,0.928,105,2.597,106,1.18,108,1.283,112,0.855,113,0.8,116,1.021,117,0.765,118,2.621,121,1.042,135,1.375,136,1.16,137,1.594,138,2.003,148,1.496,150,1.397,154,0.921,155,1.622,160,1.007,161,2.092,189,1.052,211,1.705,220,1.309,223,1.495,228,2.272,248,0.938,251,0.914,255,1.918,262,1.081,271,2.551,275,0.931,279,0.852,292,1.796,297,1.84,322,1.309,352,2.374,354,1.112,377,0.981,402,0.744,406,2.313,408,0.985,464,1.164,482,1.126,506,1.353,514,1.928,531,0.911,557,1.087,575,1.296,586,1.099,593,1.583,656,1.036,663,1.237,668,0.969,678,1.081,679,0.75,682,2.338,686,1.752,695,0.921,746,1.368,754,0.811,772,1.126,779,1.148,830,3.328,863,3.579,895,1.387,1075,1.069,1106,0.977,1107,0.998,1108,3.133,1109,2.3,1150,3.313,1195,1.112,1214,1.259,1381,1.425,1390,1.133,1431,4.729,1434,1.058,1436,1.523,1441,3.238,1456,0.815,1461,1.021,1468,2.066,1469,1.207,1483,0.855,1487,1.47,1490,1.18,1524,1.271,1526,2.323,1527,1.309,1556,1.156,1559,3.683,1560,1.801,1561,1.369,1562,1.495,1563,1.675,1564,4.536,1565,1.447,1566,1.675,1567,1.731,1568,1.895,1569,1.895,1570,1.895,1571,1.731,1572,1.895,1573,1.895,1574,1.895,1575,3.364,1576,1.895,1577,1.895,1578,3.319,1579,1.895,1580,4.722,1581,3.72,1582,1.895,1583,1.895,1584,1.895,1585,1.227,1586,3.364,1587,1.895,1588,1.895,1589,1.895,1590,1.447]],["component/63",[7,0.401]],["title/64-1",[402,17.184,1456,33.432]],["name/64-1",[]],["text/64-1",[]],["component/64-1",[]],["title/64-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/64-2",[]],["text/64-2",[]],["component/64-2",[]],["title/64-3",[8,18.856,150,32.262]],["name/64-3",[]],["text/64-3",[]],["component/64-3",[]],["title/64-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/64-4",[]],["text/64-4",[]],["component/64-4",[]],["title/64-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/64-5",[]],["text/64-5",[]],["component/64-5",[]],["title/64-6",[8,16.222,137,31.686,746,27.183]],["name/64-6",[]],["text/64-6",[]],["component/64-6",[]],["title/64-7",[1255,32.348,1457,33.624]],["name/64-7",[]],["text/64-7",[]],["component/64-7",[]],["title/64",[402,9.484,827,22.902,1129,20.996,1591,42.477,1592,57.305]],["name/64",[1591,0.882,1592,1.189]],["text/64",[3,1.338,8,2.124,13,1.07,29,3.358,30,1.412,37,1.92,40,2.262,42,1.437,56,1.555,84,3.659,99,2.584,104,1.611,105,2.228,106,2.05,113,1.389,118,2.587,135,1.345,136,1.38,137,1.56,138,1.454,148,1.086,154,1.599,155,1.177,161,3.582,191,1.245,204,2.646,211,3.476,214,2.032,248,2.672,273,4.258,280,1.471,296,1.338,351,3.028,402,1.754,406,1.793,420,2.273,464,2.021,493,7.836,514,1.894,525,1.454,590,2.475,608,1.675,656,1.8,686,2.084,690,1.981,708,1.75,716,2.597,754,1.408,827,4.235,835,1.742,929,2.378,990,2.513,1075,1.857,1150,1.734,1195,1.932,1413,2.597,1434,1.837,1504,2.76,1517,2.35,1524,2.207,1591,5.053,1592,5.894,1593,3.292,1594,3.292,1595,2.91,1596,2.646,1597,2.91,1598,3.292,1599,4.771,1600,2.91,1601,2.91,1602,4.771,1603,3.292,1604,3.292,1605,3.292,1606,3.292,1607,3.292,1608,2.829]],["component/64",[7,0.401]],["title/65-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/65-1",[]],["text/65-1",[]],["component/65-1",[]],["title/65-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/65-2",[]],["text/65-2",[]],["component/65-2",[]],["title/65-3",[8,18.856,150,32.262]],["name/65-3",[]],["text/65-3",[]],["component/65-3",[]],["title/65-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/65-4",[]],["text/65-4",[]],["component/65-4",[]],["title/65-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/65-5",[]],["text/65-5",[]],["component/65-5",[]],["title/65-6",[8,16.222,137,31.686,746,27.183]],["name/65-6",[]],["text/65-6",[]],["component/65-6",[]],["title/65-7",[1255,32.348,1457,33.624]],["name/65-7",[]],["text/65-7",[]],["component/65-7",[]],["title/65",[615,46.09,937,37.981,1129,28.716]],["name/65",[937,0.896,1528,0.903]],["text/65",[3,1.073,5,2.829,8,1.42,10,1.766,15,2.293,29,3.227,30,2.511,40,2.277,56,1.247,82,1.738,84,3.537,88,2.077,95,1.682,99,1.264,105,1.09,108,1.787,118,1.909,135,1.834,136,1.766,137,2.127,138,1.982,148,0.87,155,0.944,161,3.419,183,1.049,211,2.275,228,1.322,239,1.23,262,1.505,265,1.738,271,1.226,279,2.632,316,1.255,378,3.038,402,0.584,406,2.796,408,1.372,446,1.312,486,5.474,514,3.316,552,1.06,575,1.804,608,2.284,615,2.454,630,1.578,631,1.549,676,1.723,679,1.775,686,1.733,695,2.18,708,2.385,719,1.458,746,1.824,754,1.129,924,1.985,937,4.47,1075,1.489,1106,1.36,1107,1.39,1126,1.804,1127,1.863,1130,1.599,1134,1.907,1150,3.083,1286,2.082,1305,2.015,1390,4.128,1434,1.473,1461,1.423,1469,1.682,1472,1.531,1525,2.639,1526,1.823,1527,1.823,1528,5.051,1529,2.015,1530,2.082,1531,2.164,1532,2.333,1533,1.884,1534,2.333,1535,2.639,1536,2.639,1537,2.015,1538,1.754,1539,2.639,1540,2.082,1541,2.639,1542,2.639,1543,3.54,1544,1.787,1545,1.957,1546,2.121,1547,2.411,1548,2.639,1549,2.411,1550,2.411,1551,1.738,1552,2.164,1553,2.639,1554,2.121,1555,2.905,1556,1.61,1558,1.481,1818,1.842]],["component/65",[7,0.401]],["title/66-1",[402,17.184,1456,33.432]],["name/66-1",[]],["text/66-1",[]],["component/66-1",[]],["title/66-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/66-2",[]],["text/66-2",[]],["component/66-2",[]],["title/66-3",[8,18.856,150,32.262]],["name/66-3",[]],["text/66-3",[]],["component/66-3",[]],["title/66-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/66-4",[]],["text/66-4",[]],["component/66-4",[]],["title/66-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/66-5",[]],["text/66-5",[]],["component/66-5",[]],["title/66-6",[8,16.222,137,31.686,746,27.183]],["name/66-6",[]],["text/66-6",[]],["component/66-6",[]],["title/66-7",[1255,32.348,1457,33.624]],["name/66-7",[]],["text/66-7",[]],["component/66-7",[]],["title/66",[138,34.207,139,18.53,677,47.243]],["name/66",[138,0.611,677,0.844]],["text/66",[5,2.624,7,0.998,8,1.554,17,1.653,29,2.457,40,1.344,84,3.576,88,1.927,110,1.85,113,1.719,135,1.665,136,1.639,138,4.306,144,2.717,148,2.113,150,1.692,161,3.014,196,3.724,199,3.737,264,1.362,271,1.892,279,1.833,280,3.537,401,2.872,402,0.901,408,2.118,459,2.485,484,4.147,508,3.673,514,3.149,521,2.638,531,1.959,556,2.421,570,2.377,657,3.603,677,2.485,686,1.574,695,4.738,745,1.98,760,2.732,932,4.182,949,5.434,950,3.215,1091,2.298,1106,2.1,1107,2.146,1114,3.111,1390,2.437,1391,3.417,1458,3.342,1459,3.603,1460,3.603,1461,2.196,1462,3.603,1463,3.342,1464,4.075,1465,3.111,1466,3.603,1467,3.161,1468,2.502,1469,2.596,1470,3.603,1471,3.603,1472,2.364]],["component/66",[7,0.401]],["title/67-1",[402,17.184,1456,33.432]],["name/67-1",[]],["text/67-1",[]],["component/67-1",[]],["title/67-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/67-2",[]],["text/67-2",[]],["component/67-2",[]],["title/67-3",[8,18.856,150,32.262]],["name/67-3",[]],["text/67-3",[]],["component/67-3",[]],["title/67-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/67-4",[]],["text/67-4",[]],["component/67-4",[]],["title/67-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/67-5",[]],["text/67-5",[]],["component/67-5",[]],["title/67-6",[8,16.222,137,31.686,746,27.183]],["name/67-6",[]],["text/67-6",[]],["component/67-6",[]],["title/67-7",[1255,32.348,1457,33.624]],["name/67-7",[]],["text/67-7",[]],["component/67-7",[]],["title/67",[311,30.628,1609,35.079,1610,36.54,1611,38.977]],["name/67",[1610,0.599,1611,0.639,1612,0.551]],["text/67",[8,2.08,10,1.821,13,1.503,17,1.876,18,2.055,34,1.979,45,2.055,79,2.061,84,3.113,99,2.215,105,1.91,117,1.866,118,1.509,121,2.542,136,1.183,137,2.192,138,2.043,139,1.64,144,1.962,148,1.525,155,4.055,168,2.345,170,2.748,174,3.531,183,1.839,214,1.742,249,2.394,251,2.231,266,3.385,296,1.881,308,1.871,311,2.415,316,2.2,391,3.553,402,1.023,442,3.228,460,1.951,465,1.93,487,2.007,514,2.48,608,2.354,617,2.529,679,2.795,686,2.729,695,2.247,708,2.458,754,1.979,963,2.364,1015,3.479,1062,3.162,1075,2.609,1421,4.831,1431,3.773,1441,5.045,1562,3.649,1609,2.766,1610,5.341,1611,4.695,1612,2.652,1613,4.089,1614,4.089,1616,4.397,1617,3.976,1619,3.588,1620,4.695,1623,3.793,2005,4.226,2006,4.226]],["component/67",[7,0.401]],["title/68-1",[3,31.597,56,36.704]],["name/68-1",[]],["text/68-1",[]],["component/68-1",[]],["title/68-2",[5,31.842,547,33.151]],["name/68-2",[]],["text/68-2",[]],["component/68-2",[]],["title/68-3",[136,23.734]],["name/68-3",[]],["text/68-3",[]],["component/68-3",[]],["title/68-4",[406,25.824,430,52.609]],["name/68-4",[]],["text/68-4",[]],["component/68-4",[]],["title/68-5",[547,28.52,1434,37.312,1624,63.552]],["name/68-5",[]],["text/68-5",[]],["component/68-5",[]],["title/68-6",[161,35.339]],["name/68-6",[]],["text/68-6",[]],["component/68-6",[]],["title/68-7",[183,30.892,1625,55.481]],["name/68-7",[]],["text/68-7",[]],["component/68-7",[]],["title/68-8",[42,29.179,502,29.437,1625,47.73]],["name/68-8",[]],["text/68-8",[]],["component/68-8",[]],["title/68-9",[191,29.399,311,40.574]],["name/68-9",[]],["text/68-9",[]],["component/68-9",[]],["title/68-10",[84,16.101,351,37.219,1626,55.762]],["name/68-10",[]],["text/68-10",[]],["component/68-10",[]],["title/68-11",[694,39.481,1526,46.175,1527,46.175]],["name/68-11",[]],["text/68-11",[]],["component/68-11",[]],["title/68-12",[355,49.513,1627,59.325]],["name/68-12",[]],["text/68-12",[]],["component/68-12",[]],["title/68-13",[1628,88.192]],["name/68-13",[]],["text/68-13",[]],["component/68-13",[]],["title/68-14",[729,48.06,1627,59.325]],["name/68-14",[]],["text/68-14",[]],["component/68-14",[]],["title/68-15",[729,48.06,1629,62.461]],["name/68-15",[]],["text/68-15",[]],["component/68-15",[]],["title/68-16",[32,26.708,35,35.374,1627,51.038]],["name/68-16",[]],["text/68-16",[]],["component/68-16",[]],["title/68-17",[32,26.708,35,35.374,1629,53.736]],["name/68-17",[]],["text/68-17",[]],["component/68-17",[]],["title/68-18",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/68-18",[]],["text/68-18",[]],["component/68-18",[]],["title/68-19",[8,16.222,137,31.686,746,27.183]],["name/68-19",[]],["text/68-19",[]],["component/68-19",[]],["title/68-20",[8,18.856,150,32.262]],["name/68-20",[]],["text/68-20",[]],["component/68-20",[]],["title/68-21",[1255,32.348,1457,33.624]],["name/68-21",[]],["text/68-21",[]],["component/68-21",[]],["title/68",[311,30.628,678,33.45,1609,35.079,1630,55.762]],["name/68",[547,0.41,1612,0.551,1631,0.758]],["text/68",[0,0.327,2,0.707,3,0.726,5,0.732,6,0.594,8,1.277,10,0.488,15,0.331,17,1.889,18,0.287,20,1.272,24,0.95,29,0.685,30,1.705,31,0.958,32,1.102,34,1.538,35,2.629,36,1.56,38,0.972,40,0.91,42,1,45,1.765,57,1.265,58,1.082,68,0.375,71,0.642,74,0.511,75,0.487,79,1.422,84,1.091,85,0.979,87,0.4,88,0.195,90,0.553,91,0.7,99,0.31,101,1.71,103,0.473,104,1.35,105,0.738,110,0.811,113,1.164,115,1.556,117,0.501,118,0.211,119,3.562,121,1.976,122,1.166,125,1.638,127,0.406,129,0.298,130,0.382,133,0.737,134,1.541,135,0.264,136,0.457,137,0.588,138,1.218,139,0.978,143,0.347,146,0.338,147,0.406,148,0.91,150,0.269,154,0.868,155,1.547,161,1.648,164,0.742,165,0.419,168,0.629,171,1.071,172,0.967,174,0.494,178,0.331,180,0.384,182,1.097,183,1.429,186,1.196,188,1.036,189,0.359,190,0.382,191,1.503,196,2.184,200,0.419,201,0.447,203,0.378,211,0.629,214,0.244,223,0.979,224,0.875,225,0.462,227,0.419,228,1.148,231,0.438,239,1.487,243,2.971,249,0.335,251,0.312,263,0.85,265,0.426,271,0.576,275,0.878,277,0.605,278,0.38,279,2.366,280,0.289,282,0.378,283,0.375,286,0.367,293,0.395,296,1.121,300,0.817,301,1.741,304,3.053,308,1.291,311,3.278,316,0.85,319,0.266,331,0.642,349,0.648,350,0.672,351,0.286,355,4.642,357,1.285,360,0.468,375,0.412,386,1.516,390,0.572,402,0.143,404,1.808,406,1.061,413,1.465,414,0.48,430,0.438,431,1.321,432,3.793,440,0.406,446,0.322,450,1.496,451,0.323,457,0.452,459,0.395,465,0.956,482,0.384,484,1.483,487,1.197,502,1.405,514,1.519,531,0.859,536,0.92,547,3.774,549,1.139,580,1.019,583,1.272,586,0.375,593,0.305,601,0.48,604,0.968,608,0.329,613,0.468,615,0.977,617,2.877,656,0.678,659,0.473,663,0.81,665,0.331,672,0.422,678,0.707,679,1.091,681,0.817,682,0.333,683,0.937,686,0.69,687,0.434,694,0.382,695,0.314,698,0.338,705,0.43,706,0.767,708,1.218,723,0.679,729,2.224,736,0.384,745,0.868,751,1.749,754,0.277,763,0.473,773,0.412,779,0.392,783,0.48,784,1.465,790,0.352,827,0.954,834,0.438,835,0.656,851,0.591,853,0.511,859,0.389,889,0.382,917,0.468,927,0.48,963,0.331,972,0.328,982,0.422,993,0.692,998,0.452,1024,0.933,1073,0.947,1075,0.365,1092,0.409,1108,2.205,1109,1.566,1122,0.473,1123,0.866,1130,0.392,1131,0.773,1138,0.848,1150,0.341,1201,1.221,1213,0.84,1219,0.426,1250,0.462,1285,0.468,1350,0.572,1416,1.075,1431,1.704,1434,0.692,1441,0.886,1456,0.278,1458,1.017,1468,0.762,1475,0.447,1483,0.292,1490,0.403,1508,0.896,1513,0.866,1515,0.48,1529,0.494,1551,0.426,1559,1.849,1596,0.52,1615,0.572,1617,0.556,1619,2.139,1620,1.187,1625,5.071,1627,8.013,1629,5.996,1632,0.615,1633,0.615,1634,0.556,1635,0.615,1636,0.615,1637,0.615,1638,0.615,1639,1.969,1640,0.438,1641,0.997,1642,2.622,1643,0.487,1644,0.572,1645,1.698,1646,0.615,1647,1.177,1648,1.179,1649,0.615,1650,0.875,1651,0.615,1652,1.179,1653,0.615,1654,0.615,1655,1.698,1656,1.133,1657,0.615,1658,0.615,1659,0.494,1660,0.591,1661,0.473,1662,0.615,1663,0.615,1664,0.615,1665,0.572,1666,0.615,1667,1.179,1668,0.615,1669,0.908,1670,0.615,1671,0.572,1672,0.572,1673,0.615,1674,0.615,1675,0.615,1676,0.615,1677,0.615,1678,0.615,1679,0.615,1680,0.615,1681,0.556,1682,0.487,1683,0.615,1684,0.615,1685,0.615,1686,5.001,1687,0.615,1688,0.556,1689,0.615,1690,1.179,1691,0.502,1692,0.52,1693,0.572,1694,0.615,1695,0.615,1696,0.615,1697,0.615,1698,0.615,1699,0.615,1700,0.615,1701,0.615,1702,1.179,1703,1.698,1704,1.698,1705,0.615,1706,0.615,1707,0.615,1708,0.434,1709,1.179,1710,1.179,1711,1.179,1712,0.615,1713,0.615,1714,0.615,1715,0.494,1716,0.615,1717,0.615,1718,1.698,1719,2.178,1720,2.178,1721,1.179,1722,0.615,1723,1.179,1724,1.179,1725,0.615,1726,0.52,1727,0.442,1728,1.179,1729,1.179,1730,0.947,1731,0.615,1732,0.615,1733,1.344,1734,0.615,1735,0.344,1736,0.615,1737,1.179,1738,1.179,1739,1.179,1740,1.698,1741,0.487,1742,0.615,1743,0.615,1744,0.615,1745,0.615,1746,0.647,1747,0.502,1748,0.591,1749,0.572,1750,0.48,1751,0.615,1752,0.572,1753,0.615]],["component/68",[7,0.401]],["title/69-1",[402,17.184,1456,33.432]],["name/69-1",[]],["text/69-1",[]],["component/69-1",[]],["title/69-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/69-2",[]],["text/69-2",[]],["component/69-2",[]],["title/69-3",[8,18.856,150,32.262]],["name/69-3",[]],["text/69-3",[]],["component/69-3",[]],["title/69-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/69-4",[]],["text/69-4",[]],["component/69-4",[]],["title/69-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/69-5",[]],["text/69-5",[]],["component/69-5",[]],["title/69-6",[8,16.222,137,31.686,746,27.183]],["name/69-6",[]],["text/69-6",[]],["component/69-6",[]],["title/69-7",[1255,32.348,1457,33.624]],["name/69-7",[]],["text/69-7",[]],["component/69-7",[]],["title/69",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/69",[1612,0.793,1754,0.977]],["text/69",[5,3.282,8,1.327,13,1.777,14,2.259,17,3.844,18,2.43,84,3.048,88,2.41,105,3.308,118,1.784,136,2.049,137,2.592,138,3.538,139,1.939,148,1.804,155,4.149,168,2.773,214,2.06,271,2.54,308,2.212,316,2.601,391,2.751,402,1.209,406,1.818,460,2.308,487,2.373,514,3.327,608,2.784,617,2.991,679,3.169,686,3.094,695,2.658,708,2.907,754,2.34,963,2.796,1075,4.518,1421,5.476,1468,5.821,1472,3.172,1612,3.136,1754,3.86,1755,7.029,1756,4.836]],["component/69",[7,0.401]],["title/70-1",[402,17.184,1456,33.432]],["name/70-1",[]],["text/70-1",[]],["component/70-1",[]],["title/70-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/70-2",[]],["text/70-2",[]],["component/70-2",[]],["title/70-3",[8,18.856,150,32.262]],["name/70-3",[]],["text/70-3",[]],["component/70-3",[]],["title/70-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/70-4",[]],["text/70-4",[]],["component/70-4",[]],["title/70-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/70-5",[]],["text/70-5",[]],["component/70-5",[]],["title/70-6",[8,16.222,137,31.686,746,27.183]],["name/70-6",[]],["text/70-6",[]],["component/70-6",[]],["title/70-7",[1255,32.348,1457,33.624]],["name/70-7",[]],["text/70-7",[]],["component/70-7",[]],["title/70",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/70",[1758,0.856,1759,0.764]],["text/70",[3,0.918,8,0.548,10,2.048,13,0.734,19,1.342,29,4.093,34,0.966,40,0.745,42,0.985,56,1.066,63,1.407,71,1.169,84,3.754,88,0.679,99,2.492,104,1.921,113,1.655,118,2.028,135,0.923,136,1.004,137,1.86,138,0.997,142,1.184,154,1.097,155,0.807,161,3.647,166,1.333,171,1.056,172,1.655,183,1.56,186,1.179,188,2.276,191,0.854,200,1.462,214,0.85,228,1.131,247,1.342,251,1.893,263,1.866,279,1.016,301,0.909,316,1.074,319,0.928,350,1.223,377,1.169,391,2.617,402,1.375,406,2.566,474,1.529,486,5.615,502,0.994,514,1.377,523,1.325,525,0.997,553,2.332,593,1.063,656,1.235,686,2.01,726,1.359,746,1.595,754,0.966,786,1.189,867,1.462,968,3.692,1076,1.049,1119,1.852,1150,2.067,1195,1.325,1451,1.751,1461,2.115,1483,1.77,1487,1.751,1528,2.562,1538,2.607,1540,1.782,1544,1.529,1545,1.675,1552,1.852,1558,2.201,1585,2.541,1622,1.675,1691,1.751,1758,3.845,1759,4.582,1760,2.146,1761,1.996,1762,3.218,1763,3.373,1764,1.996,1765,1.996,1766,2.146,1767,1.996,1768,1.996,1769,1.941,1770,4.267,1771,1.996,1772,1.632,1773,2.146,1774,2.146,1775,3.73,1776,2.146,1777,2.146,1778,2.146,1779,1.612,1780,1.852,1781,1.941,1782,1.941,1783,1.675,1784,1.815,1785,2.146,1818,1.576]],["component/70",[7,0.401]],["title/71-1",[402,17.184,1456,33.432]],["name/71-1",[]],["text/71-1",[]],["component/71-1",[]],["title/71-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/71-2",[]],["text/71-2",[]],["component/71-2",[]],["title/71-3",[8,18.856,150,32.262]],["name/71-3",[]],["text/71-3",[]],["component/71-3",[]],["title/71-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/71-4",[]],["text/71-4",[]],["component/71-4",[]],["title/71-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/71-5",[]],["text/71-5",[]],["component/71-5",[]],["title/71-6",[8,16.222,137,31.686,746,27.183]],["name/71-6",[]],["text/71-6",[]],["component/71-6",[]],["title/71-7",[1255,32.348,1457,33.624]],["name/71-7",[]],["text/71-7",[]],["component/71-7",[]],["title/71",[1128,32.569,1558,47.283,1786,33.829]],["name/71",[1558,0.776,1786,0.798]],["text/71",[3,0.893,5,3.114,6,1.052,8,0.929,10,2.401,13,0.714,14,0.907,17,2.473,29,3.135,30,1.643,32,0.877,40,1.68,49,1.517,56,1.037,84,3.796,88,1.835,99,1.834,103,1.607,105,0.907,113,0.926,118,2.479,121,1.207,130,1.297,135,1.565,136,1.303,137,1.815,138,2.249,154,1.067,155,0.785,161,1.459,211,1.113,228,2.551,271,2.365,279,0.988,280,0.982,320,1.245,395,1.368,402,1.126,406,2.525,408,1.142,461,1.733,464,1.349,486,2.336,514,2.428,531,1.056,552,0.882,558,1.487,615,1.201,656,1.201,670,1.157,686,1.967,695,1.067,726,2.305,746,1.557,754,0.939,774,1.446,865,1.152,903,1.219,1106,1.132,1107,1.157,1128,1.219,1150,3.644,1195,1.289,1214,1.459,1390,1.313,1434,2.137,1461,1.184,1465,1.676,1469,1.399,1483,0.991,1517,1.568,1524,1.473,1526,1.517,1527,1.517,1528,1.434,1537,1.676,1538,1.459,1543,1.733,1544,2.593,1545,1.628,1551,1.446,1556,2.336,1558,4.586,1565,1.676,1585,2.48,1590,1.676,1759,1.213,1787,1.841,1788,1.942,1789,1.841,1790,1.628,1791,1.888,1792,2.087,1793,2.087,1794,1.733,1795,3.211,1796,1.841,1797,1.942,1798,1.841,1799,1.841,1800,1.841,1801,1.733,1802,1.733,1803,1.676,1804,1.841,1805,1.733,1806,1.765,1807,1.628,1808,1.676,1809,1.733,1810,1.942,1811,1.733,1812,1.841,1813,1.733,1814,2.196,1815,3.386,1816,4.407,1817,1.942,1818,1.533]],["component/71",[7,0.401]],["title/72-1",[402,17.184,1456,33.432]],["name/72-1",[]],["text/72-1",[]],["component/72-1",[]],["title/72-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/72-2",[]],["text/72-2",[]],["component/72-2",[]],["title/72-3",[8,18.856,150,32.262]],["name/72-3",[]],["text/72-3",[]],["component/72-3",[]],["title/72-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/72-4",[]],["text/72-4",[]],["component/72-4",[]],["title/72-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/72-5",[]],["text/72-5",[]],["component/72-5",[]],["title/72-6",[8,16.222,137,31.686,746,27.183]],["name/72-6",[]],["text/72-6",[]],["component/72-6",[]],["title/72-7",[1255,32.348,1457,33.624]],["name/72-7",[]],["text/72-7",[]],["component/72-7",[]],["title/72",[1128,32.569,1786,33.829,1819,55.503]],["name/72",[1786,0.798,1819,0.911]],["text/72",[3,1.152,5,3.578,6,0.75,8,1.156,10,2.65,14,1.968,17,2.73,18,0.695,29,3.092,30,1.666,32,2.204,34,0.67,36,0.679,40,1.572,42,0.683,56,1.338,79,2.123,84,3.676,88,2.307,94,1.653,99,0.75,105,0.646,112,0.706,117,0.632,118,2.195,125,0.713,134,1.009,135,1.158,136,1.219,137,1.343,138,1.715,144,0.664,146,0.817,148,0.516,150,0.65,154,0.761,155,0.56,158,1.473,161,1.815,169,0.883,172,0.66,183,1.126,194,1.792,196,1.612,199,0.913,211,0.793,221,1.031,228,1.419,234,0.869,254,1.883,267,0.883,271,2.562,279,0.704,280,0.7,301,0.63,320,0.888,336,1.384,388,0.913,401,0.702,402,1.054,406,2.237,408,0.814,414,1.161,431,0.903,455,0.769,458,0.961,465,1.183,486,4.105,502,2.098,508,0.897,514,2.363,520,1.081,531,0.752,547,0.668,549,1.408,552,0.628,557,0.897,558,1.06,577,2.252,615,2.124,647,0.942,656,0.856,670,0.824,679,0.619,682,0.807,684,0.781,686,1.5,695,0.761,726,2.337,746,1.152,754,0.67,772,0.93,788,0.908,835,0.828,903,0.869,933,1.005,964,1.177,1106,0.807,1107,0.824,1125,1.82,1150,2.51,1168,1.145,1214,1.04,1287,0.99,1301,1.235,1352,2.376,1390,1.695,1434,0.873,1461,0.844,1469,0.997,1483,0.706,1528,1.022,1538,1.04,1544,1.918,1545,1.161,1551,1.031,1556,0.955,1558,2.673,1565,1.195,1585,2.514,1669,1.145,1735,0.832,1759,0.865,1790,1.161,1791,1.345,1794,1.235,1801,1.235,1802,1.235,1803,1.195,1805,1.235,1807,1.161,1808,1.195,1809,1.235,1811,1.235,1813,1.235,1816,2.048,1818,1.092,1819,5.309,1820,1.384,1821,2.236,1822,3.433,1823,3.256,1824,1.384,1825,1.384,1826,1.488,1827,1.145,1828,1.488,1829,1.488,1830,1.488,1831,1.384,1832,1.384,1833,1.488,1834,1.488,1835,1.488,1836,1.488,1837,1.488,1838,1.384,1839,1.312,1840,1.488,1841,1.488,1842,1.488,1843,1.258,1844,1.384,1845,1.312,1846,1.131,1847,1.384,1848,1.384,1849,1.195,1850,2.694,1851,2.376,1852,1.06,1853,1.384]],["component/72",[7,0.401]],["title/73-1",[402,17.184,1456,33.432]],["name/73-1",[]],["text/73-1",[]],["component/73-1",[]],["title/73-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/73-2",[]],["text/73-2",[]],["component/73-2",[]],["title/73-3",[8,18.856,150,32.262]],["name/73-3",[]],["text/73-3",[]],["component/73-3",[]],["title/73-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/73-4",[]],["text/73-4",[]],["component/73-4",[]],["title/73-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/73-5",[]],["text/73-5",[]],["component/73-5",[]],["title/73-6",[8,16.222,137,31.686,746,27.183]],["name/73-6",[]],["text/73-6",[]],["component/73-6",[]],["title/73",[1128,32.569,1786,33.829,1854,58.665,1855,45.501]],["name/73",[1786,0.798,1855,1.073]],["text/73",[3,0.864,5,3.29,6,1.018,8,0.516,10,2.935,17,2.417,18,0.944,26,1.49,29,3.269,30,2.13,32,0.849,36,0.922,40,1.637,56,1.003,79,2.212,82,1.399,84,3.731,88,1.793,99,1.782,112,0.959,118,2.21,134,1.325,135,1.521,136,1.525,137,1.763,138,2.192,144,0.901,146,1.109,148,1.227,154,1.032,155,0.76,161,2.27,172,0.896,183,1.479,196,0.882,211,1.077,221,1.399,228,1.064,234,1.18,240,1.517,267,1.198,271,2.305,279,0.956,320,1.205,401,0.953,402,1.318,406,1.98,408,1.104,431,1.225,486,4.547,502,1.638,508,1.218,514,2.819,520,1.467,531,1.021,541,1.622,552,0.853,558,1.438,577,2.879,590,1.598,615,2.715,656,1.162,670,1.119,672,1.387,679,0.84,682,1.095,686,1.917,695,1.032,746,1.513,754,0.909,788,1.232,835,1.124,933,1.364,1106,1.095,1107,1.119,1125,1.364,1139,1.387,1150,3.139,1214,1.412,1287,1.343,1291,1.535,1390,2.225,1434,1.186,1461,1.145,1469,1.354,1538,1.412,1556,1.296,1558,1.192,1585,3.214,1669,1.555,1735,1.129,1762,4.888,1789,3.12,1790,1.576,1806,1.708,1807,1.576,1816,2.689,1818,1.483,1827,1.555,1839,1.782,1845,1.782,1846,1.535,1851,3.12,1852,1.438,1855,3.85,1856,2.125,1857,2.125,1858,2.125,1859,2.125,1860,2.125,1861,2.125,1862,2.125,1863,2.125,1864,2.125,1865,2.125,1866,2.125,1867,2.125,1868,2.125,1869,2.125,1870,2.125,1871,2.125,1872,2.125,1873,2.125,1874,2.125,1875,2.125,1876,2.125,1877,1.782]],["component/73",[7,0.401]],["title/74-1",[402,17.184,1456,33.432]],["name/74-1",[]],["text/74-1",[]],["component/74-1",[]],["title/74-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/74-2",[]],["text/74-2",[]],["component/74-2",[]],["title/74-3",[8,18.856,150,32.262]],["name/74-3",[]],["text/74-3",[]],["component/74-3",[]],["title/74-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/74-4",[]],["text/74-4",[]],["component/74-4",[]],["title/74-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/74-5",[]],["text/74-5",[]],["component/74-5",[]],["title/74-6",[8,16.222,137,31.686,746,27.183]],["name/74-6",[]],["text/74-6",[]],["component/74-6",[]],["title/74-7",[1255,32.348,1457,33.624]],["name/74-7",[]],["text/74-7",[]],["component/74-7",[]],["title/74",[1128,32.569,1786,33.829,1878,69.118]],["name/74",[1786,0.798,1878,1.135]],["text/74",[3,0.595,5,1.854,8,0.647,10,1.781,13,0.475,26,1.47,29,3.244,30,1.941,40,1.492,56,0.691,84,3.83,88,1.104,99,0.701,101,0.696,105,1.516,118,1.198,135,0.598,136,0.939,137,1.263,138,1.177,142,0.767,143,1.43,146,0.764,148,0.483,151,1.771,154,0.711,155,0.523,161,2.459,172,0.617,191,0.554,199,0.854,214,1.004,228,1.335,239,0.682,240,1.045,248,0.724,251,0.706,262,0.834,271,1.238,279,0.658,287,1.021,300,0.964,350,0.792,402,1.001,406,2.704,408,1.386,446,1.325,457,1.021,464,0.899,486,4.238,502,0.644,506,1.045,514,2.07,531,0.703,547,0.624,552,0.587,583,1.48,656,0.8,678,0.834,682,0.754,686,1.418,694,0.864,695,1.295,726,3.549,736,0.869,746,1.084,754,0.626,850,1.841,895,1.071,911,1.337,968,1.398,1106,0.754,1107,0.771,1150,2.384,1195,0.859,1214,0.972,1250,1.045,1305,1.117,1390,2.706,1434,0.817,1461,0.789,1465,1.117,1469,0.932,1483,2.042,1514,1.071,1517,1.045,1526,1.011,1527,1.011,1528,2.955,1537,1.117,1538,0.972,1544,0.991,1547,1.337,1549,1.337,1550,1.337,1551,0.964,1556,0.892,1558,1.496,1567,1.337,1585,1.726,1590,1.117,1634,1.258,1691,1.135,1759,0.808,1761,1.294,1762,2.186,1763,1.258,1790,1.085,1803,2.035,1806,1.176,1807,1.085,1808,1.117,1817,1.294,1818,1.021,1823,2.235,1839,1.227,1878,5.294,1879,1.463,1880,1.135,1881,1.463,1882,1.463,1883,1.463,1884,1.463,1885,1.463,1886,1.463,1887,1.463,1888,6.455,1889,2.357,1890,1.463,1891,1.463,1892,5.896,1893,5.896,1894,1.463,1895,1.463,1896,1.463,1897,1.463,1898,1.463,1899,1.463,1900,2.666,1901,1.463,1902,1.463,1903,1.463,1904,1.463,1905,1.463,1906,1.463,1907,1.463,1908,1.294,1909,1.463,1910,1.463,1911,1.463,1912,1.463,1913,1.463,1914,1.463,1915,1.463,1916,1.337,1917,2.666,1918,1.463,1919,1.463,1920,1.463,1921,1.463,1922,1.463,1923,1.463,1924,1.258,1925,1.463,1926,1.463,1927,1.463,1928,1.463,1929,1.463,1930,1.337,1931,1.463,1932,1.463,1933,1.155,1934,1.463,1935,1.463]],["component/74",[7,0.401]],["title/75-1",[343,64.077]],["name/75-1",[]],["text/75-1",[]],["component/75-1",[]],["title/75-2",[402,17.184,1129,38.042]],["name/75-2",[]],["text/75-2",[]],["component/75-2",[]],["title/75-3",[402,17.184,1128,43.146]],["name/75-3",[]],["text/75-3",[]],["component/75-3",[]],["title/75-4",[311,34.906,402,14.783,1609,39.979]],["name/75-4",[]],["text/75-4",[]],["component/75-4",[]],["title/75-5",[402,20.515]],["name/75-5",[]],["text/75-5",[]],["component/75-5",[]],["title/75-6",[236,39.251]],["name/75-6",[]],["text/75-6",[]],["component/75-6",[]],["title/75-7",[163,33.101,319,27.465,402,14.783]],["name/75-7",[]],["text/75-7",[]],["component/75-7",[]],["title/75-8",[296,27.183,402,14.783,1936,41.347]],["name/75-8",[]],["text/75-8",[]],["component/75-8",[]],["title/75-9",[7,12.805,79,23.287,134,18.607,163,25.873,871,34.721]],["name/75-9",[]],["text/75-9",[]],["component/75-9",[]],["title/75",[7,19.043,402,17.184]],["name/75",[631,1.45]],["text/75",[5,1.382,6,0.91,7,0.466,8,1.335,13,1.788,14,1.877,16,5.21,24,1.01,26,2.523,29,2.111,34,3.229,40,0.627,42,0.829,52,2.09,56,1.593,70,1.429,77,1.06,79,1.503,84,1.511,88,0.572,90,1.503,99,0.91,104,0.93,105,0.785,113,0.802,117,1.361,118,1.483,128,1.066,134,3.157,135,1.378,136,1.612,137,2.154,139,0.674,144,0.806,146,1.761,148,1.112,151,1.263,152,1.299,155,1.206,160,2.925,161,1.284,163,2.251,168,0.963,169,1.072,171,0.888,172,0.802,178,0.971,183,1.34,192,0.956,196,1.887,214,0.716,236,0.804,239,0.885,248,2.725,251,0.917,263,2.162,267,3.104,271,1.566,275,0.934,279,1.517,296,1.848,297,1.844,301,2.536,311,2.873,316,0.904,319,1.385,324,1.341,335,1.083,340,1.129,343,1.312,354,1.115,361,0.865,386,1.044,395,1.184,401,0.852,402,2.314,406,1.829,408,0.988,431,1.096,450,1.241,455,1.657,465,1.897,514,0.667,519,3.726,525,1.489,547,0.811,548,1.22,593,0.894,608,1.716,615,1.039,643,1.499,647,2.736,661,1.499,665,1.723,666,1.122,674,3.563,676,1.241,678,2.592,681,1.251,683,0.996,686,0.734,723,0.722,741,1.159,742,1.299,744,1.274,779,1.151,786,1.001,790,1.034,871,1.263,900,1.211,903,1.872,937,1.23,983,1.357,1076,2.111,1106,0.979,1107,1.001,1128,3.056,1129,3.695,1144,1.39,1166,1.474,1306,2.661,1400,1.001,1403,1.286,1418,1.736,1444,1.736,1468,1.167,1473,1.241,1477,1.039,1487,2.615,1558,1.066,1609,3.291,1610,1.184,1611,1.263,1708,1.274,1755,1.409,1758,1.175,1759,1.05,1819,1.251,1821,1.499,1855,1.474,1878,1.558,1936,2.085,1937,1.68,1938,1.68,1939,1.9,1940,1.68,1941,1.9,1942,2.772,1943,1.527,1944,1.68,1945,1.211,1946,1.499,1947,1.499,1948,1.527,1949,1.9,1950,1.326,1951,1.9,1952,1.474,1953,1.9,1954,1.9,1955,1.68,1956,1.9,1957,1.9,1958,1.9,1959,1.9,1960,1.9,1961,1.527,1962,1.474,1963,2.765,1964,1.558,1965,1.558,1966,1.9]],["component/75",[7,0.401]],["title/76-1",[0,39.238,1,51.636]],["name/76-1",[]],["text/76-1",[]],["component/76-1",[]],["title/76-2",[9,44.029,33,33.622,552,26.841]],["name/76-2",[]],["text/76-2",[]],["component/76-2",[]],["title/76",[2,44.313,3,31.597]],["name/76",[2,0.789,3,0.563]],["text/76",[0,2.565,1,5.422,2,2.178,3,3.318,4,2.121,5,0.897,6,1.049,7,0.936,8,1.477,9,5.698,10,3.72,11,5.12,12,3.877,13,0.711,14,0.904,17,3.509,18,4.033,19,1.301,20,1.216,21,1.936,22,1.727,23,0.979,24,2.03,25,1.582,26,0.877,27,1.936,28,1.836,29,1.949,30,2.18,31,1.174,32,1.526,33,5.417,34,1.634,35,2.021,36,0.95,37,1.277,38,1.191,39,1.936,40,0.722,41,1.936,42,1.667,43,1.76,44,1.936,45,1.697,46,1.528,47,1.936,48,3.296,49,1.512,50,4.26,51,1.936,52,1.007,53,1.936,54,2.069,55,1.936,56,2.4,57,2.11,58,2.314,59,1.936,60,2.314,61,1.936,62,1.795,63,1.364,64,2.727,65,1.429,66,1.936,67,1.936,68,1.27,69,1.582,70,1.647,71,1.133,72,1.936,73,1.936,74,1.727,75,1.647,76,1.318,77,1.222,79,0.976,84,0.601,121,2.099,134,0.78,141,1.528,148,0.722,158,1.138,172,0.924,186,1.143,191,2.302,194,2.415,196,0.909,234,1.216,251,1.056,263,1.041,264,0.732,272,1.191,286,2.881,287,3.547,296,1.553,325,1.354,351,0.967,361,0.997,386,1.203,406,1.269,408,1.138,517,1.263,552,1.534,604,2.069,668,1.119,751,2.916,963,1.119,1076,1.017,1078,1.344,1249,1.698,1434,1.222,1468,1.344,1492,1.563,1498,1.455,1945,1.395,2007,1.882,2008,2.081,2009,1.836,2010,1.836,2011,6.564,2012,6.564,2013,5.785,2014,4.83,2015,2.081,2016,1.468,2017,2.081,2018,1.497,2019,2.081,2020,2.081,2021,2.081,2022,2.081,2023,2.081,2024,1.882,2025,2.081,2026,2.081,2027,2.081,2028,2.081,2029,1.882]],["component/76",[7,0.401]],["title/77-1",[211,39.397,2030,73.872]],["name/77-1",[]],["text/77-1",[]],["component/77-1",[]],["title/77-2",[3,31.597,42,33.917]],["name/77-2",[]],["text/77-2",[]],["component/77-2",[]],["title/77-3",[134,33.036]],["name/77-3",[]],["text/77-3",[]],["component/77-3",[]],["title/77-4",[88,27.909]],["name/77-4",[]],["text/77-4",[]],["component/77-4",[]],["title/77-5",[86,46.845]],["name/77-5",[]],["text/77-5",[]],["component/77-5",[]],["title/77-6",[2,52.904]],["name/77-6",[]],["text/77-6",[]],["component/77-6",[]],["title/77-7",[11,43.832,12,39.721]],["name/77-7",[]],["text/77-7",[]],["component/77-7",[]],["title/77-8",[155,27.786,249,40.225]],["name/77-8",[]],["text/77-8",[]],["component/77-8",[]],["title/77-9",[52,35.736,134,27.671]],["name/77-9",[]],["text/77-9",[]],["component/77-9",[]],["title/77-10",[7,16.382,32,26.708,155,23.905]],["name/77-10",[]],["text/77-10",[]],["component/77-10",[]],["title/77-11",[118,21.806,264,22.343,743,37.312]],["name/77-11",[]],["text/77-11",[]],["component/77-11",[]],["title/77-12",[468,43.669]],["name/77-12",[]],["text/77-12",[]],["component/77-12",[]],["title/77-13",[135,37.916]],["name/77-13",[]],["text/77-13",[]],["component/77-13",[]],["title/77-14",[136,23.734]],["name/77-14",[]],["text/77-14",[]],["component/77-14",[]],["title/77-15",[23,29.884,40,22.05,547,28.52]],["name/77-15",[]],["text/77-15",[]],["component/77-15",[]],["title/77-16",[13,25.254,105,32.092]],["name/77-16",[]],["text/77-16",[]],["component/77-16",[]],["title/77",[3,31.597,7,19.043]],["name/77",[10,0.973]],["text/77",[3,1.909,6,1.92,7,1.919,8,1.639,10,3.499,11,1.305,12,0.641,13,1.303,14,0.518,17,1.626,18,1.028,20,0.696,23,1.792,24,0.667,29,3.57,36,0.544,40,0.763,42,1.406,45,1.028,48,0.679,52,1.843,79,2.603,83,1.652,84,1.962,85,1.826,86,1.168,87,2.479,88,2.15,99,1.543,105,0.956,107,0.849,110,1.463,112,1.044,113,1.981,116,1.737,117,0.934,118,2.062,125,0.571,133,0.745,134,1.147,135,1.638,136,1.201,139,1.665,144,0.532,145,0.799,146,1.208,155,1.896,158,0.652,160,0.667,163,1.984,171,0.586,172,1.359,177,1.109,178,1.183,180,0.745,183,0.498,185,1.552,186,0.655,190,0.741,191,2.006,192,1.62,196,2.201,200,1.498,201,0.866,203,0.732,211,0.636,220,0.866,222,0.989,224,3.674,226,0.787,227,0.812,228,0.628,231,0.849,234,3.51,239,1.501,243,1.384,245,0.849,247,0.745,248,0.621,249,1.668,250,1.582,251,0.605,252,1.034,253,0.812,254,0.833,255,0.715,256,1.051,257,1.078,258,0.93,259,1.109,260,0.906,261,1.898,262,1.837,263,0.596,264,3.34,272,0.682,277,0.612,280,1.034,282,0.732,283,1.869,286,0.711,292,1.236,296,1.31,308,1.303,313,1.939,319,0.515,335,0.715,346,0.918,348,0.805,349,0.655,354,0.736,355,0.799,357,0.704,377,0.649,386,0.689,391,0.631,394,0.787,402,0.512,406,1.56,412,0.841,418,1.767,431,0.723,438,0.875,443,1.219,450,0.819,451,0.626,460,0.529,465,1.345,468,1.887,487,1.004,505,0.781,509,0.77,525,1.423,547,0.535,549,0.623,552,1.294,556,0.745,569,0.989,593,1.089,604,1.745,619,0.826,630,0.75,647,0.755,654,0.866,662,1.008,663,0.819,679,0.496,680,0.626,682,1.193,683,1.69,684,1.608,687,0.841,698,1.208,711,0.76,732,0.799,741,0.765,743,2.237,754,1.715,786,1.219,790,0.682,865,1.69,871,0.833,900,1.474,920,0.943,961,0.875,968,1.214,993,0.7,1005,1.096,1012,0.918,1091,0.707,1097,0.841,1110,0.826,1211,0.805,1253,1.431,1300,0.973,1413,0.989,1455,2.046,1477,0.686,1498,2.141,1520,1.486,1561,0.906,1623,1.028,1640,1.567,1688,2.769,1942,0.765,1947,0.989,2010,1.051,2016,0.841,2018,1.582,2031,1.192,2032,1.192,2033,1.192,2034,2.2,2035,1.192,2036,1.192,2037,1.078,2038,1.192,2039,1.192,2040,1.192,2041,1.192,2042,0.826,2043,3.222,2044,1.348,2045,0.93,2046,1.008,2047,1.008,2048,1.348,2049,1.348,2050,0.973,2051,0.826,2052,1.109,2053,1.028,2054,0.732,2055,3.06,2056,0.841,2057,1.192,2058,1.109,2059,1.192,2060,0.812,2061,1.078,2062,1.192,2063,0.895,2064,1.192,2065,1.348,2066,1.078,2067,1.051,2068,1.078,2069,1.008,2070,1.109,2071,1.078,2072,0.957,2073,0.957,2074,1.192]],["component/77",[7,0.401]],["title/78-1",[684,38.775,869,56.867]],["name/78-1",[]],["text/78-1",[]],["component/78-1",[]],["title/78-2",[113,39.143]],["name/78-2",[]],["text/78-2",[]],["component/78-2",[]],["title/78-3",[7,19.043,869,56.867]],["name/78-3",[]],["text/78-3",[]],["component/78-3",[]],["title/78-4",[111,50.007]],["name/78-4",[]],["text/78-4",[]],["component/78-4",[]],["title/78-5",[113,39.143]],["name/78-5",[]],["text/78-5",[]],["component/78-5",[]],["title/78-6",[13,19.063,14,24.225,264,19.605,325,36.279]],["name/78-6",[]],["text/78-6",[]],["component/78-6",[]],["title/78",[1246,68.801]],["name/78",[1246,1.832]],["text/78",[3,2.362,7,2.951,8,1.41,10,1.419,11,3.277,12,1.843,13,2.983,14,3.79,23,1.611,26,1.444,33,2.922,38,1.962,42,1.573,48,3.147,49,2.49,62,2.957,77,2.012,80,2.44,84,2.003,88,1.748,96,1.68,102,3.132,111,4.947,113,4.529,115,2.033,125,2.646,128,2.023,129,1.658,148,1.189,158,1.874,164,2.156,186,1.882,221,2.374,236,1.525,243,3.474,252,1.611,264,2.439,301,1.451,313,4.392,314,3.187,320,2.044,325,3.593,333,2.091,344,2.844,356,3.047,384,2.957,421,1.934,443,1.899,451,1.799,509,2.214,517,2.079,520,2.49,553,3.452,593,1.697,684,2.899,869,7.179,889,2.129,963,1.843,972,3.7,1062,2.465,1221,2.957,1246,6.807,1250,2.574,1289,2.898,1421,2.465,1595,5.137,1945,2.297,2075,3.427,2076,2.395,2077,5.523,2078,5.523,2079,5.523]],["component/78",[7,0.401]],["title/79-1",[296,27.183,673,32.606,743,37.312]],["name/79-1",[]],["text/79-1",[]],["component/79-1",[]],["title/79-2",[7,16.382,134,23.806,552,26.841]],["name/79-2",[]],["text/79-2",[]],["component/79-2",[]],["title/79-3",[2080,70.826]],["name/79-3",[]],["text/79-3",[]],["component/79-3",[]],["title/79-4",[86,46.845]],["name/79-4",[]],["text/79-4",[]],["component/79-4",[]],["title/79-5",[88,27.909]],["name/79-5",[]],["text/79-5",[]],["component/79-5",[]],["title/79-6",[155,27.786,465,32.434]],["name/79-6",[]],["text/79-6",[]],["component/79-6",[]],["title/79-7",[13,21.726,14,27.609,319,27.465]],["name/79-7",[]],["text/79-7",[]],["component/79-7",[]],["title/79-8",[135,31.759,319,31.924]],["name/79-8",[]],["text/79-8",[]],["component/79-8",[]],["title/79-9",[439,37.508,708,35.536,1400,35.216]],["name/79-9",[]],["text/79-9",[]],["component/79-9",[]],["title/79",[]],["name/79",[93,0.536,94,0.561,552,0.386]],["text/79",[3,0.449,5,0.842,7,0.886,8,1.516,10,2.751,13,2.03,14,2.405,17,0.448,18,0.49,20,0.613,29,2.054,30,0.882,36,0.892,38,1.119,42,0.897,45,0.49,52,0.945,68,0.64,76,1.737,84,1.598,86,2.94,87,0.683,88,1.282,90,0.492,93,1.147,94,1.684,99,0.985,102,0.595,109,0.887,112,3.675,113,0.867,115,0.623,116,0.595,117,2.161,118,1.179,125,0.936,126,0.779,130,1.214,134,1.287,135,3.757,136,1.09,139,2.065,141,2.523,148,1.596,154,0.536,155,1.524,160,0.587,161,1.843,163,0.547,165,1.331,169,1.16,171,0.516,172,1.218,181,0.788,186,0.576,191,1.092,192,0.555,194,0.698,195,0.669,196,2.418,200,0.715,201,0.762,203,0.644,211,0.56,214,1.605,220,2.497,224,3.987,226,0.693,234,1.142,238,0.788,239,0.514,247,1.715,250,0.755,253,0.715,263,0.525,264,3.413,277,0.538,279,0.496,280,1.29,283,1.674,292,0.589,296,2.54,297,1.124,308,0.832,311,2.526,315,0.715,316,0.525,319,0.845,341,0.629,348,0.709,349,0.576,391,2.694,392,0.976,402,0.244,406,0.367,408,0.574,439,0.619,441,1.237,443,0.581,446,0.549,451,0.551,455,1.01,465,1.509,468,0.968,470,0.485,476,0.856,487,0.479,514,1.496,518,3.626,525,0.908,547,0.471,549,0.549,552,2.15,556,2.875,583,2.366,603,0.66,604,0.598,613,0.798,617,2.929,630,1.229,631,0.648,658,0.949,670,1.083,673,3.972,674,0.715,680,0.551,683,1.078,684,1.44,695,0.536,697,1.664,708,1.922,735,1.853,736,0.656,743,0.616,767,0.762,786,1.083,859,1.237,865,1.078,890,0.678,894,0.715,900,0.703,903,0.613,909,0.755,961,0.771,982,3.802,993,0.616,1005,0.699,1076,0.513,1090,0.727,1095,0.871,1139,0.721,1211,0.709,1253,1.272,1277,5.815,1400,1.083,1413,0.871,1449,0.976,1467,2.804,1490,0.688,1640,0.747,1727,0.755,1942,0.673,1945,0.703,1948,1.653,1952,1.595,2051,0.727,2054,1.2,2060,3.133,2061,0.949,2073,0.843,2076,0.733,2080,4.769,2081,0.949,2082,1.049,2083,0.843,2084,0.926,2085,1.049,2086,0.949,2087,0.949,2088,0.949,2089,0.949,2090,0.949,2091,0.949,2092,0.856,2093,1.686,2094,0.949,2095,1.049,2096,0.949,2097,0.83,2098,0.905,2099,0.976,2100,1.049,2101,1.049,2102,1.049,2103,0.871,2104,0.976,2105,1.049,2106,0.949,2107,0.949,2108,0.856,2109,0.819,2110,0.949,2111,1.954,2112,2.48,2113,1.049,2114,0.976,2115,1.049,2116,0.856,2117,1.954,2118,1.653,2119,2.551,2120,1.049,2121,1.878,2122,1.049,2123,1.049,2124,1.954,2125,2.743,2126,1.818,2127,0.905,2128,1.049,2129,1.049,2130,0.949,2131,0.976,2132,0.905,2133,1.049,2134,0.887,2135,0.843,2136,0.887]],["component/79",[7,0.401]],["title/80-1",[7,16.382,134,23.806,552,26.841]],["name/80-1",[]],["text/80-1",[]],["component/80-1",[]],["title/80-2",[7,16.382,10,26.319,552,26.841]],["name/80-2",[]],["text/80-2",[]],["component/80-2",[]],["title/80-3",[40,22.05,552,26.841,1952,51.858]],["name/80-3",[]],["text/80-3",[]],["component/80-3",[]],["title/80-4",[2080,70.826]],["name/80-4",[]],["text/80-4",[]],["component/80-4",[]],["title/80-5",[86,46.845]],["name/80-5",[]],["text/80-5",[]],["component/80-5",[]],["title/80-6",[88,27.909]],["name/80-6",[]],["text/80-6",[]],["component/80-6",[]],["title/80-7",[465,32.434,548,49.907]],["name/80-7",[]],["text/80-7",[]],["component/80-7",[]],["title/80-8",[139,32.899]],["name/80-8",[]],["text/80-8",[]],["component/80-8",[]],["title/80-9",[13,25.254,14,32.092]],["name/80-9",[]],["text/80-9",[]],["component/80-9",[]],["title/80-10",[1253,48.06,2063,55.481]],["name/80-10",[]],["text/80-10",[]],["component/80-10",[]],["title/80-11",[3,23.851,349,30.628,439,32.911,708,31.18]],["name/80-11",[]],["text/80-11",[]],["component/80-11",[]],["title/80-12",[112,26.465,113,24.75,118,19.133,972,29.739]],["name/80-12",[]],["text/80-12",[]],["component/80-12",[]],["title/80-13",[139,20.802,144,24.886,673,28.61,2137,40.104]],["name/80-13",[]],["text/80-13",[]],["component/80-13",[]],["title/80-14",[16,50.316,1400,40.934]],["name/80-14",[]],["text/80-14",[]],["component/80-14",[]],["title/80-15",[139,23.708,335,38.123,624,46.666]],["name/80-15",[]],["text/80-15",[]],["component/80-15",[]],["title/80-16",[296,21.247,391,26.28,487,22.675,680,26.073,2138,36.475]],["name/80-16",[]],["text/80-16",[]],["component/80-16",[]],["title/80-17",[13,21.726,14,27.609,88,20.111]],["name/80-17",[]],["text/80-17",[]],["component/80-17",[]],["title/80-18",[260,56.153,2063,55.481]],["name/80-18",[]],["text/80-18",[]],["component/80-18",[]],["title/80-19",[10,20.571,87,32.317,129,24.03,402,11.555,470,22.941]],["name/80-19",[]],["text/80-19",[]],["component/80-19",[]],["title/80-20",[258,57.629,260,56.153]],["name/80-20",[]],["text/80-20",[]],["component/80-20",[]],["title/80-21",[258,57.629,2139,73.872]],["name/80-21",[]],["text/80-21",[]],["component/80-21",[]],["title/80-22",[112,26.465,118,19.133,552,23.551,616,45.501]],["name/80-22",[]],["text/80-22",[]],["component/80-22",[]],["title/80-23",[26,20.927,113,22.047,264,17.464,357,29.317,552,20.98]],["name/80-23",[]],["text/80-23",[]],["component/80-23",[]],["title/80-24",[13,21.726,14,27.609,552,26.841]],["name/80-24",[]],["text/80-24",[]],["component/80-24",[]],["title/80-25",[136,15.007,603,35.079,684,29.269,1001,43.502]],["name/80-25",[]],["text/80-25",[]],["component/80-25",[]],["title/80-26",[136,10.972,514,15.054,528,23.936,603,25.648,841,26.913,1201,29.322,1621,34.473]],["name/80-26",[]],["text/80-26",[]],["component/80-26",[]],["title/80",[7,14.374,102,31.619,158,30.495,552,23.551]],["name/80",[552,0.556,1608,1.189]],["text/80",[3,0.946,4,1.008,5,0.27,6,0.315,7,0.686,8,1.063,10,0.715,13,1.185,14,1.337,16,0.426,17,0.736,23,0.811,24,2.14,26,0.727,29,1.398,30,0.541,32,0.263,33,0.634,35,0.667,36,0.547,37,1.059,38,0.358,40,1.202,42,0.792,45,2.234,52,1.489,58,0.399,63,0.41,68,0.382,79,2.101,84,2.197,86,3.085,88,1.097,90,1.037,92,0.391,96,0.307,97,0.816,104,0.322,105,0.272,110,1.828,111,0.68,112,3.058,113,1.989,115,0.371,116,0.978,117,1.903,118,1.736,125,0.3,128,0.369,134,1.679,136,1.206,138,0.557,139,2.404,141,1.624,144,0.987,148,0.599,154,0.882,155,0.649,160,0.965,161,0.691,162,0.88,163,0.899,168,0.334,169,1.024,170,1.079,171,0.308,172,0.981,178,0.645,183,0.262,185,0.441,189,1.554,190,1.374,191,1.658,192,0.331,195,0.399,196,1.671,203,0.384,208,0.552,211,0.334,214,0.475,224,0.889,226,0.413,234,0.365,239,0.307,241,0.519,243,0.394,247,2.604,248,0.624,249,0.94,250,0.45,252,1.447,253,0.426,258,2.076,260,0.476,261,0.54,262,0.719,263,0.863,264,1.681,265,0.434,267,0.711,268,1.719,271,0.586,273,0.519,275,0.62,278,0.74,279,0.296,280,1.251,282,0.384,283,0.382,296,1.917,297,0.993,301,1.467,304,0.89,317,0.446,319,0.956,324,0.465,330,0.81,331,0.341,335,0.375,337,0.54,340,0.391,346,0.482,349,0.658,354,1.065,355,1.156,356,0.345,361,1.275,374,0.47,377,0.653,378,0.446,388,0.384,391,0.913,401,0.295,402,0.716,408,0.656,424,0.88,429,0.437,430,0.446,431,0.727,439,0.707,440,0.413,443,1.225,445,0.404,446,0.327,450,0.43,451,0.629,452,0.862,455,1.978,458,0.404,465,1.168,468,0.31,470,0.554,476,0.978,483,0.566,487,2.046,506,0.47,509,0.404,514,1.765,517,0.38,518,3.404,519,0.446,523,0.386,525,0.557,528,0.704,547,0.774,548,1.494,549,1.391,552,3.328,556,2.802,575,0.45,580,1.326,583,1.008,586,0.382,593,0.594,603,0.754,604,0.357,616,0.511,619,0.83,620,0.38,622,0.47,623,1.034,624,0.459,665,0.928,668,0.645,670,1.705,673,2.452,675,0.823,676,0.43,678,1.326,679,0.718,680,2.509,681,0.434,682,0.936,683,1.468,684,1.615,686,0.701,695,0.32,697,1.341,706,0.407,708,0.67,712,0.786,723,0.69,724,1.014,732,0.803,734,0.455,735,1.166,736,1.079,738,0.519,740,0.511,741,1.707,742,0.862,745,0.32,780,1.034,781,1.489,786,0.664,788,0.731,834,0.446,841,1.46,865,0.952,889,0.745,894,0.816,903,0.7,918,0.482,930,0.465,962,0.511,963,0.336,972,1.179,973,0.923,982,0.823,985,0.399,993,0.367,1001,0.488,1008,0.983,1066,1.242,1068,0.862,1076,1.08,1090,0.434,1091,0.371,1096,0.47,1097,0.846,1108,0.871,1122,0.482,1138,0.45,1150,0.347,1155,0.47,1157,0.511,1201,0.45,1211,0.423,1253,2.49,1256,0.519,1277,4.185,1279,0.396,1399,1.999,1400,1.474,1416,0.396,1431,0.352,1447,1.034,1461,0.355,1490,0.41,1498,0.437,1515,2.401,1516,0.511,1556,1.107,1621,0.529,1650,0.89,1661,0.482,1708,0.441,1782,1.084,1924,1.56,1950,0.459,1952,2.511,1962,0.511,1978,0.552,2018,0.862,2051,1.843,2052,0.582,2053,0.54,2054,0.384,2056,0.846,2060,0.426,2063,0.9,2080,1.386,2083,0.503,2084,1.057,2086,0.566,2087,0.566,2088,0.566,2089,0.566,2090,0.566,2091,0.566,2092,0.511,2106,0.566,2107,1.56,2108,0.511,2109,0.488,2110,0.566,2134,0.529,2135,0.503,2136,0.529,2140,0.626,2141,1.152,2142,1.199,2143,0.626,2144,0.626,2145,0.566,2146,0.626,2147,0.626,2148,0.566,2149,1.199,2150,0.552,2151,0.626,2152,0.566,2153,0.626,2154,0.626,2155,0.626,2156,0.626,2157,0.626,2158,0.626,2159,0.626,2160,1.199,2161,0.566,2162,0.626,2163,0.626,2164,0.54,2165,0.626,2166,0.582,2167,0.626,2168,0.626,2169,0.529,2170,3.465,2171,0.626,2172,0.626,2173,2.295,2174,1.199,2175,2.66,2176,0.626,2177,0.885,2178,1.199,2179,1.199,2180,1.199,2181,1.199,2182,0.626,2183,0.626,2184,0.626,2185,0.626,2186,0.626,2187,0.626,2188,0.626,2189,1.199,2190,0.626,2191,1.605,2192,0.626,2193,0.626,2194,0.47,2195,0.626,2196,0.626,2197,0.626,2198,0.626,2199,0.482,2200,0.626,2201,0.626,2202,0.626,2203,0.626,2204,0.626,2205,0.626,2206,0.626,2207,0.626,2208,0.626,2209,0.626,2210,0.626,2211,0.511,2212,0.626,2213,0.626,2214,0.626,2215,0.626,2216,0.626,2217,0.626,2218,1.199,2219,0.626,2220,0.582,2221,0.626,2222,0.626]],["component/80",[7,0.401]],["title/81-1",[7,16.382,224,32.728,319,27.465]],["name/81-1",[]],["text/81-1",[]],["component/81-1",[]],["title/81-2",[319,27.465,1936,41.347,2223,61.082]],["name/81-2",[]],["text/81-2",[]],["component/81-2",[]],["title/81-3",[7,14.374,455,28.824,962,45.501,1936,36.279]],["name/81-3",[]],["text/81-3",[]],["component/81-3",[]],["title/81",[158,40.398,502,34.217]],["name/81",[502,1.088]],["text/81",[5,1.088,7,1.699,8,0.888,17,1.077,18,0.647,30,0.625,34,0.623,40,0.481,42,1.597,52,2.961,58,0.883,79,2.337,84,1.238,90,1.184,110,2.048,116,0.785,117,2.116,122,0.951,125,0.664,134,2.468,144,0.618,145,0.928,146,0.761,147,0.914,148,0.876,152,0.996,155,0.521,158,2.726,160,1.412,161,0.555,162,1.017,163,1.315,165,0.944,169,2.064,172,2.212,178,0.745,180,0.866,183,0.579,190,2.161,196,2.673,214,2.776,224,1.791,231,0.987,234,0.809,239,1.238,241,1.15,251,0.703,252,0.651,262,2.086,263,2.145,264,0.888,267,1.498,280,2.878,283,2.122,285,1.081,293,0.889,296,2.391,297,2.868,301,0.587,319,4.2,320,2.075,322,1.006,340,1.578,351,1.173,352,1.028,354,0.855,355,2.331,377,0.754,386,1.46,391,2.957,406,1.499,431,2.601,438,1.017,446,0.724,455,5.363,458,2.247,470,1.606,474,0.987,502,0.642,521,2.921,523,0.855,531,1.277,583,3.265,603,0.871,619,0.96,620,0.84,625,1.13,630,0.871,646,1.253,668,0.745,674,0.944,682,1.369,683,3.635,684,2.934,688,2.06,690,0.877,698,0.761,724,1.171,728,2.001,736,3.494,745,2.857,754,0.623,768,1.053,773,0.928,779,0.883,790,2.854,834,0.987,835,1.405,841,0.914,850,1.006,865,0.764,898,2.028,903,0.809,909,0.996,910,0.871,968,1.393,970,0.977,972,0.739,1017,0.977,1048,1.112,1066,0.778,1070,1.253,1073,2.028,1076,0.677,1079,4.003,1101,1.04,1131,0.908,1253,3.243,1477,1.452,1482,1.253,1492,1.04,1509,1.15,1520,0.936,1634,1.253,1640,0.987,1660,2.426,1708,0.977,1727,1.816,1748,1.331,1849,1.112,1936,2.79,1942,1.62,1970,1.222,2009,1.222,2018,2.502,2024,2.283,2051,0.96,2052,1.288,2053,1.195,2054,0.85,2084,1.222,2096,1.253,2141,1.331,2164,1.195,2223,2.426,2224,3.934,2225,1.222,2226,4.85,2227,4.85,2228,1.567,2229,2.426,2230,1.171,2231,3.934,2232,1.567,2233,1.567,2234,4.422,2235,1.567,2236,1.567,2237,2.283,2238,1.331,2239,1.567,2240,1.081,2241,1.567,2242,1.567,2243,1.385,2244,2.426,2245,1.567,2246,1.567,2247,1.567,2248,1.567,2249,1.288,2250,1.567,2251,1.567,2252,1.457,2253,1.385,2254,1.567,2255,1.567,2256,1.171,2257,1.222]],["component/81",[7,0.401]],["title/82-1",[2258,66.798,2259,66.798]],["name/82-1",[]],["text/82-1",[]],["component/82-1",[]],["title/82-2",[23,34.737,1619,60.278]],["name/82-2",[]],["text/82-2",[]],["component/82-2",[]],["title/82-3",[42,29.179,436,54.829,514,23.467]],["name/82-3",[]],["text/82-3",[]],["component/82-3",[]],["title/82-4",[23,34.737,1936,48.06]],["name/82-4",[]],["text/82-4",[]],["component/82-4",[]],["title/82-5",[23,29.884,521,43.287,723,25.408]],["name/82-5",[]],["text/82-5",[]],["component/82-5",[]],["title/82",[7,19.043,23,34.737]],["name/82",[23,1.104]],["text/82",[1,2.249,5,3.304,7,1.713,8,0.821,19,3.28,23,5.375,24,2.934,26,3.23,34,1.448,36,1.469,40,1.116,42,1.477,58,2.05,84,0.929,88,1.661,110,2.506,118,1.8,125,2.514,128,3.097,129,1.556,130,1.999,133,2.011,134,3.579,144,1.436,158,1.759,172,2.329,183,2.194,188,1.963,191,2.645,203,1.975,234,1.879,252,1.513,264,3.185,270,2.625,271,2.564,296,2.244,301,2.222,319,1.39,337,2.776,377,1.752,406,1.125,436,4.527,458,2.078,470,2.423,514,2.454,525,1.495,552,1.359,583,1.879,586,1.963,604,1.833,659,2.477,668,2.822,682,1.744,683,1.775,694,1.999,697,1.952,698,1.767,736,2.011,772,2.011,830,2.05,833,2.477,895,2.477,984,2.078,1004,2.27,1013,2.51,1017,2.27,1139,3.604,1168,2.477,1204,2.776,1211,4.489,1402,2.477,1499,2.338,1561,2.446,1641,2.72,1669,2.477,1727,2.314,1747,2.625,1877,2.838,2054,1.975,2056,2.27,2081,2.909,2259,4.745,2260,2.909,2261,3.217,2262,3.217,2263,3.217,2264,3.217,2265,3.217,2266,3.217,2267,3.217,2268,3.217,2269,3.217,2270,3.217,2271,3.217,2272,3.217]],["component/82",[7,0.401]],["title/83-1",[7,22.734]],["name/83-1",[]],["text/83-1",[]],["component/83-1",[]],["title/83-2",[7,19.043,8,18.856]],["name/83-2",[]],["text/83-2",[]],["component/83-2",[]],["title/83-3",[117,26.976,118,21.806,296,27.183]],["name/83-3",[]],["text/83-3",[]],["component/83-3",[]],["title/83-4",[8,10.407,26,17.177,117,17.306,118,13.989,168,21.743,296,17.438,402,9.484]],["name/83-4",[]],["text/83-4",[]],["component/83-4",[]],["title/83-5",[4,43.146,7,19.043]],["name/83-5",[]],["text/83-5",[]],["component/83-5",[]],["title/83-6",[239,31.151,308,27.045,629,59.109]],["name/83-6",[]],["text/83-6",[]],["component/83-6",[]],["title/83-7",[191,35.099]],["name/83-7",[]],["text/83-7",[]],["component/83-7",[]],["title/83-8",[2273,88.192]],["name/83-8",[]],["text/83-8",[]],["component/83-8",[]],["title/83-9",[95,33.294,209,35.376,790,28.438,2274,47.743,2275,47.743]],["name/83-9",[]],["text/83-9",[]],["component/83-9",[]],["title/83-10",[94,39.007,2275,61.082,2276,63.552]],["name/83-10",[]],["text/83-10",[]],["component/83-10",[]],["title/83-11",[93,37.312,1715,51.038,2274,61.082]],["name/83-11",[]],["text/83-11",[]],["component/83-11",[]],["title/83-12",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2277,40.77,2278,40.77]],["name/83-12",[]],["text/83-12",[]],["component/83-12",[]],["title/83-13",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2279,40.77,2280,40.77]],["name/83-13",[]],["text/83-13",[]],["component/83-13",[]],["title/83-14",[8,10.407,191,16.226,854,27.77,2119,30.27,2281,37.92,2282,37.92,2283,40.77]],["name/83-14",[]],["text/83-14",[]],["component/83-14",[]],["title/83",[7,19.043,78,47.724]],["name/83",[631,1.45]],["text/83",[1,0.915,2,0.785,3,1.025,7,0.855,8,0.612,9,0.906,10,1.699,11,0.776,13,2.177,14,2.766,16,0.891,17,0.558,23,1.127,24,1.854,26,0.551,29,0.967,31,0.738,32,0.55,34,1.846,36,1.094,40,1.15,45,0.612,48,0.745,49,0.951,52,1.984,54,0.745,57,1.392,60,0.834,71,1.305,84,0.378,88,0.758,90,1.123,93,0.768,94,1.471,95,2.222,96,1.625,101,0.655,104,1.234,105,1.44,112,0.621,113,2.387,117,1.407,118,2.678,125,1.588,126,1.779,129,0.633,134,0.49,135,1.425,136,1.588,138,0.608,139,2.201,144,1.069,146,1.316,148,1.15,150,0.571,153,1.007,155,1.543,158,1.31,160,1.34,161,0.96,163,0.681,172,0.581,181,0.983,186,0.719,191,2.534,194,0.87,195,1.527,196,1.791,200,0.891,214,0.518,224,1.234,226,0.864,235,1.217,238,0.983,247,0.818,249,1.805,263,1.199,264,1.681,275,0.676,280,1.127,282,0.803,296,2.3,297,0.753,301,0.554,308,2.035,313,2.597,319,2.55,320,0.781,333,0.798,338,1.007,349,1.316,354,2.047,377,1.305,382,1.217,401,0.617,402,1.578,439,0.772,445,0.845,446,0.684,450,0.899,455,1.239,458,0.845,460,0.581,466,0.776,468,1.187,470,1.894,514,1.224,517,0.794,519,1.707,521,0.891,523,0.808,525,0.608,526,1.989,547,1.075,549,0.684,552,3.296,557,1.446,567,0.941,583,0.764,596,0.857,597,0.764,603,0.823,632,1.308,633,1.217,634,1.217,635,1.183,636,2.067,637,1.068,638,1.217,639,1.308,640,1.086,641,1.129,642,1.068,643,1.086,644,1.106,645,1.129,646,1.183,647,1.517,648,1.217,649,1.051,650,1.217,651,2.229,652,1.129,654,0.951,655,1.308,656,0.753,657,1.217,658,1.183,659,1.007,660,1.183,661,1.086,662,1.106,663,1.646,664,1.068,665,1.289,667,2.229,668,0.704,670,1.328,671,1.217,672,0.899,673,1.229,676,0.899,677,0.839,678,1.437,679,1.99,680,0.687,684,0.687,723,0.523,736,0.818,743,1.407,745,0.669,774,0.906,835,0.728,841,0.864,859,0.828,865,1.829,896,0.864,898,1.051,900,0.877,910,2.58,943,0.899,967,0.839,972,0.698,984,2.142,1053,0.915,1066,0.735,1073,1.051,1078,1.548,1125,0.884,1130,1.527,1136,1.57,1139,0.899,1187,0.971,1213,0.932,1253,1.559,1288,1.217,1310,1.021,1343,1.129,1367,1.217,1394,5.489,1400,0.725,1448,1.896,1483,2.27,1520,0.884,1533,0.983,1708,0.923,1735,0.732,1772,2.52,1908,1.217,1942,0.839,1945,0.877,2053,1.129,2054,2.035,2060,3.257,2076,0.915,2145,1.183,2164,1.129,2284,1.48,2285,2.71,2286,1.258,2287,1.48,2288,1.48,2289,4.102,2290,1.48,2291,1.308,2292,1.068,2293,2.229,2294,1.183,2295,1.308,2296,1.76,2297,1.308,2298,1.308,2299,1.183,2300,1.154,2301,1.021,2302,1.48,2303,1.48,2304,1.154,2305,1.308,2306,0.995,2307,2.229,2308,1.183,2309,0.951,2310,1.021,2311,1.183,2312,1.217]],["component/83",[7,0.401]],["title/84-1",[129,26.976,136,15.007,465,24.483,514,20.59]],["name/84-1",[]],["text/84-1",[]],["component/84-1",[]],["title/84-2",[136,13.368,139,18.53,296,21.247,514,18.342,684,26.073]],["name/84-2",[]],["text/84-2",[]],["component/84-2",[]],["title/84-3",[136,12.052,139,16.706,214,17.743,296,19.155,514,16.536,1005,16.019]],["name/84-3",[]],["text/84-3",[]],["component/84-3",[]],["title/84-4",[136,12.052,139,16.706,296,19.155,487,20.443,514,16.536,680,23.507]],["name/84-4",[]],["text/84-4",[]],["component/84-4",[]],["title/84",[102,41.887,136,19.88]],["name/84",[102,1.332]],["text/84",[5,3.023,29,4.565,134,2.627,136,3.175,139,2.616,148,3.675,179,4.947,214,2.778,224,5.826,234,4.096,264,2.465,487,3.201,514,4.178,680,3.681,684,3.681,697,4.254,789,6.341,790,4.015,1005,2.508,2010,6.186]],["component/84",[7,0.401]],["title/85",[136,15.007,214,22.092,264,19.605,1005,19.947]],["name/85",[214,0.521,1005,0.471]],["text/85",[0,2.335,4,2.568,5,2.895,8,2.08,10,1.821,12,2.364,17,2.866,18,2.055,30,1.984,36,3.066,68,2.683,69,3.342,86,2.335,88,2.126,110,2.1,118,1.509,133,4.199,135,2.888,136,2.193,139,3.404,142,2.425,155,2.526,160,2.458,172,1.951,214,4.105,249,2.394,264,1.546,377,2.394,402,1.023,412,3.102,487,3.72,536,7.118,556,2.748,557,2.652,608,2.354,612,3.649,674,2.995,716,3.649,717,3.302,718,4.089,719,2.555,722,7.581,723,1.758,724,3.717,725,4.089,726,2.784,727,3.878,728,2.529,746,1.881,752,2.317,757,4.089,762,3.342,763,3.385,764,3.162,765,3.194,766,2.995,1005,3.516,1483,2.087,2169,5.679,2313,3.717,2314,4.397,2315,4.397]],["component/85",[7,0.401]],["title/86",[136,23.734]],["name/86",[631,1.45]],["text/86",[5,4.01,7,2.398,34,4.186,36,4.246,136,2.503,139,4.196,155,3.499,179,6.562,214,3.686,690,5.89]],["component/86",[7,0.401]],["title/87-1",[88,23.377,142,40.753]],["name/87-1",[]],["text/87-1",[]],["component/87-1",[]],["title/87-2",[6,37.221,687,52.112]],["name/87-2",[]],["text/87-2",[]],["component/87-2",[]],["title/87-3",[123,52.609,124,56.867]],["name/87-3",[]],["text/87-3",[]],["component/87-3",[]],["title/87",[136,19.88,684,38.775]],["name/87",[684,1.233]],["text/87",[6,3.164,15,1.595,17,2.094,26,1.25,32,2.063,35,2.732,36,1.354,38,2.81,40,1.029,57,1.724,75,2.347,77,2.882,84,3.179,88,2.559,91,1.76,96,2.406,121,1.715,123,4.472,124,4.834,129,2.374,130,3.901,135,3.138,136,2.963,142,1.636,144,2.191,155,1.846,166,1.843,171,1.459,172,2.178,192,1.569,196,2.742,202,2.314,211,3.349,214,2.488,264,1.726,308,2.672,313,1.878,316,3.651,321,4.565,331,1.615,377,1.615,388,3.013,401,2.315,411,3.883,509,4.056,570,1.82,663,3.371,668,3.376,682,1.608,686,1.205,697,1.799,698,1.629,699,2.759,700,2.759,702,2.759,703,2.759,704,2.759,705,2.073,706,3.193,707,2.759,708,1.658,709,2.759,711,3.128,713,2.759,714,2.759,786,2.72,889,1.843,917,3.731,949,3.128,1092,1.973,1138,2.133,1187,2.202,1467,2.42,1661,2.283,2316,2.966,2317,2.966,2318,2.966,2319,2.966,2320,2.966,2321,2.966,2322,2.966,2323,2.966,2324,2.966,2325,4.908,2326,2.966,2327,2.966,2328,4.438,2329,3.942,2330,2.966,2331,2.966]],["component/87",[7,0.401]],["title/88-1",[729,57.377]],["name/88-1",[]],["text/88-1",[]],["component/88-1",[]],["title/88-2",[84,21.33,706,48.06]],["name/88-2",[]],["text/88-2",[]],["component/88-2",[]],["title/88-3",[514,27.277,706,48.06]],["name/88-3",[]],["text/88-3",[]],["component/88-3",[]],["title/88-4",[786,48.87]],["name/88-4",[]],["text/88-4",[]],["component/88-4",[]],["title/88-5",[1967,66.236]],["name/88-5",[]],["text/88-5",[]],["component/88-5",[]],["title/88-6",[52,30.744,350,36.208,680,33.358]],["name/88-6",[]],["text/88-6",[]],["component/88-6",[]],["title/88-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/88-7",[]],["text/88-7",[]],["component/88-7",[]],["title/88-8",[502,40.851]],["name/88-8",[]],["text/88-8",[]],["component/88-8",[]],["title/88",[136,17.103,487,29.01,680,33.358]],["name/88",[487,0.6,680,0.69]],["text/88",[4,0.88,7,0.703,8,0.385,13,0.515,14,0.655,17,2.258,18,0.705,20,0.88,26,2.23,29,0.608,32,0.634,35,2.946,36,0.688,38,2.136,46,1.107,52,2.86,71,0.821,84,2.412,96,0.739,101,3.673,108,1.074,110,0.72,112,1.771,117,3.275,118,2.213,121,0.872,125,1.788,134,2.593,136,1.736,142,0.832,148,0.523,155,2.224,157,2.224,161,0.604,163,0.785,164,0.948,165,1.027,170,0.942,171,1.341,172,2.349,178,0.811,180,0.942,195,0.961,196,1.998,214,1.08,226,1.799,239,0.739,245,1.074,247,0.942,248,1.42,250,1.084,252,1.755,255,2.744,263,2.648,275,1.409,277,1.914,279,0.713,280,1.282,297,2.147,301,2.731,315,1.027,319,1.178,327,1.211,331,2.032,340,0.942,346,1.16,347,1.211,351,0.7,375,1.01,377,1.484,378,1.074,386,0.872,391,1.974,395,0.988,398,1.146,418,1.211,430,1.074,439,0.89,446,0.788,451,0.791,452,1.084,455,3.795,458,1.761,465,0.662,487,3.522,505,0.988,508,1.644,514,1.378,525,2.125,547,0.677,583,1.592,596,0.988,597,0.88,604,2.126,608,0.807,622,2.802,665,0.811,673,1.399,679,3.693,680,4.99,682,0.817,683,1.504,686,1.516,689,1.063,698,0.828,705,1.054,708,0.843,712,2.998,729,0.981,730,2.802,731,2.189,732,2.501,733,1.054,734,1.095,735,2.521,736,2.333,737,1.33,738,1.251,741,1.749,744,2.632,745,0.771,770,1.402,771,3.733,772,2.86,774,1.044,775,1.176,776,1.402,777,1.402,778,1.402,779,2.378,780,1.301,781,2.352,782,1.33,783,1.176,785,2.405,786,2.068,787,1.402,788,0.92,789,1.363,790,0.863,889,1.693,973,1.16,985,0.961,993,0.885,1010,1.074,1033,2.684,1066,0.847,1076,0.736,1097,1.923,1219,1.044,1400,0.835,1416,0.954,1478,1.275,1551,1.044,1640,1.074,1659,1.211,1730,1.211,1733,1.193,1933,1.251,1943,1.275,1967,1.132,1968,1.449,1969,1.301,1970,1.33,1971,2.62,1972,1.449,1973,2.405,1974,1.363,1975,1.449,1976,1.449,1977,1.449,1978,1.33,1979,1.449,1980,1.449,2051,1.044,2054,0.925,2332,1.507,2333,1.507,2334,1.507,2335,1.507,2336,1.193]],["component/88",[7,0.401]],["title/89",[468,43.669]],["name/89",[631,1.45]],["text/89",[]],["component/89",[7,0.401]],["title/90",[32,26.708,45,29.703,130,39.481]],["name/90",[45,0.615,559,1.223]],["text/90",[11,7.224,26,3.255,45,3.611,48,4.402,52,3.737,54,4.402,60,4.924,77,5.878,91,4.584,155,4.178,191,3.075,232,6.413,560,7.185,561,7.185,562,7.185,563,7.185,566,7.185,567,5.556,568,7.185]],["component/90",[7,0.401]],["title/91-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/91-1",[]],["text/91-1",[]],["component/91-1",[]],["title/91-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/91-2",[]],["text/91-2",[]],["component/91-2",[]],["title/91-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/91-3",[]],["text/91-3",[]],["component/91-3",[]],["title/91-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/91-4",[]],["text/91-4",[]],["component/91-4",[]],["title/91-5",[148,25.631,582,61.318]],["name/91-5",[]],["text/91-5",[]],["component/91-5",[]],["title/91-6",[84,9.983,136,9.304,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156,1005,12.367]],["name/91-6",[]],["text/91-6",[]],["component/91-6",[]],["title/91-7",[586,53.814]],["name/91-7",[]],["text/91-7",[]],["component/91-7",[]],["title/91",[587,73.205]],["name/91",[587,1.949]],["text/91",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303,1005,1.27]],["component/91",[7,0.401]],["title/92-1",[135,23.974,139,20.802,296,23.851,514,20.59]],["name/92-1",[]],["text/92-1",[]],["component/92-1",[]],["title/92-2",[102,50.007]],["name/92-2",[]],["text/92-2",[]],["component/92-2",[]],["title/92",[102,41.887,135,31.759]],["name/92",[102,1.332]],["text/92",[3,2.853,5,2.875,10,2.762,14,2.898,17,2.846,23,3.137,29,2.691,112,3.166,113,2.961,118,2.289,134,2.499,135,4.439,136,1.795,142,3.68,148,2.314,155,2.509,224,3.435,234,3.896,243,4.196,264,2.345,275,3.448,313,4.223,319,2.883,391,4.804,443,3.696,514,3.353,553,4.17,668,3.587,689,4.705,712,4.371,719,3.876,743,3.916,901,5.884,902,5.884,903,3.896,910,4.196]],["component/92",[7,0.401]],["title/93-1",[406,22.217,1106,34.459,1107,35.216]],["name/93-1",[]],["text/93-1",[]],["component/93-1",[]],["title/93-2",[136,17.103,679,26.447,752,33.489]],["name/93-2",[]],["text/93-2",[]],["component/93-2",[]],["title/93-3",[42,22.807,142,27.403,143,28.034,752,26.176,2337,44.917]],["name/93-3",[]],["text/93-3",[]],["component/93-3",[]],["title/93-4",[5,21.411,42,22.807,135,21.356,138,23.078,752,26.176]],["name/93-4",[]],["text/93-4",[]],["component/93-4",[]],["title/93",[135,37.916]],["name/93",[631,1.45]],["text/93",[8,0.683,17,3.529,20,1.563,23,1.258,24,1.496,29,2.353,31,1.51,40,0.928,42,2.068,45,2.105,76,1.694,84,2.389,92,1.673,96,2.859,99,1.348,101,1.339,104,1.378,106,1.753,118,2.001,125,1.282,134,1.002,135,4.392,136,0.72,138,2.093,142,3.774,143,1.51,144,1.194,152,1.924,155,1.006,161,1.072,164,2.833,170,1.673,171,1.316,183,3.192,189,1.563,192,1.416,195,1.705,196,1.967,211,4.071,251,2.286,252,2.743,254,1.87,255,1.605,263,1.339,280,1.258,301,1.907,308,1.139,320,1.596,341,1.605,351,1.243,357,1.579,374,2.01,377,1.457,391,1.416,406,1.575,415,1.854,439,1.579,451,1.404,455,1.383,502,1.239,531,1.353,570,1.642,583,1.563,593,2.888,608,1.433,668,1.439,719,2.617,752,2.373,754,1.204,756,1.87,764,1.924,771,2.183,772,1.673,786,1.483,859,1.694,890,2.91,891,2.489,892,2.489,893,1.808,894,1.822,895,2.06,896,1.766,897,2.36,898,2.149,899,2.489,904,2.087,913,2.183,972,2.402,1075,1.588,1076,1.307,1109,1.924,1133,3.019,1150,1.483,1151,1.987,1211,1.808,1284,2.149,1348,2.221,1389,2.221,1647,1.854,1747,2.183,2016,3.177,2130,2.42,2337,2.42,2338,2.676,2339,2.676,2340,2.676,2341,2.676,2342,2.262,2343,2.676,2344,2.676,2345,2.676,2346,2.676,2347,2.676,2348,2.149,2349,3.026,2350,3.026,2351,2.676,2352,2.06,2353,2.36,2354,3.026,2355,3.026,2356,2.149,2357,2.676,2358,2.676,2359,2.676,2360,2.676,2361,2.676,2362,2.676,2363,4.073,2364,2.676,2365,2.42,2366,2.676,2367,2.676,2368,2.676,2369,2.36,2370,2.308,2371,2.42]],["component/93",[7,0.401]],["title/94-1",[45,34.526,90,34.631]],["name/94-1",[]],["text/94-1",[]],["component/94-1",[]],["title/94-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/94-2",[]],["text/94-2",[]],["component/94-2",[]],["title/94-3",[79,26.141,134,20.888,552,23.551,686,22.657]],["name/94-3",[]],["text/94-3",[]],["component/94-3",[]],["title/94-4",[84,11.772,112,19.35,139,15.209,335,24.457,429,28.498,624,29.938,673,20.918]],["name/94-4",[]],["text/94-4",[]],["component/94-4",[]],["title/94-5",[26,26.774,465,27.903,2372,48.923]],["name/94-5",[]],["text/94-5",[]],["component/94-5",[]],["title/94-6",[319,31.924,2373,60.278]],["name/94-6",[]],["text/94-6",[]],["component/94-6",[]],["title/94-7",[26,26.774,308,27.045,767,46.175]],["name/94-7",[]],["text/94-7",[]],["component/94-7",[]],["title/94-8",[106,36.54,136,15.007,137,27.802,2374,43.502]],["name/94-8",[]],["text/94-8",[]],["component/94-8",[]],["title/94-9",[86,33.757,191,25.292,296,27.183]],["name/94-9",[]],["text/94-9",[]],["component/94-9",[]],["title/94-10",[144,24.886,547,25.024,673,28.61,2137,40.104]],["name/94-10",[]],["text/94-10",[]],["component/94-10",[]],["title/94-11",[296,31.597,745,37.762]],["name/94-11",[]],["text/94-11",[]],["component/94-11",[]],["title/94-12",[135,27.323,893,42.936,2375,53.736]],["name/94-12",[]],["text/94-12",[]],["component/94-12",[]],["title/94-13",[2313,74.57]],["name/94-13",[]],["text/94-13",[]],["component/94-13",[]],["title/94-14",[84,16.101,586,34.025,672,38.3,1255,24.418]],["name/94-14",[]],["text/94-14",[]],["component/94-14",[]],["title/94",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,1253,29.136]],["name/94",[2376,2.348]],["text/94",[0,0.824,3,0.664,4,0.906,5,0.669,7,0.4,8,1.676,10,1.159,13,0.957,14,0.674,17,0.662,26,2.965,29,1.542,31,0.876,33,1.481,45,1.308,57,2.221,71,0.845,77,0.911,79,0.728,84,2.032,86,1.486,88,0.886,90,1.312,101,1.4,102,0.88,106,1.017,110,1.337,111,1.587,112,2.859,113,0.689,117,1.622,118,1.605,126,1.152,128,0.916,134,0.581,135,1.643,136,1.621,137,3.004,139,3.045,143,0.876,144,2.411,155,1.438,160,0.868,161,0.622,163,1.991,172,0.689,178,0.834,180,0.97,186,0.852,189,1.635,191,1.114,196,0.678,214,2.14,224,0.799,231,1.105,236,0.691,247,3.377,249,0.845,251,0.788,252,3.31,263,1.912,264,3.071,268,1.003,277,0.796,292,1.572,296,3.011,300,1.075,301,1.618,308,1.99,313,0.983,316,0.776,319,1.652,335,1.679,340,0.97,349,0.852,354,2.36,355,1.04,356,0.856,357,2.76,361,1.341,375,1.04,386,0.897,401,1.803,402,0.889,429,1.085,440,2.523,446,0.811,465,1.229,476,2.284,487,1.277,514,1.033,517,0.942,518,1.993,520,1.128,525,0.721,545,1.085,547,1.256,552,2.545,556,1.749,577,2.332,580,0.931,586,0.947,624,2.806,665,2.055,670,0.86,672,2.625,673,3.091,679,0.646,680,0.815,681,1.075,686,1.137,698,2.569,723,0.62,744,1.095,745,0.793,752,0.818,767,1.128,841,1.024,867,1.057,889,0.964,893,1.891,938,2.183,939,1.443,943,1.066,945,1.443,946,1.443,947,1.246,948,1.339,951,2.414,967,0.996,1066,1.572,1076,0.758,1077,1.246,1150,0.86,1174,1.057,1253,3.514,1255,0.68,1289,1.312,1291,1.18,1400,0.86,1403,1.105,1416,0.983,1421,1.116,1533,1.166,1557,1.339,1558,1.652,1610,1.017,1611,1.085,1612,1.688,1650,1.152,1708,1.095,1754,1.152,1786,1.698,1818,1.14,1855,3.119,1942,1.796,1962,3.119,2042,1.075,2063,1.166,2066,1.403,2097,1.228,2137,1.116,2138,1.14,2152,1.403,2161,2.531,2310,1.211,2311,2.531,2313,2.366,2372,2.154,2373,1.266,2374,1.211,2375,2.366,2377,1.403,2378,1.552,2379,1.312,2380,2.799,2381,1.552,2382,1.552,2383,1.552,2384,1.552,2385,1.552,2386,1.552,2387,2.154,2388,1.552,2389,1.552,2390,1.552,2391,1.312,2392,1.552,2393,1.552,2394,1.552,2395,1.552,2396,1.552,2397,1.552]],["component/94",[7,0.401]],["title/95-1",[264,19.605,296,23.851,673,28.61,743,32.738]],["name/95-1",[]],["text/95-1",[]],["component/95-1",[]],["title/95-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/95-2",[]],["text/95-2",[]],["component/95-2",[]],["title/95-3",[136,15.007,144,24.886,319,24.098,401,26.302]],["name/95-3",[]],["text/95-3",[]],["component/95-3",[]],["title/95-4",[679,26.447,754,28.6,2306,48.309]],["name/95-4",[]],["text/95-4",[]],["component/95-4",[]],["title/95-5",[678,44.313,1291,56.153]],["name/95-5",[]],["text/95-5",[]],["component/95-5",[]],["title/95-6",[139,23.708,319,27.465,1005,22.733]],["name/95-6",[]],["text/95-6",[]],["component/95-6",[]],["title/95-7",[120,38.779,319,27.465,949,40.503]],["name/95-7",[]],["text/95-7",[]],["component/95-7",[]],["title/95-8",[0,33.757,139,23.708,1066,35.699]],["name/95-8",[]],["text/95-8",[]],["component/95-8",[]],["title/95-9",[136,15.007,139,20.802,319,24.098,1005,19.947]],["name/95-9",[]],["text/95-9",[]],["component/95-9",[]],["title/95-10",[40,19.348,871,38.977,1431,31.324,2398,43.502]],["name/95-10",[]],["text/95-10",[]],["component/95-10",[]],["title/95-11",[136,12.052,249,24.386,452,32.208,1005,16.019,1403,31.893,1483,21.255]],["name/95-11",[]],["text/95-11",[]],["component/95-11",[]],["title/95",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2060,30.503]],["name/95",[2399,2.348]],["text/95",[0,0.405,5,0.329,7,0.197,8,1.727,10,0.856,13,1.382,14,0.898,15,1.414,17,1.724,18,0.677,20,1.208,23,0.681,26,0.322,29,0.834,30,0.345,32,1.699,34,0.344,35,2.471,36,0.661,37,0.469,40,0.265,45,0.357,52,0.369,54,0.435,56,0.379,63,0.5,68,0.466,77,0.448,79,0.679,84,2.075,88,0.242,93,0.448,94,0.469,95,0.971,96,1.014,101,0.725,102,0.822,103,0.588,112,1.918,113,0.918,115,0.86,118,0.497,120,1.605,125,1.506,126,0.567,128,0.451,129,0.369,134,0.543,135,0.889,136,2.125,137,2.396,139,3.111,143,0.431,144,1.174,146,0.796,154,0.39,155,0.989,160,0.81,161,0.306,163,0.398,166,0.474,171,0.375,178,0.41,180,0.477,189,0.846,190,0.474,192,1.094,195,0.923,196,1.765,214,0.819,224,1.354,228,0.402,239,0.71,243,0.48,247,4.23,248,0.398,249,1.126,251,1.335,252,1.237,255,0.458,263,1.316,264,2.526,272,0.437,275,0.395,278,0.471,282,0.469,283,1.262,286,0.455,292,0.429,296,2.582,297,0.439,301,0.876,308,1.119,317,0.544,319,2.72,324,0.567,333,0.466,340,0.477,341,0.458,351,0.355,354,0.471,374,0.573,375,0.512,377,0.416,391,0.404,398,1.101,401,0.683,402,1.197,421,0.431,424,1.931,431,0.463,440,0.957,441,0.483,443,0.803,446,1.081,451,0.761,452,1.042,455,0.395,459,0.49,465,0.335,468,1.302,470,0.353,487,0.944,492,1.473,505,0.5,508,0.461,514,1.639,517,1.255,520,0.555,523,0.471,525,0.355,531,0.733,547,0.65,549,1.081,552,1.111,577,0.466,586,0.466,597,0.446,603,0.48,604,0.435,615,0.834,617,0.439,620,1.255,665,1.112,668,0.41,670,1.146,673,2.278,678,0.869,679,1.503,680,1.086,684,1.381,686,1.804,690,0.483,705,0.534,743,1.544,744,0.539,754,2.459,755,0.613,773,0.512,783,0.596,841,0.504,854,1.409,865,1.141,871,1.838,873,0.516,894,0.52,909,0.549,910,0.48,918,1.115,931,1.088,932,1.806,933,1.397,934,2.564,936,2.081,938,0.596,940,1.31,942,0.69,947,2.112,948,0.659,949,3.063,951,0.659,958,0.673,959,0.71,963,0.41,966,0.52,967,0.93,970,1.022,974,0.659,975,1.25,982,0.995,984,0.493,993,0.448,998,1.064,1005,2.824,1010,1.032,1017,1.022,1025,0.659,1033,0.549,1040,0.874,1056,1.182,1066,1.765,1076,1.285,1078,0.493,1086,0.673,1096,0.573,1112,1.146,1125,0.516,1126,0.549,1136,0.5,1138,1.042,1146,1.182,1252,0.659,1253,1.711,1277,1.553,1290,0.71,1291,1.101,1400,2.001,1403,1.032,1416,0.483,1431,2.7,1456,0.345,1473,0.995,1483,0.688,1499,1.053,1518,0.659,1520,0.516,1521,0.659,1531,0.659,1558,1.221,1559,1.022,1561,0.58,1578,0.588,1591,1.386,1597,0.71,1610,0.95,1611,1.013,1612,1.587,1631,1.203,1708,0.539,1772,0.58,1786,0.463,1818,1.519,1819,0.529,1849,0.613,1942,1.688,1945,1.763,1955,0.71,1969,0.659,1973,0.673,2054,0.469,2056,0.539,2060,4.111,2083,0.613,2109,0.596,2116,0.623,2118,0.645,2119,0.567,2137,0.549,2169,0.645,2194,1.088,2230,0.645,2258,0.69,2286,0.734,2296,0.561,2299,1.31,2301,1.13,2306,1.999,2309,0.555,2329,1.164,2352,0.588,2365,0.69,2372,0.588,2373,1.182,2377,0.69,2387,2.78,2391,0.645,2398,1.13,2400,0.763,2401,1.348,2402,0.763,2403,0.69,2404,0.763,2405,1.449,2406,0.645,2407,0.645,2408,1.25,2409,0.71,2410,0.763,2411,0.645,2412,1.182,2413,0.623,2414,0.69,2415,1.225,2416,0.763,2417,1.636,2418,1.182,2419,1.115,2420,0.763,2421,0.645,2422,2.543,2423,0.623,2424,0.69,2425,0.69,2426,0.69,2427,0.763,2428,0.763,2429,0.71,2430,0.763,2431,0.645,2432,0.645,2433,0.69,2434,0.69,2435,0.763,2436,0.763,2437,0.763,2438,0.69,2439,0.71,2440,1.449,2441,0.763,2442,0.763,2443,0.673,2444,0.69,2445,0.673,2446,0.763,2447,0.69,2448,0.596,2449,0.763,2450,0.763,2451,0.763,2452,1.278,2453,0.763,2454,0.763,2455,0.613,2456,0.763,2457,0.659,2458,0.763,2459,0.763,2460,0.763]],["component/95",[7,0.401]],["title/96-1",[236,39.251]],["name/96-1",[]],["text/96-1",[]],["component/96-1",[]],["title/96-2",[96,36.21,679,30.741]],["name/96-2",[]],["text/96-2",[]],["component/96-2",[]],["title/96-3",[679,30.741,949,47.08]],["name/96-3",[]],["text/96-3",[]],["component/96-3",[]],["title/96-4",[32,18.821,79,20.995,84,12.931,421,25.274,455,23.149,917,34.042]],["name/96-4",[]],["text/96-4",[]],["component/96-4",[]],["title/96-5",[351,40.973]],["name/96-5",[]],["text/96-5",[]],["component/96-5",[]],["title/96-6",[980,68.801]],["name/96-6",[]],["text/96-6",[]],["component/96-6",[]],["title/96-7",[36,33.721,1005,26.424]],["name/96-7",[]],["text/96-7",[]],["component/96-7",[]],["title/96-8",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/96-8",[]],["text/96-8",[]],["component/96-8",[]],["title/96-9",[155,18.684,183,20.773,308,21.139,465,21.81,593,24.597]],["name/96-9",[]],["text/96-9",[]],["component/96-9",[]],["title/96-10",[52,35.736,1137,55.481]],["name/96-10",[]],["text/96-10",[]],["component/96-10",[]],["title/96-11",[29,25.643,287,46.666,679,26.447]],["name/96-11",[]],["text/96-11",[]],["component/96-11",[]],["title/96-12",[32,23.434,267,33.087,377,30.364,734,40.515]],["name/96-12",[]],["text/96-12",[]],["component/96-12",[]],["title/96-13",[351,40.973]],["name/96-13",[]],["text/96-13",[]],["component/96-13",[]],["title/96-14",[754,39.689]],["name/96-14",[]],["text/96-14",[]],["component/96-14",[]],["title/96-15",[2352,67.892]],["name/96-15",[]],["text/96-15",[]],["component/96-15",[]],["title/96-16",[2411,74.57]],["name/96-16",[]],["text/96-16",[]],["component/96-16",[]],["title/96-17",[2412,71.964]],["name/96-17",[]],["text/96-17",[]],["component/96-17",[]],["title/96-18",[2461,84.764]],["name/96-18",[]],["text/96-18",[]],["component/96-18",[]],["title/96-19",[2445,77.795]],["name/96-19",[]],["text/96-19",[]],["component/96-19",[]],["title/96-20",[2413,71.964]],["name/96-20",[]],["text/96-20",[]],["component/96-20",[]],["title/96-21",[2414,79.747]],["name/96-21",[]],["text/96-21",[]],["component/96-21",[]],["title/96",[26,31.122,679,30.741]],["name/96",[26,0.554,679,0.547]],["text/96",[0,0.137,2,0.155,3,0.11,4,0.151,5,1.653,8,1.952,14,0.324,15,0.526,17,1.695,18,0.349,19,0.466,20,0.151,22,0.42,23,0.121,24,0.91,25,0.385,26,0.771,29,0.894,30,0.337,31,0.678,32,2.084,34,0.336,35,0.544,36,1.177,37,0.6,38,0.427,40,0.176,42,0.232,45,0.349,52,0.686,54,0.147,57,0.946,63,0.641,68,0.309,71,0.772,76,0.321,79,2.105,82,0.351,84,2.776,86,2.574,88,1.168,90,0.35,91,0.153,92,1.144,96,2.319,97,0.345,98,0.17,99,2.069,101,3.853,104,0.133,105,0.522,106,0.332,108,0.184,110,0.677,111,0.146,112,0.464,115,0.153,117,1.019,118,1.058,120,0.597,121,0.431,122,0.348,123,0.361,124,0.198,125,1.235,127,0.17,128,0.152,133,0.161,134,1.031,135,0.61,136,0.596,138,0.659,139,2.407,141,0.189,142,0.279,143,1.251,144,0.536,145,0.173,146,0.142,148,0.492,154,0.132,155,1.594,160,0.547,161,0.568,162,0.189,163,2.274,165,1.246,166,0.881,168,0.27,169,0.443,170,0.611,171,0.591,172,1.065,178,0.139,179,0.357,183,0.765,186,0.278,188,0.309,189,0.436,190,0.464,191,0.389,192,0.968,194,0.171,196,1.048,200,0.345,201,0.542,209,0.184,211,0.137,214,0.476,224,0.384,226,0.493,228,0.136,238,0.56,239,1.879,243,0.318,246,0.222,248,0.848,249,0.276,250,0.185,251,0.61,252,0.765,255,0.448,262,0.448,263,2.367,264,0.262,266,0.198,267,0.841,272,0.56,275,1.047,277,1.582,278,0.159,279,0.353,280,0.667,282,0.158,283,0.733,285,0.201,286,0.583,287,0.548,292,0.675,296,0.418,297,0.291,301,1.563,304,0.376,308,1.021,315,0.345,316,0.601,317,0.184,319,1.262,320,0.445,330,0.342,331,0.996,341,0.155,347,0.207,348,0.174,349,0.278,350,0.288,351,0.756,352,0.191,353,0.227,356,0.279,357,0.152,377,0.532,391,0.136,394,0.17,395,0.787,398,0.567,401,0.567,403,0.191,404,0.214,406,0.775,415,0.179,420,0.187,421,1.033,424,0.189,431,0.156,432,0.965,439,0.152,440,0.645,441,1.03,442,0.189,443,0.413,445,0.327,446,0.851,450,0.177,451,0.135,455,3.03,458,2.095,465,1.054,467,0.24,468,0.702,470,0.452,481,0.909,484,0.508,502,0.453,505,0.169,508,1.222,509,0.482,514,1.871,517,0.453,518,0.696,521,0.508,523,0.604,525,0.347,531,0.608,547,0.539,549,1.255,552,0.214,553,0.161,556,0.316,557,0.155,570,0.6,575,0.537,577,0.597,580,0.587,581,0.763,583,0.95,586,0.309,593,0.702,596,0.332,597,0.702,601,0.201,602,0.196,603,0.162,615,0.429,617,1.053,619,0.832,621,0.56,625,0.413,630,0.615,652,0.222,663,0.177,665,1.291,668,0.139,670,2.201,673,0.26,675,0.512,676,0.672,679,1.349,682,0.14,684,1.354,686,0.743,689,0.182,696,0.413,697,0.987,698,0.41,708,0.144,711,0.323,712,1.066,717,0.194,719,0.294,723,0.81,731,0.207,732,0.339,733,0.522,734,0.368,735,0.174,736,1.144,741,0.165,742,0.364,744,0.69,745,0.832,752,0.857,754,1.529,760,0.182,762,1.237,763,0.198,764,0.864,766,0.345,767,0.368,771,0.413,772,0.316,773,0.339,774,0.832,775,0.937,783,0.201,786,0.786,788,0.157,790,1.374,827,0.145,834,0.184,835,0.143,844,0.222,850,0.187,854,0.176,859,0.761,861,0.153,865,0.663,867,0.508,873,0.504,889,0.16,893,0.174,894,1.246,896,0.334,900,0.5,904,0.201,907,0.726,908,0.24,909,0.364,917,0.913,918,2.119,919,1.251,920,0.774,921,0.599,924,0.204,925,0.204,926,0.21,927,0.201,928,0.413,929,0.196,930,0.191,931,0.194,932,0.825,933,0.174,934,0.609,936,0.774,938,0.201,940,0.233,942,0.233,943,0.825,949,1.643,950,0.42,955,0.471,956,0.24,960,0.24,961,1.762,962,1.157,963,0.401,964,1.899,965,1.884,966,0.345,967,0.325,968,0.142,969,0.24,970,0.357,971,0.24,972,0.27,973,0.753,974,0.437,975,1.037,976,1.139,977,0.24,978,0.227,979,0.471,980,0.201,981,0.413,982,0.348,983,0.38,984,0.916,985,0.476,986,0.258,987,2.061,988,0.694,989,0.644,990,0.207,991,0.21,994,0.222,995,0.222,996,0.222,997,0.222,998,0.548,999,0.222,1000,0.222,1001,0.201,1002,0.222,1003,0.222,1004,0.182,1005,0.725,1006,1.912,1007,0.222,1008,0.927,1009,0.222,1010,0.531,1011,0.201,1012,0.198,1013,0.201,1014,0.437,1015,0.59,1017,0.526,1018,0.222,1019,0.21,1020,0.694,1021,0.437,1022,0.774,1023,0.471,1024,0.401,1025,0.222,1026,0.24,1027,0.24,1028,0.24,1029,0.24,1030,0.258,1031,0.376,1032,0.24,1033,1.17,1034,0.694,1035,0.24,1036,0.24,1037,0.24,1038,0.24,1039,0.24,1040,0.155,1041,0.24,1042,0.24,1043,0.24,1044,0.24,1045,0.222,1046,0.227,1048,0.207,1049,0.214,1051,0.24,1052,0.24,1053,0.683,1054,0.24,1055,0.24,1056,0.21,1059,0.24,1061,0.222,1062,0.185,1063,0.437,1064,0.191,1065,0.258,1066,1.449,1068,0.364,1069,0.24,1070,0.233,1071,0.24,1072,0.24,1073,0.207,1074,0.21,1075,0.153,1076,0.247,1077,0.207,1078,0.327,1079,0.965,1080,0.24,1082,0.21,1083,0.196,1087,0.191,1088,0.222,1089,0.372,1090,0.351,1091,0.153,1092,0.171,1093,0.447,1094,0.447,1095,0.42,1098,0.227,1103,0.447,1105,0.227,1106,0.405,1107,0.281,1108,0.187,1109,0.185,1110,0.179,1111,0.227,1112,0.204,1126,0.185,1127,0.191,1137,0.194,1141,0.385,1146,0.21,1158,0.191,1196,0.42,1219,0.677,1249,0.21,1253,0.168,1285,0.385,1291,0.196,1295,0.201,1308,0.198,1361,0.619,1400,0.413,1416,0.472,1417,0.227,1447,0.437,1451,0.21,1483,0.24,1508,0.567,1515,0.395,1519,0.407,1529,0.207,1533,0.38,1650,0.554,1659,0.207,1682,0.204,1692,0.218,1730,0.785,1750,0.201,1946,0.42,1947,0.214,1950,0.718,1961,0.218,1969,0.222,1981,0.227,1982,0.227,1983,0.227,1984,0.227,1986,0.227,1987,0.658,1988,0.227,1989,0.658,1990,0.227,1991,0.658,1992,0.218,1993,0.658,1994,0.227,1995,0.619,1996,0.207,1997,0.248,1998,0.248,1999,0.227,2007,0.233,2016,0.182,2042,0.677,2045,0.201,2056,0.848,2060,0.508,2071,0.233,2093,0.222,2094,0.233,2108,0.21,2112,0.458,2119,0.191,2137,0.537,2138,1.195,2164,0.222,2194,0.734,2229,0.248,2230,0.218,2237,2.788,2240,0.201,2252,0.533,2256,1.016,2296,0.189,2308,0.458,2309,0.71,2310,0.395,2328,0.233,2329,1.307,2348,0.207,2352,0.574,2372,0.198,2375,0.218,2387,0.198,2391,0.218,2403,0.233,2411,0.218,2412,0.413,2413,0.413,2415,0.428,2417,0.204,2418,0.21,2419,0.198,2421,0.218,2422,0.318,2423,0.413,2424,0.458,2425,0.458,2426,0.233,2431,0.631,2432,0.428,2433,0.233,2434,0.458,2438,0.233,2445,0.447,2448,0.201,2457,0.437,2461,0.248,2462,0.573,2463,0.978,2464,0.458,2465,0.458,2466,0.271,2467,0.271,2468,0.812,2469,0.978,2470,1.106,2471,0.844,2472,0.506,2473,0.506,2474,0.258,2475,0.506,2476,0.258,2477,0.196,2478,0.222,2479,0.218,2480,0.506,2481,0.258,2482,0.258,2483,0.258,2484,0.233,2485,0.24,2486,0.258,2487,0.506,2488,0.458,2489,0.233,2490,0.292,2491,0.258,2492,0.258,2493,0.227,2494,0.471,2495,0.222,2496,0.506,2497,0.258,2498,0.258,2499,0.258,2500,0.258,2501,0.233,2502,0.233,2503,0.218,2504,0.258,2505,0.258,2506,0.258,2507,0.233,2508,0.506,2509,0.506,2510,0.746,2511,1.282,2512,1.118,2513,0.746,2514,0.458,2515,0.746,2516,0.258,2517,0.506,2518,0.233,2519,0.258,2520,0.258,2521,0.258,2522,0.258,2523,0.746,2524,0.978,2525,0.258,2526,0.258,2527,0.258,2528,0.233,2529,0.258,2530,0.258,2531,0.746,2532,0.258,2533,0.258,2534,0.258,2535,0.258,2536,0.258,2537,0.258,2538,0.258,2539,0.506,2540,1.202,2541,0.258,2542,0.258,2543,0.258,2544,0.258,2545,0.471,2546,0.258,2547,0.258,2548,0.24,2549,0.258,2550,0.258,2551,0.258,2552,0.218,2553,0.746,2554,0.258,2555,0.258,2556,0.258,2557,0.258,2558,0.233,2559,0.24,2560,0.258,2561,0.506,2562,0.21,2563,0.471,2564,0.258,2565,0.978,2566,2.156,2567,3.547,2568,0.258,2569,0.506,2570,0.258,2571,0.258,2572,0.471,2573,0.506,2574,0.458,2575,0.506,2576,0.292,2577,0.506,2578,0.506,2579,0.506,2580,0.458,2581,0.292,2582,0.292,2583,0.506,2584,0.746,2585,0.258,2586,0.201,2587,0.214,2588,0.227,2589,0.233,2590,0.258,2591,0.506,2592,0.471,2593,0.24,2594,0.506,2595,0.233,2596,0.24,2597,0.258,2598,0.233,2599,0.258,2600,0.258,2601,0.258,2602,0.258,2603,0.258,2604,0.258,2605,0.258,2606,0.258,2607,0.258,2608,0.258,2609,0.258,2610,0.227,2611,0.258,2612,0.258,2613,0.218,2614,0.258,2615,0.258,2616,0.258,2617,0.258,2618,0.292,2619,0.179,2620,0.292,2621,0.227,2622,0.258]],["component/96",[7,0.401]],["title/97-1",[923,82.026]],["name/97-1",[]],["text/97-1",[]],["component/97-1",[]],["title/97",[136,17.103,144,28.362,401,29.976]],["name/97",[631,1.45]],["text/97",[6,3.272,7,1.085,8,2.024,13,1.438,18,1.966,24,2.352,26,2.736,34,2.922,71,2.291,105,1.828,113,1.867,118,1.444,129,2.035,134,2.97,136,1.748,144,3.539,145,2.82,168,2.244,214,1.667,252,1.978,263,2.105,275,2.175,300,2.915,401,3.063,402,1.845,415,2.915,470,2.999,514,2.398,523,2.598,552,1.777,597,2.457,676,2.89,679,4.866,686,1.709,688,3.433,705,2.941,790,2.409,835,2.342,924,3.329,925,3.329,926,3.433,927,3.282,928,3.433,929,3.198,930,3.124,931,3.16,963,2.262,968,2.321,984,4.195,1031,3.124,1040,2.538,1116,3.913,1117,3.913,1118,5.728,1119,3.63,1120,3.913,1121,3.913,1122,3.239,1123,3.089,1124,3.913,1125,2.842,1126,3.026,1127,3.124,1136,4.255,1310,3.282,1483,1.997,1950,3.089,2018,3.026,2329,3.379,2406,3.557,2407,3.557,2623,4.207]],["component/97",[7,0.401]],["title/98-1",[236,39.251]],["name/98-1",[]],["text/98-1",[]],["component/98-1",[]],["title/98-2",[88,27.909]],["name/98-2",[]],["text/98-2",[]],["component/98-2",[]],["title/98-3",[30,28.681,466,37.709,2624,47.184]],["name/98-3",[]],["text/98-3",[]],["component/98-3",[]],["title/98-4",[134,23.806,264,22.343,361,30.449]],["name/98-4",[]],["text/98-4",[]],["component/98-4",[]],["title/98-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/98-5",[]],["text/98-5",[]],["component/98-5",[]],["title/98-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/98-6",[]],["text/98-6",[]],["component/98-6",[]],["title/98-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/98-7",[]],["text/98-7",[]],["component/98-7",[]],["title/98-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/98-8",[]],["text/98-8",[]],["component/98-8",[]],["title/98-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/98-9",[]],["text/98-9",[]],["component/98-9",[]],["title/98-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/98-10",[]],["text/98-10",[]],["component/98-10",[]],["title/98-11",[134,23.806,466,37.709,2627,51.038]],["name/98-11",[]],["text/98-11",[]],["component/98-11",[]],["title/98-12",[26,20.927,84,14.343,308,21.139,514,18.342,2628,44.917]],["name/98-12",[]],["text/98-12",[]],["component/98-12",[]],["title/98-13",[859,40.238,1279,40.238,2629,57.467]],["name/98-13",[]],["text/98-13",[]],["component/98-13",[]],["title/98-14",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/98-14",[]],["text/98-14",[]],["component/98-14",[]],["title/98-15",[63,48.407,1513,54.244]],["name/98-15",[]],["text/98-15",[]],["component/98-15",[]],["title/98-16",[54,42.087,2631,66.798]],["name/98-16",[]],["text/98-16",[]],["component/98-16",[]],["title/98-17",[32,31.045,2309,53.672]],["name/98-17",[]],["text/98-17",[]],["component/98-17",[]],["title/98-18",[32,26.708,745,32.486,2309,46.175]],["name/98-18",[]],["text/98-18",[]],["component/98-18",[]],["title/98-19",[183,26.577,593,31.469,1079,51.038]],["name/98-19",[]],["text/98-19",[]],["component/98-19",[]],["title/98-20",[470,34.116,1846,56.153]],["name/98-20",[]],["text/98-20",[]],["component/98-20",[]],["title/98-21",[32,37.063]],["name/98-21",[]],["text/98-21",[]],["component/98-21",[]],["title/98-22",[2632,88.192]],["name/98-22",[]],["text/98-22",[]],["component/98-22",[]],["title/98-23",[36,25.454,338,42.927,470,25.753,1846,42.387]],["name/98-23",[]],["text/98-23",[]],["component/98-23",[]],["title/98-24",[88,20.111,155,23.905,1040,38.337]],["name/98-24",[]],["text/98-24",[]],["component/98-24",[]],["title/98-25",[1255,32.348,1457,33.624]],["name/98-25",[]],["text/98-25",[]],["component/98-25",[]],["title/98",[679,30.741,1136,48.407]],["name/98",[679,0.547,1136,0.862]],["text/98",[0,1.01,3,0.711,4,0.673,5,0.609,6,0.303,7,0.227,8,0.759,10,0.787,13,0.105,15,0.165,17,0.811,18,0.66,19,0.192,23,0.542,24,1.664,26,1.833,29,1.278,30,0.858,31,0.339,32,2.725,34,0.635,35,0.171,36,0.403,38,0.176,40,0.306,45,0.143,52,0.427,54,1.581,57,0.67,65,0.211,68,0.187,71,0.905,79,0.891,84,1.257,86,0.319,88,1.557,91,0.356,92,1.189,93,0.18,96,0.15,98,0.202,101,0.951,102,0.174,105,0.133,110,0.147,111,0.174,112,0.902,113,0.737,115,0.523,116,0.174,117,1.782,118,1.688,121,0.177,122,0.211,125,1.425,127,0.582,129,2.031,133,1.333,134,2.739,135,0.258,136,0.747,138,0.143,139,0.709,141,3.196,143,2.777,144,0.514,146,0.168,147,0.202,148,0.576,153,0.236,154,0.589,155,1.693,158,0.168,160,0.79,161,1.269,163,0.735,166,1.463,167,0.259,168,0.164,169,0.684,170,0.551,171,1.049,172,0.737,178,0.165,180,1.472,183,0.695,186,0.168,188,0.538,190,0.191,191,1.958,192,0.162,195,0.562,196,1.693,199,0.541,200,0.409,201,0.436,205,0.246,206,0.225,214,1.018,215,1.549,221,0.213,224,0.593,228,0.162,231,0.218,238,0.663,239,0.432,240,0.23,242,0.23,243,0.193,246,0.761,247,0.192,248,2.187,249,1.399,250,0.634,251,0.448,252,0.415,253,0.209,255,0.529,262,0.184,263,1.489,264,1.046,265,0.416,267,0.182,268,0.388,271,0.929,272,0.176,275,0.859,277,1.526,278,0.189,279,0.786,280,0.664,282,0.369,283,0.187,286,0.358,287,0.225,288,0.499,289,0.239,292,0.793,293,0.197,296,1.007,297,0.508,301,1.778,308,0.601,311,0.776,313,0.73,316,0.831,319,1.369,328,0.239,333,0.538,335,0.997,338,0.236,340,0.883,345,0.499,347,0.482,348,0.207,350,0.175,351,0.991,354,0.545,355,0.403,357,0.354,360,1.073,361,1.607,374,0.23,375,0.206,377,1.282,378,0.428,379,0.255,386,0.816,394,0.202,395,0.201,397,0.243,401,1.309,402,0.328,406,1.573,412,0.424,413,0.265,421,0.339,428,0.499,429,0.42,430,0.218,431,0.186,432,0.709,440,0.202,441,1.491,443,0.921,446,0.16,451,0.463,455,2.678,460,0.392,461,0.255,464,0.388,465,0.835,466,0.523,468,0.152,470,3.539,480,0.518,482,0.192,502,1.19,505,0.578,508,0.185,509,0.57,513,0.255,514,0.702,516,0.265,517,0.364,523,1.026,525,0.143,531,0.304,542,0.285,547,0.746,549,0.461,553,0.192,557,0.185,577,0.366,580,1.279,583,0.351,586,0.366,591,0.994,593,0.699,596,0.394,597,0.673,603,0.193,604,0.175,608,0.164,615,0.176,617,0.176,619,1.477,620,0.699,630,1.196,636,0.265,637,0.49,640,0.255,641,0.518,649,0.246,660,0.277,662,0.259,665,0.474,668,0.759,670,3.008,673,1.625,674,0.409,675,0.413,679,2.659,682,0.901,683,0.169,684,1.761,686,1.044,694,0.373,696,0.49,697,1.153,698,0.33,708,0.336,711,0.196,712,1.246,716,0.732,719,0.67,723,0.123,732,0.403,734,0.436,745,0.589,752,0.316,754,0.397,760,0.216,768,0.233,772,0.72,774,0.213,779,0.383,786,1.755,788,0.538,790,0.951,834,0.218,841,0.761,850,0.223,853,0.255,859,0.194,861,0.356,865,1.176,889,0.548,893,0.406,894,0.209,900,1.722,903,0.179,910,0.555,913,0.25,929,0.233,930,0.228,932,0.211,937,0.209,938,0.239,943,1.306,963,0.62,964,3.893,966,0.962,967,0.566,968,0.487,972,0.753,982,0.606,983,0.23,984,0.388,985,0.562,991,0.25,998,0.441,1005,0.11,1008,0.657,1017,0.996,1019,1.152,1022,1.117,1033,3.816,1040,0.852,1045,0.265,1053,0.617,1066,1.884,1074,0.25,1076,0.293,1079,0.482,1082,0.25,1091,0.182,1097,1.661,1101,1.768,1108,0.436,1109,0.221,1110,0.798,1112,0.243,1125,0.207,1128,0.179,1129,0.158,1130,0.383,1135,0.25,1136,3.477,1155,0.23,1169,0.436,1211,0.207,1213,0.218,1219,0.416,1255,0.263,1282,1.687,1284,0.246,1287,0.204,1294,0.265,1295,0.239,1308,0.236,1310,0.239,1311,0.285,1321,0.265,1348,1.379,1398,0.271,1399,1.719,1403,0.218,1416,0.194,1451,0.94,1457,0.14,1463,0.518,1477,0.508,1483,0.789,1499,0.223,1508,0.457,1513,0.846,1520,0.207,1554,0.508,1556,0.197,1609,0.193,1612,0.185,1620,0.42,1625,0.23,1640,0.218,1643,0.698,1647,0.416,1650,0.228,1681,0.277,1727,0.221,1759,0.178,1772,0.457,1779,0.23,1784,0.259,1786,0.186,1846,3.421,1852,0.428,1942,0.566,1950,0.441,1963,1.64,1995,0.255,2003,0.259,2009,0.271,2016,0.424,2018,0.634,2042,0.611,2054,1.02,2056,0.216,2060,0.209,2076,0.214,2092,0.25,2109,0.239,2116,0.49,2118,0.259,2132,0.265,2148,0.277,2225,0.271,2238,1.108,2240,0.239,2256,0.974,2257,0.271,2260,0.277,2294,0.277,2300,0.271,2306,0.233,2309,2.437,2336,0.475,2363,0.277,2370,0.265,2371,0.277,2379,0.508,2407,0.508,2417,0.243,2418,0.25,2419,0.236,2421,0.259,2447,0.277,2448,0.688,2484,0.277,2495,0.265,2501,0.277,2502,0.277,2503,0.259,2507,0.277,2528,0.277,2552,0.259,2580,0.277,2586,0.469,2589,0.277,2595,0.277,2598,0.277,2619,0.611,2625,1.412,2626,0.887,2627,0.246,2628,0.543,2630,0.482,2631,0.798,2633,0.543,2634,0.25,2635,1.928,2636,2.144,2637,2.323,2638,1.502,2639,1.277,2640,0.632,2641,0.277,2642,0.191,2643,0.277,2644,0.277,2645,0.543,2646,0.482,2647,0.265,2648,0.277,2649,0.277,2650,0.277,2651,0.277,2652,0.543,2653,0.277,2654,0.543,2655,0.277,2656,0.277,2657,0.277,2658,0.255,2659,0.307,2660,0.307,2661,0.601,2662,0.285,2663,0.518,2664,0.277,2665,0.277,2666,0.277,2667,0.277,2668,4.921,2669,0.307,2670,0.307,2671,0.307,2672,0.601,2673,1.504,2674,0.307,2675,0.307,2676,0.307,2677,0.307,2678,0.307,2679,0.577,2680,0.307,2681,0.307,2682,0.285,2683,1.152,2684,0.271,2685,0.271,2686,0.307,2687,0.277,2688,0.882,2689,0.882,2690,0.307,2691,0.307,2692,2.132,2693,0.601,2694,0.821,2695,0.307,2696,0.307,2697,0.601,2698,0.601,2699,0.601,2700,0.307,2701,0.307,2702,0.307,2703,0.307,2704,0.307,2705,0.307,2706,0.601,2707,0.307,2708,0.307,2709,0.307,2710,0.307,2711,0.347,2712,0.347,2713,0.559,2714,0.307,2715,0.307,2716,0.277,2717,0.307,2718,0.307,2719,0.307,2720,0.307,2721,0.307,2722,0.882,2723,1.152,2724,0.882,2725,1.901,2726,0.601,2727,0.601,2728,0.307,2729,0.882,2730,0.882,2731,1.152,2732,0.307,2733,0.882,2734,0.277,2735,0.307,2736,0.259,2737,0.307,2738,0.307,2739,0.277,2740,0.307,2741,0.307,2742,0.307,2743,0.307,2744,0.307,2745,0.307,2746,0.307,2747,0.307,2748,0.601,2749,0.307,2750,0.601,2751,0.307,2752,0.307,2753,0.307,2754,0.307,2755,0.307,2756,0.285]],["component/98",[7,0.401]],["title/99-1",[236,39.251]],["name/99-1",[]],["text/99-1",[]],["component/99-1",[]],["title/99-2",[96,36.21,679,30.741]],["name/99-2",[]],["text/99-2",[]],["component/99-2",[]],["title/99-3",[679,30.741,949,47.08]],["name/99-3",[]],["text/99-3",[]],["component/99-3",[]],["title/99-4",[980,68.801]],["name/99-4",[]],["text/99-4",[]],["component/99-4",[]],["title/99-5",[36,33.721,1005,26.424]],["name/99-5",[]],["text/99-5",[]],["component/99-5",[]],["title/99-6",[754,39.689]],["name/99-6",[]],["text/99-6",[]],["component/99-6",[]],["title/99-7",[2757,79.747]],["name/99-7",[]],["text/99-7",[]],["component/99-7",[]],["title/99-8",[2758,79.747]],["name/99-8",[]],["text/99-8",[]],["component/99-8",[]],["title/99-9",[2759,79.747]],["name/99-9",[]],["text/99-9",[]],["component/99-9",[]],["title/99-10",[2760,79.747]],["name/99-10",[]],["text/99-10",[]],["component/99-10",[]],["title/99-11",[2761,88.192]],["name/99-11",[]],["text/99-11",[]],["component/99-11",[]],["title/99",[402,17.184,679,30.741]],["name/99",[402,0.306,679,0.547]],["text/99",[5,3.349,8,2.272,13,0.305,14,0.387,17,2.702,19,0.558,23,0.419,24,1.329,26,2.089,29,0.677,31,0.503,34,0.401,36,2.071,45,0.417,52,0.431,68,0.544,71,0.914,76,0.565,79,0.787,84,2.878,86,0.892,88,1.289,96,3.372,99,3.333,101,4.072,105,0.387,111,1.348,115,0.529,117,1.009,118,0.576,120,1.451,127,0.589,134,0.891,136,0.808,139,2.127,142,0.926,143,0.947,144,0.749,146,0.922,148,0.309,154,0.858,155,1.129,161,0.357,163,0.465,166,1.043,168,0.476,171,1.169,172,0.396,178,0.48,186,0.922,190,0.554,192,2.155,196,0.39,224,0.459,228,0.47,245,1.195,248,2.363,249,0.486,251,0.852,252,1.676,263,1.502,264,0.836,266,0.687,275,0.868,277,3.529,280,0.419,282,0.547,283,0.544,292,0.501,296,0.381,301,1.271,319,1.027,331,2.218,341,0.535,351,0.414,375,2.39,377,0.914,394,0.589,395,0.584,401,0.421,402,0.829,406,1.586,408,0.488,415,0.618,421,0.947,424,0.655,442,0.655,445,1.94,451,0.468,465,1.044,508,2.151,509,1.94,514,2.54,521,0.607,525,0.414,531,0.451,547,0.4,549,0.878,553,0.558,570,0.547,580,1.426,583,0.521,586,0.544,593,2.017,597,0.521,608,0.899,615,0.513,617,2.853,630,0.561,668,0.903,670,0.494,673,0.861,679,1.695,683,0.492,684,0.881,686,2.172,687,0.629,697,1.018,698,0.49,711,0.568,723,0.671,733,1.173,736,1.049,742,0.641,743,0.524,754,1.351,786,2.514,790,2.332,827,0.501,830,0.568,841,1.982,865,0.926,924,0.706,925,0.706,926,0.728,927,0.696,928,0.728,929,0.678,932,1.633,934,1.94,936,0.706,943,0.613,949,3.16,961,1.233,963,0.48,967,0.572,976,1.348,981,0.728,984,0.576,989,0.769,990,0.716,991,0.728,993,0.524,994,0.769,995,0.769,996,0.769,997,0.769,998,0.655,999,0.769,1000,0.769,1001,0.696,1002,0.769,1003,0.769,1004,0.629,1005,1.912,1006,4.919,1007,0.769,1008,1.711,1009,0.769,1010,0.635,1011,0.696,1012,0.687,1013,0.696,1014,1.448,1015,1.881,1017,0.629,1018,0.769,1019,0.728,1033,0.641,1040,0.538,1053,0.623,1056,0.728,1061,0.769,1062,0.641,1063,1.448,1064,0.662,1066,0.943,1088,1.448,1106,1.933,1107,1.664,1114,0.716,1285,1.276,1479,0.769,1533,1.261,1961,0.754,1962,1.37,1964,1.448,1965,1.448,1981,0.787,1982,0.787,1983,0.787,1984,0.787,1986,0.787,1987,2.097,1988,0.787,1989,2.097,1990,0.787,1991,2.097,1992,0.754,1993,2.097,1994,0.787,1995,1.973,1996,0.716,1999,0.787,2051,0.618,2056,0.629,2068,0.806,2194,2.255,2234,1.328,2240,1.309,2310,1.309,2372,0.687,2387,0.687,2406,0.754,2415,0.754,2422,0.561,2423,0.728,2431,0.754,2432,1.419,2455,0.716,2464,1.518,2465,1.518,2466,0.938,2467,0.938,2468,0.74,2488,1.518,2489,0.806,2511,2.15,2514,0.806,2574,1.518,2586,0.696,2633,1.518,2757,0.806,2758,1.518,2762,1.679,2763,0.892,2764,1.679,2765,0.892,2766,0.892,2767,0.892,2768,0.892,2769,0.892,2770,0.892,2771,0.892,2772,0.892,2773,0.892,2774,0.892,2775,0.892,2776,0.892,2777,0.892,2778,0.892,2779,4.608,2780,1.679,2781,1.679,2782,0.892,2783,0.892,2784,0.892,2785,1.481,2786,1.679,2787,0.892,2788,0.83,2789,0.892,2790,0.892,2791,0.892,2792,0.892,2793,0.892,2794,0.892,2795,0.892,2796,0.892,2797,0.892,2798,0.892,2799,0.892,2800,0.892,2801,0.892,2802,0.892,2803,1.561,2804,0.806,2805,0.892]],["component/99",[7,0.401]],["title/100-1",[29,25.643,42,29.179,502,29.437]],["name/100-1",[]],["text/100-1",[]],["component/100-1",[]],["title/100-2",[155,27.786,308,31.436]],["name/100-2",[]],["text/100-2",[]],["component/100-2",[]],["title/100-3",[183,30.892,1128,43.146]],["name/100-3",[]],["text/100-3",[]],["component/100-3",[]],["title/100-4",[183,30.892,1129,38.042]],["name/100-4",[]],["text/100-4",[]],["component/100-4",[]],["title/100-5",[356,40.753,835,41.118]],["name/100-5",[]],["text/100-5",[]],["component/100-5",[]],["title/100-6",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/100-6",[]],["text/100-6",[]],["component/100-6",[]],["title/100-7",[227,33.834,525,23.078,861,29.474,1130,31.658,1131,32.55]],["name/100-7",[]],["text/100-7",[]],["component/100-7",[]],["title/100-8",[349,34.906,1735,35.536,2806,57.467]],["name/100-8",[]],["text/100-8",[]],["component/100-8",[]],["title/100-9",[351,34.319,1967,55.481]],["name/100-9",[]],["text/100-9",[]],["component/100-9",[]],["title/100-10",[96,36.21,2807,73.872]],["name/100-10",[]],["text/100-10",[]],["component/100-10",[]],["title/100-11",[293,47.398,1004,52.112]],["name/100-11",[]],["text/100-11",[]],["component/100-11",[]],["title/100",[13,15.31,14,19.455,84,12.931,98,29.562,502,20.744,1132,21.525]],["name/100",[1132,1.129]],["text/100",[0,0.577,3,0.465,5,0.677,6,1.017,7,0.146,8,1.597,10,0.45,11,1.198,12,0.584,13,2.471,14,2.049,17,1.508,18,0.734,19,0.353,29,1.288,30,0.255,31,0.319,32,0.848,34,0.706,35,0.874,37,0.347,38,0.323,40,0.7,42,1.298,45,0.508,46,0.798,48,1.819,52,1.544,54,1.15,56,1.405,57,0.328,60,1.286,77,0.332,79,0.509,84,3.259,88,1.317,91,1.198,92,0.353,93,0.332,96,0.277,98,0.373,99,0.285,101,0.544,104,0.291,105,0.877,110,0.27,112,0.516,117,1.887,118,2.618,120,1.725,125,0.752,127,0.373,128,1.438,130,0.351,134,0.212,136,0.292,138,0.262,139,0.753,146,0.862,147,0.373,148,0.7,151,0.395,154,0.555,155,0.759,161,0.629,163,0.818,164,0.987,166,0.351,168,0.301,171,0.278,172,1.081,179,0.398,180,0.353,183,1.613,185,0.766,186,1.338,188,0.345,189,0.33,192,0.299,194,0.376,196,0.247,202,0.441,203,0.347,206,0.415,211,1.077,214,0.965,220,0.41,224,1.039,225,0.424,227,0.74,228,1.064,236,0.251,239,0.277,240,0.816,247,0.353,251,0.287,252,0.949,262,0.339,264,1.122,265,0.753,267,0.645,268,0.365,271,0.276,275,0.562,277,0.29,279,0.514,280,0.511,282,0.347,283,0.663,285,0.441,293,1.295,296,2.127,300,1.398,301,0.239,308,1.037,311,0.31,315,0.74,316,0.283,319,0.469,324,0.419,325,1.021,327,0.454,330,1.06,331,0.855,333,0.345,338,0.836,346,0.435,349,2.442,350,0.322,351,1.313,354,0.349,356,1.761,360,0.429,361,0.52,386,0.628,402,0.822,406,0.852,412,0.398,421,0.319,438,0.415,439,0.333,445,0.365,446,0.295,450,0.388,457,0.415,459,1.007,464,0.365,465,0.248,468,0.777,474,0.402,478,0.441,482,0.353,502,1.129,508,0.947,514,0.9,517,0.343,518,0.402,521,0.385,523,0.349,525,0.938,528,1.431,531,0.794,532,0.766,539,0.435,541,0.454,547,0.704,548,0.382,549,0.568,552,0.239,556,0.353,558,0.402,570,0.667,577,0.663,580,1.696,593,0.28,596,1.029,597,0.635,602,0.429,608,0.302,618,0.419,647,0.358,666,0.675,668,0.844,670,0.602,673,1.25,677,0.362,682,0.306,689,0.766,698,0.31,706,2.51,711,1.286,728,1.402,729,1.313,730,1.179,735,1.364,736,2.411,742,0.406,743,1.185,745,0.555,758,0.435,773,0.379,786,1.119,790,0.323,827,1.986,833,0.435,835,0.874,846,3.707,861,2.95,868,0.511,890,1.014,910,0.355,963,0.584,967,0.362,972,0.579,993,0.332,1004,0.398,1010,0.402,1021,0.487,1022,0.447,1024,0.447,1040,0.655,1048,0.454,1066,0.882,1083,1.193,1087,0.419,1097,0.398,1102,0.498,1128,1.179,1129,0.808,1130,1.286,1131,1.323,1133,1.633,1134,0.429,1135,0.461,1136,0.37,1137,0.424,1138,0.781,1139,1.078,1140,0.525,1141,0.826,1142,0.86,1143,0.86,1144,0.435,1145,0.347,1146,0.461,1147,0.525,1148,0.525,1149,1.01,1150,3.467,1151,0.807,1152,1.01,1153,0.937,1154,0.435,1155,0.424,1156,0.525,1157,0.461,1158,0.419,1159,0.525,1160,1.01,1161,0.525,1162,0.902,1163,0.525,1164,0.902,1165,1.46,1166,0.461,1167,0.525,1168,0.435,1169,0.41,1170,1.01,1171,0.525,1172,1.208,1173,0.525,1174,0.385,1175,0.525,1176,0.525,1177,0.525,1178,0.525,1179,0.525,1180,1.01,1181,0.525,1182,0.525,1183,1.01,1184,1.01,1185,1.01,1186,0.525,1187,0.807,1188,1.01,1189,0.525,1190,0.525,1191,0.525,1192,0.525,1193,0.525,1194,0.525,1195,0.349,1196,0.469,1197,1.303,1198,0.525,1199,0.525,1200,0.461,1201,1.452,1202,0.525,1203,1.01,1204,0.487,1205,1.01,1206,0.525,1207,0.525,1208,0.525,1209,0.525,1210,0.498,1211,0.382,1212,0.525,1214,0.759,1219,0.391,1277,0.424,1294,0.487,1295,0.441,1296,0.487,1300,0.461,1347,1.01,1349,1.46,1356,1.781,1361,6.334,1362,2.969,1379,1.877,1382,0.525,1400,0.313,1483,0.268,1520,0.382,1556,0.362,1558,0.333,1647,0.391,1682,0.86,1733,1.242,1735,1.977,1964,0.487,1967,1.83,1996,0.454,2003,0.478,2029,0.982,2037,0.982,2055,0.454,2060,0.385,2072,0.454,2076,0.395,2134,0.478,2135,0.454,2173,2.102,2336,0.447,2342,0.478,2478,1.354,2558,1.825,2806,3.197,2808,0.487,2809,1.57,2810,0.565,2811,0.565,2812,0.565,2813,0.565,2814,0.565,2815,1.086,2816,0.565,2817,0.498,2818,0.565,2819,0.565,2820,0.565,2821,0.565,2822,1.086,2823,0.565,2824,0.565,2825,0.565,2826,0.565,2827,1.57,2828,1.57,2829,0.565,2830,1.086,2831,0.565,2832,1.086,2833,0.565,2834,1.086,2835,0.565,2836,2.827,2837,0.525,2838,3.193,2839,0.565,2840,1.086,2841,1.086,2842,1.086,2843,1.086,2844,1.01,2845,1.086,2846,0.565,2847,0.498,2848,0.565,2849,0.565,2850,0.982,2851,0.525,2852,0.565,2853,0.565,2854,1.57,2855,0.565,2856,0.565,2857,1.57,2858,0.565,2859,0.565,2860,0.565,2861,0.565,2862,0.565,2863,0.565,2864,0.565,2865,0.565,2866,0.565,2867,0.565,2868,0.565,2869,0.565,2870,0.565,2871,0.565,2872,0.525,2873,0.565,2874,0.525,2875,1.086,2876,1.086,2877,1.086,2878,0.565,2879,0.565,2880,0.565,2881,0.565,2882,0.565,2883,1.086,2884,0.565,2885,1.57,2886,0.565,2887,0.565,2888,0.565,2889,0.565,2890,0.498,2891,0.565,2892,0.565,2893,0.565,2894,0.565]],["component/100",[7,0.401]],["title/101-1",[402,20.515]],["name/101-1",[]],["text/101-1",[]],["component/101-1",[]],["title/101-2",[116,50.007]],["name/101-2",[]],["text/101-2",[]],["component/101-2",[]],["title/101-3",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/101-3",[]],["text/101-3",[]],["component/101-3",[]],["title/101-4",[33,23.693,36,20.443,111,25.393,116,25.393,118,15.366,421,25.274]],["name/101-4",[]],["text/101-4",[]],["component/101-4",[]],["title/101-5",[36,18.611,88,12.902,116,23.118,118,13.989,143,23.009,361,19.534,854,27.77]],["name/101-5",[]],["text/101-5",[]],["component/101-5",[]],["title/101-6",[33,23.693,111,25.393,118,23.373,361,21.457,421,25.274]],["name/101-6",[]],["text/101-6",[]],["component/101-6",[]],["title/101-7",[33,14.895,36,12.852,111,15.964,116,15.964,118,9.66,143,15.889,186,15.464,421,15.889,854,19.177,861,16.706,985,17.944,1153,24.29]],["name/101-7",[]],["text/101-7",[]],["component/101-7",[]],["title/101-8",[54,18.307,110,15.346,118,17.986,120,19.606,171,15.803,214,12.73,361,15.395,487,14.667,680,16.866]],["name/101-8",[]],["text/101-8",[]],["component/101-8",[]],["title/101-9",[245,52.609,528,43.37]],["name/101-9",[]],["text/101-9",[]],["component/101-9",[]],["title/101-10",[88,23.377,356,40.753]],["name/101-10",[]],["text/101-10",[]],["component/101-10",[]],["title/101-11",[48,36.208,88,20.111,356,35.06]],["name/101-11",[]],["text/101-11",[]],["component/101-11",[]],["title/101-12",[88,20.111,356,35.06,1172,48.923]],["name/101-12",[]],["text/101-12",[]],["component/101-12",[]],["title/101-13",[56,31.577,356,35.06,711,40.503]],["name/101-13",[]],["text/101-13",[]],["component/101-13",[]],["title/101-14",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/101-14",[]],["text/101-14",[]],["component/101-14",[]],["title/101-15",[1276,68.801]],["name/101-15",[]],["text/101-15",[]],["component/101-15",[]],["title/101",[13,19.063,14,24.225,88,17.646,158,30.495]],["name/101",[88,0.743]],["text/101",[0,0.694,3,0.385,4,0.271,5,0.2,7,0.337,8,1.22,10,0.85,11,0.275,12,0.25,13,1.959,14,2.076,15,0.703,17,1.749,18,0.611,19,0.29,23,0.615,24,0.731,31,0.507,32,0.549,33,3.032,34,2.054,36,0.41,40,0.454,42,0.413,45,0.217,46,1.242,48,2.194,49,0.95,52,1.315,54,3.361,56,1.502,57,1.193,58,0.573,60,1.732,63,0.304,65,2.077,71,0.712,77,0.273,80,0.331,84,2.28,88,2.557,91,1.421,92,0.562,93,1.775,94,1.038,95,1.134,96,0.829,97,1.152,100,1.43,101,2.689,103,0.692,105,2.335,106,0.589,107,1.705,110,1.714,111,2.94,113,2.544,115,1.004,116,3.989,117,0.872,118,2.993,120,4.637,121,0.268,123,0.64,125,0.431,128,0.274,129,0.435,130,0.559,134,0.769,136,0.125,143,3.329,145,0.311,146,0.255,148,0.312,155,0.901,160,0.26,161,0.524,163,0.681,164,0.566,166,1.051,168,0.48,169,0.275,170,0.817,171,1.337,172,0.399,186,1.493,188,0.283,191,0.185,192,0.476,194,0.309,196,1.894,199,0.285,202,0.701,204,0.393,211,0.48,214,1.077,215,0.653,221,0.623,224,0.463,227,0.316,234,0.525,238,0.349,243,0.292,245,0.331,248,2.597,249,0.253,252,0.795,253,0.316,255,0.278,262,0.278,263,0.232,264,0.316,271,0.227,272,0.515,275,0.24,277,0.868,280,0.218,285,0.362,292,0.261,293,0.577,296,1.417,301,1.403,304,0.345,308,0.72,313,1.721,316,2.867,319,0.389,322,0.337,325,1.336,330,0.314,335,0.784,338,0.357,340,0.562,341,1.015,344,0.385,350,1.364,351,1.113,356,3.254,360,0.353,361,1.302,377,0.253,379,0.385,384,0.401,386,0.268,389,0.836,394,0.594,397,0.367,402,0.954,403,0.345,406,0.314,408,0.254,421,1.87,429,0.325,438,1.508,439,0.531,440,0.306,441,0.294,443,0.498,446,0.47,455,0.24,470,0.214,480,0.401,487,0.937,502,0.215,505,1.981,506,0.349,508,0.542,509,1.093,519,1.205,523,0.287,525,1.405,526,0.385,528,0.273,531,1.211,549,0.684,552,0.38,553,0.817,558,0.331,570,0.552,575,0.334,577,0.549,580,0.278,602,0.353,604,0.512,613,0.353,617,0.267,619,0.322,620,0.545,664,0.379,666,0.288,668,0.25,670,0.498,677,0.298,679,0.193,680,1.078,686,0.365,697,0.282,698,0.255,706,0.302,708,0.26,711,1.732,712,1.108,728,0.752,729,1.1,732,0.876,765,0.653,766,0.612,767,0.337,768,0.683,772,0.29,773,0.603,827,0.261,835,1.143,841,0.594,854,2.954,861,2.432,869,0.692,889,0.559,890,0.845,900,0.311,910,0.566,937,1.152,949,0.296,961,0.341,963,0.25,966,0.316,968,0.496,972,1.095,980,0.362,985,0.573,993,0.273,1013,0.362,1031,0.345,1040,0.28,1047,0.379,1049,0.385,1062,1.216,1075,0.275,1076,0.439,1083,0.994,1089,0.341,1092,0.309,1129,0.239,1130,0.296,1131,1.569,1133,1.134,1139,0.898,1144,0.357,1154,0.692,1155,0.675,1162,0.385,1164,0.746,1172,4.137,1197,0.746,1213,1.462,1214,1.435,1216,0.432,1217,0.432,1218,0.432,1219,1.172,1220,1.216,1221,1.128,1222,0.432,1223,0.432,1224,0.836,1225,0.836,1226,0.432,1227,0.432,1228,0.432,1229,0.432,1230,0.432,1231,0.432,1232,0.432,1233,0.432,1234,0.432,1235,0.432,1236,0.432,1237,0.432,1238,1.216,1239,0.432,1240,0.836,1241,1.216,1242,0.432,1243,0.432,1244,0.432,1245,0.432,1246,0.701,1247,0.836,1248,1.573,1249,0.734,1250,0.675,1251,0.836,1252,0.401,1253,0.302,1254,0.432,1255,0.203,1256,1.085,1257,0.432,1258,0.793,1261,0.432,1262,0.432,1265,0.432,1266,0.432,1267,0.432,1268,0.432,1269,0.432,1270,0.432,1271,0.432,1272,0.432,1273,0.432,1274,0.432,1275,0.432,1276,0.362,1277,1.542,1278,0.432,1295,0.362,1296,0.401,1297,0.432,1298,0.432,1299,0.432,1300,1.067,1301,0.385,1302,0.432,1303,0.385,1308,0.357,1319,0.432,1320,0.432,1321,0.401,1322,0.432,1323,0.432,1324,0.432,1325,1.573,1326,0.432,1327,0.836,1328,0.432,1329,0.432,1330,0.464,1331,0.432,1332,0.432,1333,0.432,1334,0.836,1335,0.432,1336,0.836,1337,0.432,1338,0.432,1339,0.836,1340,0.836,1341,0.432,1342,0.432,1343,0.401,1344,0.432,1345,0.432,1346,0.432,1383,0.432,1384,0.432,1385,0.432,1386,0.432,1387,0.432,1388,0.793,1389,0.385,1390,0.292,1391,0.41,1392,0.432,1393,0.432,1397,0.432,1416,0.569,1456,0.21,1483,0.427,1484,0.353,1498,0.325,1513,0.66,1641,0.393,1661,0.357,1733,1.895,1768,0.836,1770,0.776,1849,0.373,1938,0.836,2042,0.623,2051,0.322,2054,0.285,2076,0.325,2083,0.373,2127,0.776,2444,0.42,2448,0.362,2518,0.42,2673,0.367,2895,0.464,2896,2.053,2897,0.42,2898,0.464,2899,0.464,2900,0.899,2901,0.464,2902,0.464,2903,0.464,2904,1.307,2905,0.464,2906,0.464,2907,0.464,2908,0.464,2909,0.464,2910,0.464,2911,0.464,2912,0.464,2913,0.464,2914,0.525,2915,0.464,2916,2.053,2917,0.464,2918,0.464,2919,0.464,2920,1.479,2921,1.307,2922,0.464,2923,0.464,2924,0.464,2925,0.464,2926,0.432,2927,0.464,2928,0.464,2929,0.899,2930,0.464,2931,0.899,2932,1.307,2933,0.464,2934,1.067,2935,1.307,2936,0.464,2937,0.464,2938,0.899,2939,0.464,2940,1.691,2941,0.464,2942,0.464,2943,0.464,2944,0.464,2945,0.446,2946,0.464,2947,0.464,2948,0.464,2949,0.464,2950,0.464,2951,0.464,2952,0.464,2953,0.464,2954,0.464,2955,0.464,2956,0.899,2957,0.464,2958,0.464,2959,0.899,2960,0.464,2961,0.464,2962,0.464,2963,0.464,2964,0.464,2965,0.464,2966,0.464,2967,0.464,2968,0.464,2969,0.464,2970,0.464,2971,0.464,2972,0.464]],["component/101",[7,0.401]],["title/102-1",[56,27.706,84,16.101,236,24.817,691,48.109]],["name/102-1",[]],["text/102-1",[]],["component/102-1",[]],["title/102-2",[1276,68.801]],["name/102-2",[]],["text/102-2",[]],["component/102-2",[]],["title/102",[13,25.254,105,32.092]],["name/102",[631,1.45]],["text/102",[7,0.664,8,1.113,13,1.939,20,1.504,24,1.44,26,2.389,30,1.162,45,1.203,52,2.744,54,2.484,56,1.279,60,2.779,71,1.402,77,1.512,84,2.495,88,1.795,92,3.545,98,1.7,101,1.288,105,1.119,112,2.07,113,1.143,117,4.157,118,3.854,125,1.234,128,1.52,134,2.124,136,2.182,139,0.961,148,1.513,155,3.05,161,1.747,168,2.325,179,1.816,183,1.077,214,2.958,226,3.744,236,1.146,239,2.137,263,1.288,264,0.905,278,1.59,292,1.446,296,3.886,301,3.162,308,1.856,313,1.63,332,2.101,357,1.52,391,1.362,402,1.553,438,1.891,443,2.416,446,1.346,451,1.352,455,1.331,458,1.664,465,2.49,487,1.175,514,0.951,519,1.834,547,1.156,549,1.346,552,1.088,556,1.61,570,1.58,604,1.467,617,1.481,661,2.137,665,1.385,670,2.416,673,2.91,674,1.754,679,1.815,680,2.289,683,1.421,684,1.352,691,2.222,723,1.029,743,1.512,746,1.101,865,1.421,909,1.852,963,2.345,966,1.754,972,1.373,1005,0.921,1031,3.237,1091,2.587,1092,1.713,1139,1.769,1157,2.101,1276,2.009,1279,1.63,1280,2.177,1281,2.395,1282,4.487,1283,2.395,1284,2.068,1285,1.957,1286,2.137,1287,1.713,1305,2.068,1306,2.137,1308,1.982,1309,2.575,1942,1.652,2973,2.912]],["component/102",[7,0.401]],["title/103-1",[78,56.976]],["name/103-1",[]],["text/103-1",[]],["component/103-1",[]],["title/103-2",[745,45.082]],["name/103-2",[]],["text/103-2",[]],["component/103-2",[]],["title/103-3",[1255,32.348,1457,33.624]],["name/103-3",[]],["text/103-3",[]],["component/103-3",[]],["title/103",[136,17.103,178,34.172,1005,22.733]],["name/103",[1473,1.613]],["text/103",[8,1.827,65,4.917,88,2.266,118,2.456,129,3.463,136,1.927,139,2.671,178,5.121,183,2.994,228,3.773,263,3.582,264,2.517,301,3.031,388,4.394,468,3.545,487,3.268,514,2.644,686,2.909,723,2.862,756,5.004,827,4.022,1005,3.828,1473,4.917,1585,4.876,2422,4.504,2566,4.762,2974,7.159,2975,8.098,2976,7.159,2977,8.098]],["component/103",[7,0.401]],["title/104-1",[78,56.976]],["name/104-1",[]],["text/104-1",[]],["component/104-1",[]],["title/104-2",[745,45.082]],["name/104-2",[]],["text/104-2",[]],["component/104-2",[]],["title/104-3",[1255,32.348,1457,33.624]],["name/104-3",[]],["text/104-3",[]],["component/104-3",[]],["title/104",[84,14.343,136,13.368,492,35.376,1005,17.769,1145,30.489]],["name/104",[492,1.672]],["text/104",[8,1.827,84,2.067,88,2.266,118,2.456,136,1.927,139,2.671,183,2.994,264,2.517,301,3.031,388,4.394,460,3.178,468,3.545,487,3.268,492,8.125,514,2.644,686,2.909,723,2.862,728,4.119,746,3.062,756,5.004,827,4.022,993,4.203,1005,3.828,1145,5.846,1472,4.368,2422,4.504,2566,4.762]],["component/104",[7,0.401]],["title/105-1",[78,56.976]],["name/105-1",[]],["text/105-1",[]],["component/105-1",[]],["title/105-2",[745,45.082]],["name/105-2",[]],["text/105-2",[]],["component/105-2",[]],["title/105-3",[1255,32.348,1457,33.624]],["name/105-3",[]],["text/105-3",[]],["component/105-3",[]],["title/105",[136,13.368,590,39.301,1005,17.769,1558,29.317,2374,38.752]],["name/105",[1558,0.776,1818,0.966]],["text/105",[8,1.736,10,2.817,30,3.07,84,1.964,88,2.153,118,3.158,136,1.831,139,2.538,214,2.695,264,2.392,301,2.88,388,4.176,460,3.019,468,3.369,486,4.365,487,3.105,514,2.512,686,2.764,723,2.72,726,4.307,756,4.755,827,3.821,1005,3.731,1472,4.151,1558,6.156,1735,3.804,1758,4.426,1816,5.171,1818,6.758,2374,5.307,2422,4.28,2566,4.525]],["component/105",[7,0.401]],["title/106-1",[78,56.976]],["name/106-1",[]],["text/106-1",[]],["component/106-1",[]],["title/106-2",[745,45.082]],["name/106-2",[]],["text/106-2",[]],["component/106-2",[]],["title/106-3",[1255,32.348,1457,33.624]],["name/106-3",[]],["text/106-3",[]],["component/106-3",[]],["title/106",[136,17.103,1005,22.733,1431,35.699]],["name/106",[1431,1.319]],["text/106",[8,1.907,65,5.132,84,2.158,88,2.365,118,2.564,136,2.011,139,2.787,183,3.125,264,2.627,279,3.535,301,3.164,388,4.586,487,3.411,514,2.759,686,3.036,723,2.987,827,4.197,1005,3.91,1431,6.517,1578,5.752,1580,6.757,2398,5.829,2422,4.701,2566,4.97]],["component/106",[7,0.401]],["title/107-1",[78,56.976]],["name/107-1",[]],["text/107-1",[]],["component/107-1",[]],["title/107-2",[745,45.082]],["name/107-2",[]],["text/107-2",[]],["component/107-2",[]],["title/107-3",[1255,32.348,1457,33.624]],["name/107-3",[]],["text/107-3",[]],["component/107-3",[]],["title/107",[136,17.103,1005,22.733,1591,42.597]],["name/107",[1591,1.574]],["text/107",[8,1.608,12,3.388,15,3.388,32,2.648,35,3.507,88,1.994,118,2.162,136,1.696,139,2.351,183,2.635,264,2.215,301,2.668,388,3.868,460,3.876,468,4.324,482,3.939,487,3.987,493,8.319,514,3.225,531,3.186,549,3.295,686,2.56,723,2.519,756,6.104,758,4.851,827,4.906,898,5.061,1005,3.585,1591,7.253,2422,3.964,2566,4.191,2978,7.127,2979,6.301]],["component/107",[7,0.401]],["title/108-1",[84,16.101,117,23.67,402,12.971,604,31.77]],["name/108-1",[]],["text/108-1",[]],["component/108-1",[]],["title/108-2",[84,12.931,117,19.01,136,12.052,139,16.706,604,25.515,1005,16.019]],["name/108-2",[]],["text/108-2",[]],["component/108-2",[]],["title/108",[402,17.184,1040,44.562]],["name/108",[402,0.306,1040,0.793]],["text/108",[0,0.907,3,0.73,6,0.86,7,0.44,8,1.281,13,1.412,14,1.324,18,0.798,23,1.942,26,0.719,29,1.666,30,1.376,34,1.372,36,0.779,37,1.048,42,0.784,45,1.93,84,0.88,86,1.619,88,0.54,108,1.216,110,0.815,112,1.447,115,1.013,117,1.753,118,0.586,125,0.818,133,1.067,134,2.78,135,0.734,136,2.208,139,3.482,144,1.36,145,2.043,148,1.058,150,0.745,151,1.193,155,1.147,158,0.933,160,0.954,161,1.655,163,2.615,172,2.228,178,0.918,180,1.067,183,1.275,189,0.997,196,3.034,202,1.332,203,1.048,214,2.285,224,2.127,225,2.289,236,0.76,248,2.151,252,1.942,263,2.066,267,1.013,268,1.969,270,1.393,271,1.489,272,0.977,280,0.803,292,0.959,296,0.73,301,0.723,319,1.785,333,1.042,354,1.054,357,1.007,386,0.987,394,2.012,395,1.119,397,1.351,401,0.805,402,2.311,406,2.238,408,1.667,418,1.371,420,1.24,441,1.081,443,0.946,445,1.969,450,1.172,455,1.576,460,0.758,465,0.749,468,0.845,474,1.216,487,0.779,514,1.126,518,1.216,523,2.55,525,1.919,548,1.153,549,0.892,552,0.721,557,1.03,583,0.997,593,1.509,617,0.982,630,3.158,665,0.918,668,2.699,674,1.163,675,1.172,678,1.024,679,3.261,683,1.682,686,1.678,695,0.873,696,1.393,719,1.771,723,0.682,733,1.193,735,1.153,741,1.095,745,0.873,754,0.768,756,1.193,779,1.088,827,0.959,835,0.95,865,2.278,903,0.997,949,1.088,967,1.095,968,0.942,970,1.204,993,1.002,1005,3.253,1033,2.192,1040,1.839,1076,0.834,1082,1.393,1097,2.15,1106,1.653,1107,0.946,1125,1.153,1126,1.228,1131,1.119,1169,2.215,1213,2.171,1308,1.314,1400,0.946,1416,1.081,1456,0.773,1477,0.982,1483,0.81,1499,1.24,1516,1.393,1555,2.076,1852,2.171,1936,1.111,1965,2.63,2042,1.183,2097,1.351,2098,1.473,2135,1.371,2136,1.443,2194,1.282,2348,1.371,2356,1.371,2387,1.314,2455,1.371,2479,1.443,2503,1.443,2586,1.332,2646,1.371,2687,1.544,2759,1.544,2760,1.544,2804,1.544,2980,1.707,2981,1.707,2982,1.707,2983,1.707,2984,1.707,2985,1.707,2986,1.707,2987,1.707,2988,1.707]],["component/108",[7,0.401]],["title/109-1",[402,17.184,1456,33.432]],["name/109-1",[]],["text/109-1",[]],["component/109-1",[]],["title/109-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/109-2",[]],["text/109-2",[]],["component/109-2",[]],["title/109-3",[8,18.856,150,32.262]],["name/109-3",[]],["text/109-3",[]],["component/109-3",[]],["title/109-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/109-4",[]],["text/109-4",[]],["component/109-4",[]],["title/109-5",[547,33.151,708,41.306]],["name/109-5",[]],["text/109-5",[]],["component/109-5",[]],["title/109-6",[350,31.77,546,42.927,830,35.539,2989,55.762]],["name/109-6",[]],["text/109-6",[]],["component/109-6",[]],["title/109-7",[8,16.222,546,48.923,830,40.503]],["name/109-7",[]],["text/109-7",[]],["component/109-7",[]],["title/109-8",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/109-8",[]],["text/109-8",[]],["component/109-8",[]],["title/109-9",[8,16.222,746,27.183,1005,22.733]],["name/109-9",[]],["text/109-9",[]],["component/109-9",[]],["title/109-10",[1255,32.348,1457,33.624]],["name/109-10",[]],["text/109-10",[]],["component/109-10",[]],["title/109",[545,55.999,862,41.88,1129,28.716]],["name/109",[545,0.919,862,0.988]],["text/109",[0,2.229,5,2.196,8,1.794,10,0.721,20,1.017,26,0.734,29,2.056,30,0.786,32,1.304,34,2.631,35,1.727,36,1.417,42,0.8,45,1.45,49,1.265,56,0.865,57,1.012,71,0.948,84,3.245,88,1.85,90,0.817,91,1.033,93,1.023,94,1.069,95,1.167,99,0.878,101,0.871,104,1.598,110,2.005,115,1.033,125,3.367,127,2.771,128,1.832,129,2.03,136,1.13,138,1.442,139,0.65,144,0.777,148,0.604,155,0.655,165,1.186,168,0.929,169,1.033,172,2.261,183,0.728,196,1.355,211,3.748,214,0.69,223,1.446,224,1.598,232,1.446,245,3.629,251,0.884,252,1.974,254,1.217,264,0.612,279,0.824,280,0.819,286,1.851,296,0.745,297,1.002,308,0.741,316,1.553,325,1.133,335,1.045,351,2.716,386,1.794,401,0.822,402,0.976,406,1.085,424,1.279,425,3.904,441,1.103,457,4.759,460,0.773,470,1.433,487,0.795,502,0.807,514,1.881,525,0.809,528,3.432,545,3.561,546,5.775,547,1.393,553,1.94,557,1.051,668,2.257,673,0.894,676,1.196,686,0.708,690,1.965,695,2.604,711,1.978,736,2.624,754,0.784,788,1.063,827,1.743,829,3.702,830,5.046,835,0.969,840,4.739,844,1.503,861,1.033,862,2.331,865,1.712,867,1.186,963,0.937,973,1.341,981,1.421,1005,0.623,1122,2.389,1123,1.279,1127,1.293,1129,0.897,1132,0.837,1201,1.253,1279,1.103,1287,1.158,1421,1.253,1472,1.063,1492,2.331,1519,1.399,1602,1.62,1639,1.575,1967,4.39,2177,0.894,2636,1.057,2642,1.082,2667,1.575,2716,1.575,2734,1.575,2739,1.575,2850,2.806,2990,1.742,2991,3.103,2992,1.742,2993,1.742,2994,1.742,2995,1.742,2996,1.742,2997,3.103,2998,1.742,2999,1.742,3000,3.103,3001,3.103,3002,1.742,3003,1.62,3004,3.103,3005,1.742,3006,1.742,3007,1.742,3008,1.742,3009,1.742,3010,3.103,3011,1.742,3012,1.742,3013,1.742,3014,3.103,3015,3.103,3016,1.742,3017,1.742,3018,3.103,3019,1.742,3020,3.103,3021,1.742,3022,1.742]],["component/109",[7,0.401]],["title/110-1",[402,17.184,1456,33.432]],["name/110-1",[]],["text/110-1",[]],["component/110-1",[]],["title/110-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/110-2",[]],["text/110-2",[]],["component/110-2",[]],["title/110-3",[8,18.856,150,32.262]],["name/110-3",[]],["text/110-3",[]],["component/110-3",[]],["title/110-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/110-4",[]],["text/110-4",[]],["component/110-4",[]],["title/110-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/110-5",[]],["text/110-5",[]],["component/110-5",[]],["title/110-6",[8,16.222,746,27.183,1005,22.733]],["name/110-6",[]],["text/110-6",[]],["component/110-6",[]],["title/110-7",[1255,32.348,1457,33.624]],["name/110-7",[]],["text/110-7",[]],["component/110-7",[]],["title/110",[178,34.172,1129,32.728,1473,43.651]],["name/110",[677,0.844,1473,0.903]],["text/110",[5,3.366,8,2.247,12,2.208,26,1.73,29,2.571,84,3.224,88,2.471,90,1.925,99,2.069,129,1.986,135,2.74,136,1.715,138,2.961,139,1.532,144,1.832,148,1.425,161,1.645,178,5.421,183,1.717,228,2.164,231,2.924,263,2.054,264,1.444,280,2.997,308,1.747,349,2.255,351,1.908,394,2.711,395,2.691,401,1.937,402,1.482,406,2.73,445,2.653,446,2.147,451,2.155,459,2.635,470,2.943,484,2.797,514,3.25,654,2.983,686,1.668,687,2.897,695,3.257,726,2.6,746,1.756,788,2.505,830,2.617,873,2.774,896,2.711,983,3.084,1005,1.469,1068,2.953,1106,2.226,1107,2.275,1187,3.049,1461,2.328,1472,2.505,1473,2.82,1474,3.819,1475,2.983,1476,5.927,1477,2.362,1478,3.472,1479,3.543,1480,3.819,1481,3.819,1482,3.713,2177,2.107,2636,2.491,2642,2.551]],["component/110",[7,0.401]],["title/111-1",[402,17.184,1456,33.432]],["name/111-1",[]],["text/111-1",[]],["component/111-1",[]],["title/111-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/111-2",[]],["text/111-2",[]],["component/111-2",[]],["title/111-3",[118,25.347,694,45.892]],["name/111-3",[]],["text/111-3",[]],["component/111-3",[]],["title/111-4",[1145,45.341,1483,35.06]],["name/111-4",[]],["text/111-4",[]],["component/111-4",[]],["title/111-5",[1091,43.832,1145,45.341]],["name/111-5",[]],["text/111-5",[]],["component/111-5",[]],["title/111-6",[88,20.111,468,31.469,532,44.832]],["name/111-6",[]],["text/111-6",[]],["component/111-6",[]],["title/111-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/111-7",[]],["text/111-7",[]],["component/111-7",[]],["title/111-8",[8,16.222,30,28.681,150,27.755]],["name/111-8",[]],["text/111-8",[]],["component/111-8",[]],["title/111-9",[104,32.728,264,22.343,686,25.822]],["name/111-9",[]],["text/111-9",[]],["component/111-9",[]],["title/111-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/111-10",[]],["text/111-10",[]],["component/111-10",[]],["title/111-11",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/111-11",[]],["text/111-11",[]],["component/111-11",[]],["title/111-12",[8,16.222,746,27.183,1005,22.733]],["name/111-12",[]],["text/111-12",[]],["component/111-12",[]],["title/111-13",[1255,32.348,1457,33.624]],["name/111-13",[]],["text/111-13",[]],["component/111-13",[]],["title/111",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/111",[728,0.757,1484,1]],["text/111",[2,0.805,5,1.057,6,1.706,7,0.346,8,1.757,10,1.016,12,0.721,13,1.43,14,1.065,15,2.619,17,0.572,29,1.965,30,1.528,32,1.423,34,1.524,35,0.747,36,0.612,37,0.824,38,0.768,40,2.635,42,0.616,45,1.583,56,1.218,57,1.425,65,0.922,79,2.564,87,1.595,88,1.072,90,1.15,96,0.658,97,0.914,98,1.619,101,2.093,104,1.263,106,2.219,110,1.171,117,1.041,118,3.119,120,2.066,134,2.247,135,0.577,136,1.472,138,2.263,139,1.817,142,0.74,144,1.867,148,0.466,155,0.922,160,0.75,161,0.538,171,0.66,172,1.857,183,1.025,184,1.184,186,1.86,189,0.784,190,0.834,191,1.665,192,0.71,196,1.479,214,0.972,234,0.784,251,0.681,252,0.631,267,2.009,271,2.38,272,0.768,275,0.694,278,0.828,279,1.979,280,0.631,292,1.377,300,0.93,308,1.441,315,1.67,316,2.093,320,1.463,330,1.657,333,0.819,340,0.839,341,0.805,401,2.297,402,1.504,406,1.462,408,0.734,412,0.947,443,1.359,451,0.704,455,0.694,468,2.709,470,1.132,482,1.533,492,4.271,502,0.622,514,2.679,525,2.263,532,2.389,539,1.033,620,0.814,656,2.407,666,0.834,679,1.409,683,1.868,686,2.223,687,0.947,694,1.523,695,0.686,698,0.737,723,0.98,726,1.553,728,3.45,746,1.049,755,1.078,765,0.975,766,0.914,835,2.328,850,1.782,890,3.875,894,0.914,896,0.886,903,0.784,972,0.716,985,2.158,1005,0.877,1076,0.656,1083,1.02,1087,1.821,1089,4.017,1090,1.699,1091,3.246,1092,0.892,1096,1.008,1133,4.02,1141,1.02,1142,1.062,1143,1.062,1145,3.968,1150,0.744,1151,4.061,1381,1.062,1400,0.744,1402,2.607,1416,0.85,1434,0.788,1456,0.607,1485,2.281,1486,1.248,1487,2.001,1488,3.472,1489,2.116,1490,0.879,1491,2.922,1492,1.008,1493,1.158,1494,1.158,1495,1.158,1496,1.158,1497,1.248,1498,0.938,1499,0.975,1500,1.248,1501,3.891,1502,2.281,1503,2.281,1504,2.987,1505,1.248,1506,2.281,1507,1.248,1508,1.02,1509,1.114,1510,1.342,1511,1.342,1512,1.342,1513,0.985,1514,2.607,1515,1.047,1516,1.095,1517,1.008,1518,2.116,1519,1.078,1520,0.906,1521,1.158,1522,1.248,1523,1.184,1524,0.947]],["component/111",[7,0.401]],["title/112-1",[402,17.184,1456,33.432]],["name/112-1",[]],["text/112-1",[]],["component/112-1",[]],["title/112-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/112-2",[]],["text/112-2",[]],["component/112-2",[]],["title/112-3",[8,18.856,150,32.262]],["name/112-3",[]],["text/112-3",[]],["component/112-3",[]],["title/112-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/112-4",[]],["text/112-4",[]],["component/112-4",[]],["title/112-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/112-5",[]],["text/112-5",[]],["component/112-5",[]],["title/112-6",[8,16.222,746,27.183,1005,22.733]],["name/112-6",[]],["text/112-6",[]],["component/112-6",[]],["title/112-7",[1255,32.348,1457,33.624]],["name/112-7",[]],["text/112-7",[]],["component/112-7",[]],["title/112",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/112",[1431,0.739,1559,0.928]],["text/112",[0,1.007,3,0.811,5,2.943,6,0.955,8,1.578,10,2.827,13,0.648,17,1.916,26,0.799,29,2.976,32,2.599,40,1.161,45,2.099,56,0.942,84,3.395,87,2.177,88,2.334,104,1.723,105,1.951,112,1.588,113,0.842,116,1.075,117,0.805,118,2.53,125,0.909,129,0.917,135,1.439,136,1.209,138,2.087,143,1.07,148,0.658,150,1.462,154,0.969,155,1.689,161,2.955,169,1.125,183,1.399,189,1.108,211,1.011,220,1.378,228,2.367,255,1.138,271,2.647,275,0.98,292,1.065,308,0.807,322,1.378,354,1.171,402,0.778,406,2.743,408,1.037,464,1.225,470,1.546,502,0.878,514,2.001,557,1.144,586,1.157,593,0.939,654,2.431,656,1.091,663,1.303,668,1.02,678,1.138,679,0.789,682,2.435,686,1.825,695,0.969,719,2.61,746,1.431,754,0.853,772,1.185,779,1.209,830,3.453,834,1.351,863,4.497,893,1.281,1005,1.197,1075,1.125,1106,1.028,1107,1.051,1150,1.051,1195,1.171,1390,1.193,1431,5.022,1434,3.63,1436,1.603,1441,2.513,1456,0.858,1461,1.075,1468,2.162,1469,1.271,1483,0.9,1490,1.243,1498,1.326,1520,1.281,1524,1.338,1526,2.431,1527,1.378,1555,2.279,1559,3.168,1560,1.896,1561,1.442,1562,1.574,1563,1.764,1578,3.457,1580,4.899,1585,2.279,1656,1.823,1880,1.547,2177,0.973,2398,1.479,2477,1.442,2587,1.574,2636,1.15,2642,1.178,2646,1.523,3023,1.764,3024,1.896,3025,3.113,3026,2.145,3027,4.581,3028,1.896,3029,1.896,3030,5.039,3031,3.347,3032,4.177,3033,1.5,3034,4.177,3035,1.764,3036,2.145,3037,1.896,3038,1.896,3039,1.896,3040,4.177,3041,1.896]],["component/112",[7,0.401]],["title/113-1",[402,17.184,1456,33.432]],["name/113-1",[]],["text/113-1",[]],["component/113-1",[]],["title/113-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/113-2",[]],["text/113-2",[]],["component/113-2",[]],["title/113-3",[8,18.856,150,32.262]],["name/113-3",[]],["text/113-3",[]],["component/113-3",[]],["title/113-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/113-4",[]],["text/113-4",[]],["component/113-4",[]],["title/113-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/113-5",[]],["text/113-5",[]],["component/113-5",[]],["title/113-6",[8,16.222,746,27.183,1005,22.733]],["name/113-6",[]],["text/113-6",[]],["component/113-6",[]],["title/113-7",[1255,32.348,1457,33.624]],["name/113-7",[]],["text/113-7",[]],["component/113-7",[]],["title/113",[402,10.417,1129,23.063,1591,45.657,3042,44.784,3043,33.634]],["name/113",[1591,0.882,3043,0.988]],["text/113",[3,1.069,8,2.174,13,0.855,14,1.086,19,3.468,29,2.641,38,1.431,40,2.271,42,1.148,56,1.242,84,3.784,99,2.142,105,2.41,115,1.483,117,1.061,118,2.246,135,1.075,136,1.144,138,3.041,139,1.586,148,0.867,150,1.092,154,1.278,155,0.94,161,2.941,162,1.835,191,2.208,214,0.99,240,1.877,248,2.89,273,3.529,280,1.175,296,1.069,324,1.856,349,1.373,351,1.161,402,1.291,406,1.486,408,1.367,415,1.732,464,1.615,474,3.028,493,6.092,502,1.158,506,1.877,514,1.57,525,1.161,541,2.007,557,2.565,593,2.105,608,1.339,621,1.877,645,2.157,656,1.438,686,2.254,690,1.583,695,1.278,708,1.398,754,1.125,861,1.483,1005,0.894,1091,1.483,1106,1.355,1107,1.385,1109,1.798,1131,1.638,1150,1.385,1195,1.543,1514,1.924,1517,1.877,1524,1.763,1556,1.604,1566,2.325,1591,4.919,1599,2.325,1600,2.325,1601,2.325,1781,2.26,2342,2.114,2897,2.26,3043,5.512,3044,4.252,3045,2.5,3046,2.5,3047,2.5,3048,2.5,3049,2.5,3050,2.5,3051,2.5,3052,2.5,3053,2.5,3054,2.5,3055,2.5,3056,2.5,3057,2.63,3058,4.252,3059,2.5,3060,2.5,3061,2.5,3062,2.5]],["component/113",[7,0.401]],["title/114-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/114-1",[]],["text/114-1",[]],["component/114-1",[]],["title/114-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/114-2",[]],["text/114-2",[]],["component/114-2",[]],["title/114-3",[8,18.856,150,32.262]],["name/114-3",[]],["text/114-3",[]],["component/114-3",[]],["title/114-4",[401,41.598]],["name/114-4",[]],["text/114-4",[]],["component/114-4",[]],["title/114-5",[191,29.399,615,42.499]],["name/114-5",[]],["text/114-5",[]],["component/114-5",[]],["title/114-6",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/114-6",[]],["text/114-6",[]],["component/114-6",[]],["title/114-7",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/114-7",[]],["text/114-7",[]],["component/114-7",[]],["title/114-8",[8,16.222,746,27.183,1005,22.733]],["name/114-8",[]],["text/114-8",[]],["component/114-8",[]],["title/114-9",[1255,32.348,1457,33.624]],["name/114-9",[]],["text/114-9",[]],["component/114-9",[]],["title/114",[615,46.09,937,37.981,1129,28.716]],["name/114",[937,0.896,1528,0.903]],["text/114",[0,0.967,3,0.779,5,2.268,6,0.917,8,1.84,10,1.337,18,0.851,26,0.767,29,3.413,30,2.375,36,0.831,38,2.49,40,1.509,42,0.836,56,0.905,58,1.16,82,1.261,84,3.227,88,1.905,96,0.892,105,1.402,108,1.297,118,1.492,129,0.881,135,1.87,136,1.416,138,1.5,148,1.509,150,0.795,155,0.685,161,3.519,183,2.518,185,2.277,191,0.725,199,1.117,201,1.323,211,0.971,228,1.701,239,0.892,262,1.092,265,1.261,271,2.941,279,1.527,308,0.775,316,0.911,319,1.395,330,2.181,350,1.037,378,2.299,401,0.859,402,0.751,406,2.52,408,0.996,446,0.952,470,1.491,486,4.929,502,0.843,514,3.243,516,1.571,528,1.069,552,0.769,601,1.42,608,1.729,615,3.832,620,1.105,630,2.031,668,1.736,674,1.24,676,1.25,677,1.168,679,1.343,683,1.004,686,1.312,687,2.277,695,1.65,719,2.527,746,1.381,754,0.819,760,2.277,788,1.111,790,1.042,830,1.16,873,1.23,937,2.199,970,1.284,1005,1.155,1075,1.08,1106,0.987,1107,1.009,1126,1.309,1127,1.352,1130,1.16,1134,1.384,1150,2.916,1169,1.323,1201,1.309,1279,2.044,1286,1.511,1305,1.462,1390,2.736,1434,1.069,1461,1.032,1469,1.22,1472,1.111,1514,4.051,1528,4.575,1529,1.462,1530,1.511,1531,1.571,1532,1.693,1533,1.367,1534,1.693,1537,1.462,1538,2.256,1540,1.511,1544,3.097,1545,1.42,1546,1.539,1552,1.571,1555,2.199,1556,2.071,1558,1.075,1590,3.492,1779,2.424,1818,1.337,2177,0.934,2301,1.42,2636,1.105,2642,1.131,3063,5.262,3064,1.821,3065,1.821,3066,1.821,3067,1.821,3068,1.821,3069,1.821,3070,1.821,3071,1.821,3072,2.059,3073,4.349,3074,2.059,3075,2.059,3076,2.059,3077,1.821,3078,2.059,3079,1.821,3080,1.821,3081,1.821,3082,1.821,3083,3.228,3084,1.821,3085,1.821,3086,1.821]],["component/114",[7,0.401]],["title/115-1",[402,17.184,1456,33.432]],["name/115-1",[]],["text/115-1",[]],["component/115-1",[]],["title/115-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/115-2",[]],["text/115-2",[]],["component/115-2",[]],["title/115-3",[8,18.856,150,32.262]],["name/115-3",[]],["text/115-3",[]],["component/115-3",[]],["title/115-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/115-4",[]],["text/115-4",[]],["component/115-4",[]],["title/115-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/115-5",[]],["text/115-5",[]],["component/115-5",[]],["title/115-6",[8,16.222,746,27.183,1005,22.733]],["name/115-6",[]],["text/115-6",[]],["component/115-6",[]],["title/115-7",[1255,32.348,1457,33.624]],["name/115-7",[]],["text/115-7",[]],["component/115-7",[]],["title/115",[138,34.207,139,18.53,677,47.243]],["name/115",[138,0.611,677,0.844]],["text/115",[5,2.558,7,0.706,8,0.699,17,1.169,26,2.926,29,1.854,34,1.233,37,1.682,40,0.951,58,1.746,84,3.395,88,1.878,90,1.285,101,1.371,110,2.834,113,1.216,129,2.223,135,1.178,136,1.597,138,3.595,142,1.512,144,1.223,146,1.505,148,1.594,150,1.197,161,3.355,163,1.427,170,1.713,180,1.713,183,1.146,191,1.09,196,3.379,199,2.82,205,2.201,264,0.963,271,1.339,279,2.174,280,3.266,301,1.16,316,1.371,331,1.492,333,1.672,351,1.273,401,1.292,402,1.069,406,1.606,408,1.498,445,1.77,459,1.758,470,2.74,474,1.951,484,3.13,508,2.772,514,2.565,521,1.866,525,1.273,531,1.386,556,1.713,570,1.682,593,1.357,608,1.467,630,3.733,677,1.758,686,1.113,695,3.955,719,1.592,728,1.576,732,1.837,745,1.401,760,1.933,864,2.478,865,1.512,910,1.724,932,3.156,949,4.931,950,2.274,1091,1.626,1106,1.486,1107,1.518,1114,2.201,1169,3.338,1255,1.2,1390,2.891,1458,2.364,1459,2.549,1460,2.549,1461,1.554,1462,2.549,1463,2.364,1465,2.201,1466,2.549,1467,2.236,1468,1.77,1469,1.837,1470,2.549,1471,2.549,1472,1.672,1484,2.083,1530,2.274,1661,2.109,2177,2.357,2348,2.201,2477,2.083,2479,2.317,2634,2.236,2636,1.662,2642,2.855,2646,2.201,3087,1.809,3088,2.74,3089,2.74,3090,2.74]],["component/115",[7,0.401]],["title/116-1",[402,17.184,1456,33.432]],["name/116-1",[]],["text/116-1",[]],["component/116-1",[]],["title/116-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/116-2",[]],["text/116-2",[]],["component/116-2",[]],["title/116-3",[8,18.856,150,32.262]],["name/116-3",[]],["text/116-3",[]],["component/116-3",[]],["title/116-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/116-4",[]],["text/116-4",[]],["component/116-4",[]],["title/116-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/116-5",[]],["text/116-5",[]],["component/116-5",[]],["title/116-6",[8,16.222,746,27.183,1005,22.733]],["name/116-6",[]],["text/116-6",[]],["component/116-6",[]],["title/116-7",[1255,32.348,1457,33.624]],["name/116-7",[]],["text/116-7",[]],["component/116-7",[]],["title/116",[311,30.628,1609,35.079,1610,36.54,1611,38.977]],["name/116",[1610,0.599,1611,0.639,1612,0.551]],["text/116",[8,1.963,10,1.661,13,1.371,17,1.711,18,1.874,26,1.689,34,1.805,45,1.874,79,1.88,84,3.434,88,1.269,99,2.02,105,1.742,117,1.702,118,1.376,121,2.318,129,1.94,136,1.079,138,1.863,139,1.496,144,1.79,148,1.391,155,3.922,168,2.138,170,2.507,174,3.22,183,1.677,214,1.589,249,2.183,251,2.035,266,3.087,296,1.715,308,1.706,311,2.202,316,2.006,391,3.31,402,0.933,406,1.402,442,2.944,460,1.78,465,1.761,470,2.889,487,1.83,514,2.31,608,2.147,617,2.307,679,2.603,686,2.542,695,2.05,708,2.242,754,1.805,963,2.156,1005,1.434,1015,3.172,1062,2.884,1075,2.379,1421,4.499,1431,3.514,1441,4.698,1562,3.328,1609,2.522,1610,5.04,1611,4.373,1612,2.419,1613,3.729,1614,3.729,1616,4.01,1619,3.272,1620,4.373,1623,3.459,2005,3.854,2006,3.854,2177,2.057,2398,3.128,2636,2.433,2642,2.491]],["component/116",[7,0.401]],["title/117-1",[3,31.597,56,36.704]],["name/117-1",[]],["text/117-1",[]],["component/117-1",[]],["title/117-2",[5,31.842,547,33.151]],["name/117-2",[]],["text/117-2",[]],["component/117-2",[]],["title/117-3",[136,23.734]],["name/117-3",[]],["text/117-3",[]],["component/117-3",[]],["title/117-4",[406,25.824,430,52.609]],["name/117-4",[]],["text/117-4",[]],["component/117-4",[]],["title/117-5",[547,28.52,1434,37.312,1624,63.552]],["name/117-5",[]],["text/117-5",[]],["component/117-5",[]],["title/117-6",[161,35.339]],["name/117-6",[]],["text/117-6",[]],["component/117-6",[]],["title/117-7",[183,30.892,1625,55.481]],["name/117-7",[]],["text/117-7",[]],["component/117-7",[]],["title/117-8",[42,29.179,502,29.437,1625,47.73]],["name/117-8",[]],["text/117-8",[]],["component/117-8",[]],["title/117-9",[191,29.399,311,40.574]],["name/117-9",[]],["text/117-9",[]],["component/117-9",[]],["title/117-10",[84,16.101,351,37.219,1626,55.762]],["name/117-10",[]],["text/117-10",[]],["component/117-10",[]],["title/117-11",[694,39.481,1526,46.175,1527,46.175]],["name/117-11",[]],["text/117-11",[]],["component/117-11",[]],["title/117-12",[355,49.513,1627,59.325]],["name/117-12",[]],["text/117-12",[]],["component/117-12",[]],["title/117-13",[1628,88.192]],["name/117-13",[]],["text/117-13",[]],["component/117-13",[]],["title/117-14",[729,48.06,1627,59.325]],["name/117-14",[]],["text/117-14",[]],["component/117-14",[]],["title/117-15",[729,48.06,1629,62.461]],["name/117-15",[]],["text/117-15",[]],["component/117-15",[]],["title/117-16",[32,26.708,35,35.374,1627,51.038]],["name/117-16",[]],["text/117-16",[]],["component/117-16",[]],["title/117-17",[32,26.708,35,35.374,1629,53.736]],["name/117-17",[]],["text/117-17",[]],["component/117-17",[]],["title/117-18",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/117-18",[]],["text/117-18",[]],["component/117-18",[]],["title/117-19",[8,16.222,746,27.183,1005,22.733]],["name/117-19",[]],["text/117-19",[]],["component/117-19",[]],["title/117-20",[8,18.856,150,32.262]],["name/117-20",[]],["text/117-20",[]],["component/117-20",[]],["title/117-21",[1255,32.348,1457,33.624]],["name/117-21",[]],["text/117-21",[]],["component/117-21",[]],["title/117",[311,30.628,678,33.45,1609,35.079,1630,55.762]],["name/117",[547,0.41,1612,0.551,1631,0.758]],["text/117",[0,0.327,2,0.707,3,0.726,5,0.732,6,0.594,8,1.277,10,0.488,15,0.331,17,1.889,18,0.287,20,1.272,24,0.95,29,0.685,30,1.705,31,0.958,32,1.102,34,1.538,35,2.629,36,1.56,38,0.972,40,0.91,42,1,45,1.765,57,1.265,58,1.082,68,0.375,71,0.642,74,0.511,75,0.487,79,1.422,84,1.091,85,0.979,87,0.4,88,0.195,90,0.553,91,0.7,99,0.31,101,1.71,103,0.473,104,1.35,105,0.738,110,0.811,113,1.164,115,1.556,117,0.501,118,0.211,119,3.562,121,1.976,122,1.166,125,1.638,127,0.406,129,0.298,130,0.382,133,0.737,134,1.541,135,0.264,136,0.457,138,1.218,139,0.978,143,0.347,146,0.338,147,0.406,148,0.91,150,0.269,154,0.868,155,1.547,161,1.648,164,0.742,165,0.419,168,0.629,171,1.071,172,0.967,174,0.494,178,0.331,180,0.384,182,1.097,183,1.429,186,1.196,188,1.036,189,0.359,190,0.382,191,1.503,196,2.184,200,0.419,201,0.447,203,0.378,211,0.629,214,0.244,223,0.979,224,0.875,225,0.462,227,0.419,228,1.148,231,0.438,239,1.487,243,2.971,249,0.335,251,0.312,263,0.85,265,0.426,271,0.576,275,0.878,277,0.605,278,0.38,279,2.366,280,0.289,282,0.378,283,0.375,286,0.367,293,0.395,296,1.121,300,0.817,301,1.741,304,3.053,308,1.291,311,3.278,316,0.85,319,0.266,331,0.642,349,0.648,350,0.672,351,0.286,355,4.642,357,1.285,360,0.468,375,0.412,386,1.516,390,0.572,402,0.143,404,1.808,406,1.061,413,1.465,414,0.48,430,0.438,431,1.321,432,3.793,440,0.406,446,0.322,450,1.496,451,0.323,457,0.452,459,0.395,465,0.956,482,0.384,484,1.483,487,1.197,502,1.405,514,1.519,531,0.859,536,0.92,547,3.774,549,1.139,580,1.019,583,1.272,586,0.375,593,0.305,601,0.48,604,0.968,608,0.329,613,0.468,615,0.977,617,2.877,656,0.678,659,0.473,663,0.81,665,0.331,672,0.422,678,0.707,679,1.091,681,0.817,682,0.333,683,0.937,686,0.69,687,0.434,694,0.382,695,0.314,698,0.338,705,0.43,706,0.767,708,1.218,723,0.679,729,2.224,736,0.384,745,0.868,751,1.749,754,0.277,763,0.473,773,0.412,779,0.392,783,0.48,784,1.465,790,0.352,827,0.954,834,0.438,835,0.656,851,0.591,853,0.511,859,0.389,889,0.382,917,0.468,927,0.48,963,0.331,972,0.328,982,0.422,993,0.692,998,0.452,1005,0.422,1024,0.933,1073,0.947,1075,0.365,1092,0.409,1108,2.205,1109,1.566,1122,0.473,1123,0.866,1130,0.392,1131,0.773,1138,0.848,1150,0.341,1201,1.221,1213,0.84,1219,0.426,1250,0.462,1285,0.468,1350,0.572,1416,1.075,1431,1.704,1434,0.692,1441,0.886,1456,0.278,1458,1.017,1468,0.762,1475,0.447,1483,0.292,1490,0.403,1508,0.896,1513,0.866,1515,0.48,1529,0.494,1551,0.426,1559,1.849,1596,0.52,1615,0.572,1619,2.139,1620,1.187,1625,5.071,1627,8.013,1629,5.996,1632,0.615,1633,0.615,1634,0.556,1635,0.615,1636,0.615,1637,0.615,1638,0.615,1639,1.969,1640,0.438,1641,0.997,1642,2.622,1643,0.487,1644,0.572,1645,1.698,1646,0.615,1647,1.177,1648,1.179,1649,0.615,1650,0.875,1651,0.615,1652,1.179,1653,0.615,1654,0.615,1655,1.698,1656,1.133,1657,0.615,1658,0.615,1659,0.494,1660,0.591,1661,0.473,1662,0.615,1663,0.615,1664,0.615,1665,0.572,1666,0.615,1667,1.179,1668,0.615,1669,0.908,1670,0.615,1671,0.572,1672,0.572,1673,0.615,1674,0.615,1675,0.615,1676,0.615,1677,0.615,1678,0.615,1679,0.615,1680,0.615,1681,0.556,1682,0.487,1683,0.615,1684,0.615,1685,0.615,1686,5.001,1687,0.615,1688,0.556,1689,0.615,1690,1.179,1691,0.502,1692,0.52,1693,0.572,1694,0.615,1695,0.615,1696,0.615,1697,0.615,1698,0.615,1699,0.615,1700,0.615,1701,0.615,1702,1.179,1703,1.698,1704,1.698,1705,0.615,1706,0.615,1707,0.615,1708,0.434,1709,1.179,1710,1.179,1711,1.179,1712,0.615,1713,0.615,1714,0.615,1715,0.494,1716,0.615,1717,0.615,1718,1.698,1719,2.178,1720,2.178,1721,1.179,1722,0.615,1723,1.179,1724,1.179,1725,0.615,1726,0.52,1727,0.442,1728,1.179,1729,1.179,1730,0.947,1731,0.615,1732,0.615,1733,1.344,1734,0.615,1735,0.344,1736,0.615,1737,1.179,1738,1.179,1739,1.179,1740,1.698,1741,0.487,1742,0.615,1743,0.615,1744,0.615,1745,0.615,1747,0.502,1748,0.591,1749,0.572,1750,0.48,1751,0.615,1752,0.572,1753,0.615,2398,0.48,3091,0.696]],["component/117",[7,0.401]],["title/118-1",[402,17.184,1456,33.432]],["name/118-1",[]],["text/118-1",[]],["component/118-1",[]],["title/118-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/118-2",[]],["text/118-2",[]],["component/118-2",[]],["title/118-3",[8,18.856,150,32.262]],["name/118-3",[]],["text/118-3",[]],["component/118-3",[]],["title/118-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/118-4",[]],["text/118-4",[]],["component/118-4",[]],["title/118-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/118-5",[]],["text/118-5",[]],["component/118-5",[]],["title/118-6",[8,16.222,746,27.183,1005,22.733]],["name/118-6",[]],["text/118-6",[]],["component/118-6",[]],["title/118-7",[1255,32.348,1457,33.624]],["name/118-7",[]],["text/118-7",[]],["component/118-7",[]],["title/118",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/118",[1612,0.793,1754,0.977]],["text/118",[5,3.061,8,1.208,13,1.617,14,2.055,17,3.636,18,2.211,26,1.993,84,3.358,88,2.697,105,3.085,118,1.623,129,2.289,136,1.911,138,3.299,139,1.765,148,1.642,155,4.009,168,2.523,214,1.874,271,2.311,308,2.013,316,2.367,391,2.503,402,1.101,406,2.482,460,2.1,470,3.279,487,2.16,514,3.147,608,2.534,617,2.722,679,2.955,686,2.885,695,2.419,708,2.646,754,2.129,963,2.544,1005,1.692,1075,4.213,1421,5.107,1468,5.506,1472,2.887,1612,2.854,1754,3.513,1755,6.649,1756,4.401,2177,2.427,2636,2.87,2642,2.939]],["component/118",[7,0.401]],["title/119-1",[402,17.184,1456,33.432]],["name/119-1",[]],["text/119-1",[]],["component/119-1",[]],["title/119-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/119-2",[]],["text/119-2",[]],["component/119-2",[]],["title/119-3",[8,18.856,150,32.262]],["name/119-3",[]],["text/119-3",[]],["component/119-3",[]],["title/119-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/119-4",[]],["text/119-4",[]],["component/119-4",[]],["title/119-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/119-5",[]],["text/119-5",[]],["component/119-5",[]],["title/119-6",[8,16.222,746,27.183,1005,22.733]],["name/119-6",[]],["text/119-6",[]],["component/119-6",[]],["title/119-7",[1255,32.348,1457,33.624]],["name/119-7",[]],["text/119-7",[]],["component/119-7",[]],["title/119",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/119",[1758,0.856,1759,0.764]],["text/119",[3,0.898,8,0.536,10,2.014,13,0.718,19,1.313,26,0.885,29,4.063,34,0.945,40,0.729,42,0.964,56,1.044,63,1.376,71,1.144,84,3.757,88,1.158,99,1.844,104,1.885,113,1.624,118,1.998,129,1.016,135,0.903,136,0.985,138,0.976,142,1.159,154,1.074,155,0.79,161,3.613,166,1.305,171,1.033,172,1.624,183,1.531,186,1.154,188,2.233,191,0.836,200,1.431,214,0.832,228,1.107,247,1.313,251,1.857,263,1.831,279,0.994,301,0.889,316,1.051,319,0.908,350,1.197,377,1.144,391,2.573,402,1.354,406,2.534,470,1.69,474,1.496,486,5.56,502,0.973,514,1.351,523,1.297,525,0.976,553,2.288,593,1.04,656,1.208,686,1.976,726,1.33,746,1.565,754,0.945,786,1.164,867,1.431,968,3.642,1005,1.309,1076,1.026,1119,1.812,1150,2.028,1195,1.297,1451,1.714,1461,2.075,1483,1.737,1487,1.714,1528,2.514,1538,2.558,1540,1.743,1544,1.496,1545,1.638,1552,1.812,1558,2.16,1585,2.493,1622,1.638,1691,1.714,1758,3.788,1759,4.53,1760,2.1,1761,1.953,1762,3.158,1763,3.31,1764,1.953,1765,1.953,1766,2.1,1767,1.953,1770,4.197,1771,1.953,1772,1.597,1773,2.1,1774,2.1,1775,3.66,1776,2.1,1777,2.1,1778,2.1,1779,1.577,1780,1.812,1781,1.899,1782,1.899,1783,1.638,1784,1.776,1785,2.1,1818,1.542,2177,1.078,2636,1.274,2642,1.305]],["component/119",[7,0.401]],["title/120-1",[402,17.184,1456,33.432]],["name/120-1",[]],["text/120-1",[]],["component/120-1",[]],["title/120-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/120-2",[]],["text/120-2",[]],["component/120-2",[]],["title/120-3",[1145,45.341,1483,35.06]],["name/120-3",[]],["text/120-3",[]],["component/120-3",[]],["title/120-4",[1091,43.832,1145,45.341]],["name/120-4",[]],["text/120-4",[]],["component/120-4",[]],["title/120-5",[88,20.111,468,31.469,532,44.832]],["name/120-5",[]],["text/120-5",[]],["component/120-5",[]],["title/120-6",[8,18.856,150,32.262]],["name/120-6",[]],["text/120-6",[]],["component/120-6",[]],["title/120-7",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/120-7",[]],["text/120-7",[]],["component/120-7",[]],["title/120-8",[36,25.454,88,17.646,148,19.348,161,22.344]],["name/120-8",[]],["text/120-8",[]],["component/120-8",[]],["title/120-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/120-9",[]],["text/120-9",[]],["component/120-9",[]],["title/120-10",[8,16.222,746,27.183,1005,22.733]],["name/120-10",[]],["text/120-10",[]],["component/120-10",[]],["title/120-11",[1255,32.348,1457,33.624]],["name/120-11",[]],["text/120-11",[]],["component/120-11",[]],["title/120",[161,13.854,968,30.686,1759,20.09,3092,44.672,3093,44.672,3094,31.263]],["name/120",[1759,0.531,3092,0.734,3093,0.734]],["text/120",[3,0.689,8,0.739,10,2.78,12,0.866,13,0.551,15,0.866,29,1.589,34,0.725,40,1.004,56,0.8,84,3.831,88,0.916,97,1.971,99,1.458,101,0.806,104,2.854,110,0.769,117,0.684,118,2.466,120,2.404,135,0.692,136,1.06,154,0.823,161,3.902,171,0.792,172,2.134,188,0.983,191,0.641,194,1.071,196,1.264,252,1.852,270,1.314,271,0.787,272,0.922,275,0.832,279,0.762,280,0.757,296,0.689,315,1.097,316,1.448,319,0.696,333,0.983,352,2.148,386,0.931,402,1.118,406,1.011,451,0.845,460,0.715,465,0.707,468,1.433,492,1.147,502,1.34,514,1.775,525,0.748,532,2.041,539,1.24,553,2.462,630,2.478,656,0.927,686,1.176,688,6.508,728,4.78,730,4.162,746,1.238,754,0.725,968,1.596,1005,1.035,1087,2.148,1091,0.956,1106,0.873,1107,0.892,1141,1.224,1142,1.274,1143,1.274,1145,4.411,1150,0.892,1151,4.115,1154,2.227,1169,2.862,1195,0.994,1381,1.274,1402,1.24,1434,0.946,1456,0.729,1461,0.913,1488,3.27,1489,1.389,1490,1.055,1491,2.496,1492,1.21,1493,2.496,1494,1.389,1495,2.496,1496,1.389,1498,1.126,1499,1.17,1524,1.136,1759,2.289,1780,1.389,1827,1.24,1889,1.498,2244,1.548,2356,2.324,2455,1.293,3092,3.164,3093,3.862,3094,3.562,3095,1.61,3096,1.61,3097,1.61,3098,1.61,3099,1.61,3100,1.61,3101,2.893,3102,1.61,3103,1.498,3104,2.893,3105,1.61,3106,1.61,3107,1.61,3108,1.61,3109,1.61,3110,1.61,3111,1.61,3112,1.61,3113,1.61,3114,1.61,3115,1.498,3116,1.61]],["component/120",[7,0.401]],["title/121-1",[402,17.184,1456,33.432]],["name/121-1",[]],["text/121-1",[]],["component/121-1",[]],["title/121-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/121-2",[]],["text/121-2",[]],["component/121-2",[]],["title/121-3",[8,18.856,150,32.262]],["name/121-3",[]],["text/121-3",[]],["component/121-3",[]],["title/121-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/121-4",[]],["text/121-4",[]],["component/121-4",[]],["title/121-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/121-5",[]],["text/121-5",[]],["component/121-5",[]],["title/121-6",[8,16.222,746,27.183,1005,22.733]],["name/121-6",[]],["text/121-6",[]],["component/121-6",[]],["title/121-7",[1255,32.348,1457,33.624]],["name/121-7",[]],["text/121-7",[]],["component/121-7",[]],["title/121",[1128,32.569,1558,47.283,1786,33.829]],["name/121",[1558,0.776,1786,0.798]],["text/121",[3,0.712,5,2.951,6,0.839,8,1.033,10,2.042,14,0.723,15,0.895,17,2.103,26,0.702,29,3.272,30,1.346,32,0.7,40,1.405,49,1.21,56,0.827,63,1.954,84,3.722,88,2.317,99,0.839,101,1.492,105,0.723,113,0.739,117,0.707,118,2.349,121,0.963,129,0.806,130,1.035,135,2.119,136,1.089,138,1.881,155,0.626,161,1.975,168,0.888,169,0.988,181,1.251,183,1.247,196,0.727,203,1.022,211,0.888,228,2.133,251,1.513,271,1.978,278,1.028,279,0.788,280,0.783,311,1.638,316,0.833,319,0.72,320,0.994,350,0.949,395,1.091,402,0.942,406,2.394,408,0.911,420,1.21,421,0.94,459,1.069,461,1.382,470,1.377,486,4.044,514,2.994,525,0.774,531,0.842,552,0.703,558,1.186,593,0.825,608,0.892,615,0.958,618,1.236,665,1.603,670,0.923,679,1.241,684,0.874,686,1.211,695,0.851,726,1.888,746,1.275,754,0.749,774,1.154,779,1.061,865,0.919,893,1.125,896,3.743,903,0.973,1005,1.067,1017,1.175,1075,0.988,1076,0.814,1106,1.617,1107,1.652,1128,0.973,1150,3.142,1214,1.164,1390,1.048,1434,1.751,1453,1.549,1461,0.944,1465,1.337,1469,1.116,1483,0.79,1517,2.239,1524,1.175,1528,1.144,1537,1.337,1538,2.084,1543,2.475,1544,2.123,1545,1.299,1551,1.154,1555,2.031,1556,1.913,1558,4.041,1565,1.337,1585,2.031,1590,1.337,1726,2.521,1759,0.968,1787,2.63,1788,1.549,1789,1.469,1790,1.299,1791,1.506,1792,1.665,1793,1.665,1794,1.382,1795,2.63,1796,1.469,1797,1.549,1798,1.469,1799,1.469,1800,1.469,1801,1.382,1802,1.382,1803,1.337,1804,1.469,1805,1.382,1806,1.408,1807,1.299,1808,1.337,1809,1.382,1810,1.549,1811,1.382,1812,1.469,1813,1.382,1815,2.773,1817,1.549,1818,1.223,2177,0.854,2211,1.359,2352,2.295,2613,1.408,2629,1.506,2636,1.01,2642,1.035,2736,1.408,3117,1.506,3118,1.506,3119,1.506,3120,1.506,3121,1.665]],["component/121",[7,0.401]],["title/122-1",[402,17.184,1456,33.432]],["name/122-1",[]],["text/122-1",[]],["component/122-1",[]],["title/122-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/122-2",[]],["text/122-2",[]],["component/122-2",[]],["title/122-3",[8,18.856,150,32.262]],["name/122-3",[]],["text/122-3",[]],["component/122-3",[]],["title/122-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/122-4",[]],["text/122-4",[]],["component/122-4",[]],["title/122-5",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/122-5",[]],["text/122-5",[]],["component/122-5",[]],["title/122-6",[8,16.222,746,27.183,1005,22.733]],["name/122-6",[]],["text/122-6",[]],["component/122-6",[]],["title/122-7",[1255,32.348,1457,33.624]],["name/122-7",[]],["text/122-7",[]],["component/122-7",[]],["title/122",[1128,32.569,1786,33.829,1819,55.503]],["name/122",[1786,0.798,1819,0.911]],["text/122",[3,1.041,5,3.513,6,0.671,8,1.061,10,2.471,14,1.806,17,2.546,18,0.622,26,0.561,29,2.915,30,1.518,32,2.035,34,0.599,36,0.608,40,1.443,42,0.611,56,1.21,79,1.949,84,3.637,88,2.394,94,1.494,99,0.671,101,0.666,105,0.578,112,0.632,117,1.033,118,2.048,125,0.638,129,0.644,134,0.912,135,2.082,136,1.119,138,1.563,144,0.594,146,0.731,148,0.462,150,0.581,154,0.681,155,0.501,158,1.331,161,2.18,169,0.79,172,0.591,183,1.739,194,1.619,196,1.816,199,0.817,203,0.817,211,0.71,221,0.922,228,1.283,234,0.778,251,0.676,254,1.702,267,0.79,271,2.366,279,0.63,280,0.626,301,0.564,311,1.337,320,0.794,336,1.238,388,0.817,401,0.628,402,0.967,406,2.395,408,0.728,414,1.039,420,0.967,431,0.808,455,0.688,458,0.86,465,1.069,470,1.124,486,3.829,502,1.926,508,0.803,514,2.204,520,0.967,531,0.673,547,0.597,549,1.273,552,0.562,557,0.803,558,0.948,577,2.053,615,1.935,618,0.988,647,0.843,656,0.766,665,0.716,670,0.738,679,0.554,682,0.722,684,0.699,686,1.367,695,0.681,726,2.13,746,1.041,754,0.599,772,0.832,779,0.848,788,0.812,835,0.741,893,0.899,896,3.592,903,0.778,933,0.899,964,1.053,1005,0.871,1075,0.79,1106,1.32,1107,1.349,1125,1.645,1150,2.304,1168,1.025,1214,0.931,1287,0.885,1301,1.105,1352,2.148,1390,1.532,1434,0.782,1461,0.755,1469,0.892,1483,0.632,1528,0.914,1538,0.931,1543,1.105,1544,1.734,1545,1.039,1551,0.922,1555,1.658,1556,0.854,1558,2.454,1565,1.069,1585,2.291,1669,1.025,1726,2.059,1735,0.744,1759,0.774,1790,1.039,1791,1.204,1794,1.105,1801,1.105,1802,1.105,1803,1.069,1805,1.105,1807,1.039,1808,1.069,1809,1.105,1811,1.105,1813,1.105,1816,1.851,1818,0.978,1819,5.006,1820,1.238,1821,2.021,1822,3.129,1823,2.968,1824,1.238,1825,1.238,1826,1.331,1827,1.025,1828,1.331,1829,1.331,1830,1.331,1831,1.238,1832,1.238,1833,1.331,1834,1.331,1835,1.331,1836,1.331,1837,1.331,1838,1.238,1839,1.174,1840,1.331,1841,1.331,1842,1.331,1843,1.126,1844,1.238,1845,1.174,1846,1.012,1847,1.238,1848,1.238,1849,1.069,1850,2.435,1851,2.148,1852,0.948,1853,1.238,2177,0.683,2211,1.086,2613,1.126,2636,0.808,2642,0.827,2736,1.126,3117,1.204,3118,1.204,3119,1.204,3120,1.204]],["component/122",[7,0.401]],["title/123-1",[343,64.077]],["name/123-1",[]],["text/123-1",[]],["component/123-1",[]],["title/123-2",[192,33.622,402,14.783,690,40.238]],["name/123-2",[]],["text/123-2",[]],["component/123-2",[]],["title/123-3",[402,17.184,1129,38.042]],["name/123-3",[]],["text/123-3",[]],["component/123-3",[]],["title/123-4",[402,17.184,1128,43.146]],["name/123-4",[]],["text/123-4",[]],["component/123-4",[]],["title/123-5",[311,34.906,402,14.783,1609,39.979]],["name/123-5",[]],["text/123-5",[]],["component/123-5",[]],["title/123-6",[161,25.466,402,14.783,1759,36.93]],["name/123-6",[]],["text/123-6",[]],["component/123-6",[]],["title/123-7",[264,22.343,402,14.783,1936,41.347]],["name/123-7",[]],["text/123-7",[]],["component/123-7",[]],["title/123-8",[402,17.184,1040,44.562]],["name/123-8",[]],["text/123-8",[]],["component/123-8",[]],["title/123",[7,19.043,402,17.184]],["name/123",[631,1.45]],["text/123",[3,1.83,5,1.085,8,1.092,13,1.463,14,1.094,15,1.354,17,1.825,18,2,20,1.471,23,1.184,26,2.771,29,1.726,34,2.511,40,0.874,52,2.07,56,2.126,71,1.371,77,1.478,84,1.611,88,0.797,98,1.662,104,1.297,105,1.859,110,1.203,117,1.069,118,0.864,125,2.05,128,1.486,134,2.09,135,1.839,136,1.151,144,1.124,146,3.064,148,1.936,150,1.1,151,2.991,155,0.947,158,1.377,160,1.408,161,2.636,162,1.849,163,2.228,178,1.354,183,1.789,185,1.776,192,2.264,196,1.1,221,1.745,224,1.297,248,1.312,252,1.184,255,2.567,264,2.313,275,2.212,282,1.546,286,1.502,296,1.077,297,1.449,308,1.072,311,3.613,343,1.83,391,1.332,401,1.188,402,2.709,450,1.73,465,1.879,514,2.06,531,1.273,547,1.13,548,1.701,620,1.528,643,2.09,647,1.594,665,1.354,678,1.51,679,1.048,680,1.322,686,1.023,690,2.709,698,1.383,719,2.486,728,2.462,729,1.638,865,2.36,906,2.342,931,1.891,972,1.343,1040,2.581,1128,2.499,1129,4.401,1306,2.09,1468,1.627,1477,1.449,1484,3.252,1555,2.914,1558,1.486,1609,4.138,1610,1.65,1611,1.76,1692,2.129,1708,1.776,1755,1.964,1758,1.638,1759,3.242,1779,1.891,1819,1.745,1821,2.09,1936,1.638,1937,2.342,1940,2.342,1942,1.616,1943,2.129,1944,3.979,1945,1.688,1946,2.09,2234,3.385,2477,1.914,2673,1.992,3092,2.022,3093,2.022,3122,2.518,3123,2.518,3124,2.518,3125,2.518,3126,2.518]],["component/123",[7,0.401]],["title/124-1",[402,17.184,1456,33.432]],["name/124-1",[]],["text/124-1",[]],["component/124-1",[]],["title/124-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/124-2",[]],["text/124-2",[]],["component/124-2",[]],["title/124-3",[8,18.856,150,32.262]],["name/124-3",[]],["text/124-3",[]],["component/124-3",[]],["title/124-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/124-4",[]],["text/124-4",[]],["component/124-4",[]],["title/124-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/124-5",[]],["text/124-5",[]],["component/124-5",[]],["title/124-6",[8,16.222,746,27.183,1005,22.733]],["name/124-6",[]],["text/124-6",[]],["component/124-6",[]],["title/124-7",[1255,32.348,1457,33.624]],["name/124-7",[]],["text/124-7",[]],["component/124-7",[]],["title/124",[23,26.157,40,11.996,264,19.556,547,15.516,1936,22.493,2073,27.766,2199,26.615]],["name/124",[23,0.329,264,0.246,2073,0.562,2199,0.539]],["text/124",[23,5.362,40,3.956,117,4.275,134,2.382,136,1.712,144,2.838,252,4.736,264,2.236,267,3.774,268,7.019,401,3,402,1.479,459,4.081,484,5.987,642,5.19,681,4.406,683,3.509,1456,2.878,1472,3.881,1490,4.168,1936,4.138,2199,8.778,2234,6.954,3127,5.751]],["component/124",[7,0.401]],["title/125-1",[402,17.184,1456,33.432]],["name/125-1",[]],["text/125-1",[]],["component/125-1",[]],["title/125-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/125-2",[]],["text/125-2",[]],["component/125-2",[]],["title/125-3",[8,18.856,150,32.262]],["name/125-3",[]],["text/125-3",[]],["component/125-3",[]],["title/125-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/125-4",[]],["text/125-4",[]],["component/125-4",[]],["title/125-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/125-5",[]],["text/125-5",[]],["component/125-5",[]],["title/125-6",[8,16.222,746,27.183,1005,22.733]],["name/125-6",[]],["text/125-6",[]],["component/125-6",[]],["title/125-7",[1255,32.348,1457,33.624]],["name/125-7",[]],["text/125-7",[]],["component/125-7",[]],["title/125",[13,21.665,14,17.712,105,17.712,264,22.28,1936,26.525]],["name/125",[13,0.312,14,0.397,264,0.321]],["text/125",[13,3.774,14,4.796,23,3.106,40,2.292,117,4.361,134,2.474,136,1.778,144,2.948,252,4.831,264,2.322,267,3.92,268,7.132,401,3.116,402,1.537,459,4.238,484,6.145,642,5.39,681,4.577,683,3.644,1456,2.99,1472,4.031,1490,4.329,1936,4.298,2199,5.085,2234,7.138,3127,5.973]],["component/125",[7,0.401]],["title/126-1",[406,25.824,694,45.892]],["name/126-1",[]],["text/126-1",[]],["component/126-1",[]],["title/126-2",[88,27.909]],["name/126-2",[]],["text/126-2",[]],["component/126-2",[]],["title/126-3",[30,28.681,466,37.709,2624,47.184]],["name/126-3",[]],["text/126-3",[]],["component/126-3",[]],["title/126-4",[134,23.806,264,22.343,361,30.449]],["name/126-4",[]],["text/126-4",[]],["component/126-4",[]],["title/126-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/126-5",[]],["text/126-5",[]],["component/126-5",[]],["title/126-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/126-6",[]],["text/126-6",[]],["component/126-6",[]],["title/126-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/126-7",[]],["text/126-7",[]],["component/126-7",[]],["title/126-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/126-8",[]],["text/126-8",[]],["component/126-8",[]],["title/126-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/126-9",[]],["text/126-9",[]],["component/126-9",[]],["title/126-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/126-10",[]],["text/126-10",[]],["component/126-10",[]],["title/126-11",[134,23.806,466,37.709,2627,51.038]],["name/126-11",[]],["text/126-11",[]],["component/126-11",[]],["title/126-12",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/126-12",[]],["text/126-12",[]],["component/126-12",[]],["title/126-13",[32,26.708,267,37.709,466,37.709]],["name/126-13",[]],["text/126-13",[]],["component/126-13",[]],["title/126",[129,35.736,470,34.116]],["name/126",[129,0.636,470,0.607]],["text/126",[0,0.658,3,0.53,4,1.332,7,0.588,8,0.316,15,0.667,17,0.973,18,0.579,23,1.848,26,1.656,29,1.278,30,2.074,31,0.7,32,1.652,34,2.331,36,0.566,40,0.791,45,0.579,52,1.103,54,3.509,79,1.069,84,2.418,88,1.002,91,0.736,93,0.728,101,0.62,105,0.991,111,0.703,117,0.968,118,2.606,125,0.594,127,0.818,129,3.524,134,3.661,143,5.355,148,0.791,153,0.954,154,0.634,155,0.466,161,1.575,163,0.646,166,2.442,170,1.425,171,3.029,172,1.745,180,1.98,183,0.518,188,0.756,196,1.383,199,0.761,206,0.91,214,2.44,224,0.638,248,1.188,249,0.675,255,1.368,264,2.311,271,0.606,277,2.017,279,0.586,280,1.072,288,2.629,289,1.779,292,1.281,301,3.546,308,0.528,311,2.159,316,0.62,348,0.837,350,0.706,351,1.826,355,0.831,361,3.149,374,0.931,377,1.724,378,1.624,386,0.717,401,0.585,402,0.737,428,1.893,446,0.648,455,2.678,466,1.353,468,0.614,470,3.638,482,0.775,502,0.574,513,1.029,514,0.458,517,0.752,531,0.627,545,0.866,547,2.062,553,0.775,593,0.614,597,0.724,637,1.011,649,0.995,668,0.667,670,0.687,673,0.636,679,1.318,684,2.719,686,0.504,694,1.417,719,1.325,734,0.901,760,0.874,786,2.547,788,0.756,790,0.71,850,0.901,853,1.029,862,0.931,865,1.747,900,4.406,943,0.851,967,1.463,972,0.661,984,0.801,1074,1.011,1076,0.606,1101,4.279,1128,0.724,1129,0.638,1135,1.011,1136,2.576,1211,1.541,1282,4.098,1461,0.703,1483,1.865,1609,0.78,1612,0.748,1625,0.931,1643,1.804,1647,0.859,1727,1.64,1759,0.72,1784,1.048,1786,0.752,1852,0.883,1950,1.675,2018,2.278,2042,0.859,2103,1.029,2225,1.093,2257,1.093,2300,1.093,2379,1.048,2552,1.048,2619,0.859,2625,4.23,2626,3.026,2627,0.995,2630,2.543,2634,1.011,2635,2.863,2636,3.143,2637,5.569,2638,4.684,2639,4.156,2640,2.399,2641,1.121,2642,0.77,2643,1.121,2644,1.121,2645,2.062,2647,1.069,2648,1.121,2649,1.121,2650,1.121,2651,1.121,2652,2.062,2653,1.121,2654,2.062,2655,1.121,2656,1.121,2657,1.121,2658,1.029,2663,2.732,2664,1.121,2665,2.062,2666,1.121,3128,1.24]],["component/126",[7,0.401]],["title/127-1",[87,48.06,248,38.476]],["name/127-1",[]],["text/127-1",[]],["component/127-1",[]],["title/127-2",[91,29.474,96,24.349,155,18.684,465,21.81,1448,39.301]],["name/127-2",[]],["text/127-2",[]],["component/127-2",[]],["title/127-3",[10,23.093,93,32.738,96,27.333,773,37.375]],["name/127-3",[]],["text/127-3",[]],["component/127-3",[]],["title/127-4",[593,43.669]],["name/127-4",[]],["text/127-4",[]],["component/127-4",[]],["title/127",[86,33.757,1078,41.057,3129,42.269]],["name/127",[1078,0.85,3129,0.875]],["text/127",[0,3.285,6,1.463,7,0.748,8,2.2,10,1.997,12,1.561,23,1.365,26,1.223,37,1.782,45,1.357,56,1.442,84,0.838,86,5.271,93,1.704,94,1.782,95,4.145,96,1.423,104,1.495,125,1.391,148,1.007,152,2.088,154,1.484,155,3.597,160,2.696,163,3.221,169,1.722,172,2.14,189,2.816,192,1.536,195,3.073,196,2.106,208,2.561,214,1.15,248,4.162,249,2.626,264,1.021,268,1.875,282,1.782,308,2.052,316,1.452,319,2.084,332,2.369,349,2.648,357,1.713,386,1.678,398,2.207,403,3.58,415,2.011,446,1.518,451,1.524,465,4.198,470,2.227,502,1.345,503,2.625,517,1.761,518,2.067,531,1.468,547,1.303,556,1.815,567,2.088,597,1.696,659,2.235,682,2.614,697,1.761,698,1.594,726,1.838,745,1.484,773,1.946,834,2.067,903,2.816,963,2.593,968,1.601,970,2.048,972,1.548,976,2.331,1064,3.58,1078,3.995,1118,2.561,1400,1.609,1448,5.698,1492,3.621,1650,2.155,1669,2.235,1727,2.088,1852,2.067,2417,2.297,2443,2.561,2494,2.7,2495,2.505,2563,2.7,2586,2.265,2872,2.7,3129,7.277,3130,3.054,3131,3.054,3132,2.625,3133,3.054,3134,3.054,3135,2.331,3136,3.054,3137,3.054,3138,3.054]],["component/127",[7,0.401]],["title/128-1",[139,27.557,230,66.798]],["name/128-1",[]],["text/128-1",[]],["component/128-1",[]],["title/128-2",[8,12.679,139,18.53,264,17.464,673,25.486,743,29.164]],["name/128-2",[]],["text/128-2",[]],["component/128-2",[]],["title/128-3",[8,9.551,24,20.922,84,10.804,112,17.759,118,12.839,139,13.958,264,13.155,673,19.197]],["name/128-3",[]],["text/128-3",[]],["component/128-3",[]],["title/128-4",[8,11.431,105,19.455,139,16.706,161,17.945,670,24.816,673,22.977]],["name/128-4",[]],["text/128-4",[]],["component/128-4",[]],["title/128-5",[139,27.557,764,53.128]],["name/128-5",[]],["text/128-5",[]],["component/128-5",[]],["title/128",[139,27.557,3139,66.798]],["name/128",[139,0.491,3139,1.189]],["text/128",[0,1.664,5,2.436,8,2.125,10,1.297,12,0.658,13,0.418,15,0.658,18,0.572,19,1.958,23,1.06,24,2.871,26,0.516,29,1.837,30,1.017,31,0.691,34,1.014,40,0.425,68,0.747,84,0.905,88,0.387,102,0.694,105,2.655,112,2.161,113,1,117,0.957,118,1.335,121,0.708,125,1.501,127,0.808,134,0.459,135,0.969,136,1.225,139,4.472,146,1.238,147,0.808,148,0.425,154,0.626,161,0.49,165,0.834,168,0.653,170,0.765,190,1.4,191,0.487,195,0.78,196,0.984,205,1.81,214,2.585,224,0.63,230,3.519,238,1.693,241,1.016,248,0.638,249,0.667,253,2.134,262,1.352,263,1.947,264,3.321,275,0.633,277,0.628,278,1.934,280,0.576,282,0.751,289,0.955,293,0.785,296,2.95,308,2.185,313,3.251,316,1.128,319,1.682,341,0.734,351,0.569,353,1.988,354,0.756,377,1.227,391,1.193,402,0.729,431,0.743,434,1.138,439,1.849,441,0.775,445,0.791,451,1.183,460,0.543,465,0.99,466,0.726,468,1.116,487,1.029,514,2.086,519,0.872,531,1.14,547,0.549,552,2.169,556,0.765,583,1.317,597,0.715,603,2.448,613,0.93,617,0.704,620,0.743,665,3.709,670,0.678,673,4.016,674,0.834,679,0.509,680,1.183,682,1.222,684,1.644,695,2.625,697,0.743,698,0.672,723,2.259,741,2.497,742,0.88,743,3.015,744,0.863,764,4.961,786,0.678,788,0.747,865,1.728,871,0.856,873,0.827,909,0.88,930,1.674,933,0.827,966,0.834,967,1.446,972,0.653,976,0.983,1005,0.438,1012,0.942,1040,0.738,1066,2.884,1075,0.726,1076,1.101,1077,1.81,1099,0.955,1130,0.78,1196,1.016,1210,1.08,1398,1.988,1477,0.704,1621,1.035,1692,1.035,1749,2.914,1750,0.955,1783,0.955,1933,1.016,1942,2.497,1946,1.016,2018,0.88,2024,2.833,2042,0.848,2054,0.751,2058,1.138,2093,1.056,2097,0.968,2114,1.138,2116,0.999,2127,1.056,2131,1.138,2138,2.857,2220,1.138,2240,1.758,2293,1.138,2296,1.655,2336,1.783,2356,0.983,2409,1.138,2443,1.08,2448,2.444,2478,1.056,2566,0.814,2592,1.138,2647,1.056,2785,1.08,2817,1.08,3139,1.107,3140,1.288,3141,1.288,3142,1.288,3143,4.376,3144,1.288,3145,1.288,3146,1.288,3147,1.288,3148,1.288,3149,1.288,3150,1.288,3151,1.288,3152,1.288,3153,1.288,3154,1.107,3155,1.288,3156,1.288,3157,1.288,3158,1.288,3159,1.288,3160,1.288,3161,1.288]],["component/128",[7,0.401]],["title/129-1",[0,39.238,1,51.636]],["name/129-1",[]],["text/129-1",[]],["component/129-1",[]],["title/129-2",[9,44.029,33,33.622,552,26.841]],["name/129-2",[]],["text/129-2",[]],["component/129-2",[]],["title/129",[2,44.313,3,31.597]],["name/129",[2,0.789,3,0.563]],["text/129",[0,2.565,1,5.422,2,2.178,3,3.318,4,2.121,5,0.897,6,1.049,7,0.936,8,1.477,9,5.698,10,3.72,11,5.12,12,3.877,13,0.711,14,0.904,17,3.509,18,4.033,19,1.301,20,1.216,21,1.936,22,1.727,23,0.979,24,2.03,25,1.582,26,0.877,27,1.936,28,1.836,29,1.949,30,2.18,31,1.174,32,1.526,33,5.417,34,1.634,35,2.021,36,0.95,37,1.277,38,1.191,39,1.936,40,0.722,41,1.936,42,1.667,43,1.76,44,1.936,45,1.697,46,1.528,47,1.936,48,3.296,49,1.512,50,4.26,51,1.936,52,1.007,53,1.936,54,2.069,55,1.936,56,2.4,57,2.11,58,2.314,59,1.936,60,2.314,61,1.936,62,1.795,63,1.364,64,2.727,65,1.429,66,1.936,67,1.936,68,1.27,69,1.582,70,1.647,71,1.133,72,1.936,73,1.936,74,1.727,75,1.647,76,1.318,77,1.222,79,0.976,84,0.601,121,2.099,134,0.78,141,1.528,148,0.722,158,1.138,172,0.924,186,1.143,191,2.302,194,2.415,196,0.909,234,1.216,251,1.056,263,1.041,264,0.732,272,1.191,286,2.881,287,3.547,296,1.553,325,1.354,351,0.967,361,0.997,386,1.203,406,1.269,408,1.138,517,1.263,552,1.534,604,2.069,668,1.119,751,2.916,963,1.119,1076,1.017,1078,1.344,1249,1.698,1434,1.222,1468,1.344,1492,1.563,1498,1.455,1945,1.395,2007,1.882,2008,2.081,2009,1.836,2010,1.836,2011,6.564,2012,6.564,2013,5.785,2014,4.83,2015,2.081,2016,1.468,2017,2.081,2018,1.497,2019,2.081,2020,2.081,2021,2.081,2022,2.081,2023,2.081,2024,1.882,2025,2.081,2026,2.081,2027,2.081,2028,2.081,2029,1.882]],["component/129",[7,0.401]],["title/130-1",[211,39.397,2030,73.872]],["name/130-1",[]],["text/130-1",[]],["component/130-1",[]],["title/130-2",[3,31.597,42,33.917]],["name/130-2",[]],["text/130-2",[]],["component/130-2",[]],["title/130-3",[134,33.036]],["name/130-3",[]],["text/130-3",[]],["component/130-3",[]],["title/130-4",[88,27.909]],["name/130-4",[]],["text/130-4",[]],["component/130-4",[]],["title/130-5",[11,43.832,654,53.672]],["name/130-5",[]],["text/130-5",[]],["component/130-5",[]],["title/130-6",[52,35.736,134,27.671]],["name/130-6",[]],["text/130-6",[]],["component/130-6",[]],["title/130-7",[7,16.382,32,26.708,155,23.905]],["name/130-7",[]],["text/130-7",[]],["component/130-7",[]],["title/130-8",[86,46.845]],["name/130-8",[]],["text/130-8",[]],["component/130-8",[]],["title/130-9",[118,21.806,264,22.343,743,37.312]],["name/130-9",[]],["text/130-9",[]],["component/130-9",[]],["title/130-10",[468,43.669]],["name/130-10",[]],["text/130-10",[]],["component/130-10",[]],["title/130-11",[135,37.916]],["name/130-11",[]],["text/130-11",[]],["component/130-11",[]],["title/130-12",[136,23.734]],["name/130-12",[]],["text/130-12",[]],["component/130-12",[]],["title/130-13",[23,29.884,40,22.05,547,28.52]],["name/130-13",[]],["text/130-13",[]],["component/130-13",[]],["title/130-14",[13,25.254,105,32.092]],["name/130-14",[]],["text/130-14",[]],["component/130-14",[]],["title/130",[3,31.597,7,19.043]],["name/130",[10,0.973]],["text/130",[3,1.948,6,1.712,7,1.518,8,1.682,10,3.598,11,2.016,12,0.557,13,1.162,14,0.45,17,1.943,18,1.588,22,0.859,23,1.275,24,0.579,29,2.898,32,0.435,34,0.466,36,0.472,40,0.94,42,1.84,45,1.588,48,1.099,52,2.44,54,0.59,60,0.66,70,0.819,79,2.572,83,1.449,84,1.903,85,1.602,86,1.44,87,2.608,88,2.273,90,0.485,99,1.712,105,0.838,107,0.737,110,1.295,112,0.916,113,1.779,116,1.094,117,1.151,118,1.882,121,0.598,125,0.496,133,0.647,134,1.273,135,1.461,136,1.225,139,1.495,144,1.21,145,1.293,146,1.866,155,1.897,158,1.055,160,1.516,162,0.76,163,1.005,170,0.647,171,0.509,172,1.508,177,0.963,178,0.557,180,1.206,183,0.433,185,1.361,186,0.568,189,0.605,190,0.643,191,2.183,192,1.434,196,2.571,200,0.705,203,0.635,211,0.552,220,0.752,222,0.859,224,3.552,227,0.705,228,0.545,231,0.737,234,3.204,239,1.329,243,1.214,245,0.737,247,1.206,248,0.539,249,2.479,250,0.744,251,0.979,252,0.907,253,0.705,254,0.723,256,0.913,257,0.936,258,0.807,259,0.963,260,0.787,261,1.665,262,0.621,263,0.965,264,3.356,268,0.669,272,0.593,277,0.531,280,1.598,282,0.635,283,1.177,286,1.151,292,0.581,296,1.453,308,1.153,313,1.716,319,0.834,335,0.621,346,0.797,348,0.699,349,0.568,351,0.481,352,0.768,354,0.639,355,0.694,357,0.611,377,0.564,391,1.021,401,0.91,402,0.449,406,1.188,412,1.361,418,1.55,431,1.171,438,0.76,441,0.655,443,1.069,450,1.325,451,0.543,460,0.459,465,1.19,468,1.683,487,0.881,505,0.678,509,1.247,525,1.259,547,0.464,549,0.541,552,1.145,556,1.206,567,0.744,569,1.602,593,0.513,604,1.099,615,0.595,619,0.717,630,0.651,647,0.655,654,2.469,662,0.875,663,0.711,675,0.711,679,0.431,680,0.543,682,0.561,683,1.875,684,1.423,698,0.568,711,0.66,732,0.694,741,0.664,743,1.995,751,0.831,754,1.22,774,0.717,786,1.069,790,0.593,865,1.065,871,0.723,900,1.817,903,0.605,920,0.819,933,0.699,961,0.76,968,1.065,972,0.552,983,0.777,993,0.608,1005,0.97,1076,0.506,1091,0.614,1097,0.73,1110,0.717,1125,1.304,1130,0.66,1211,0.699,1253,0.673,1300,0.845,1413,0.859,1416,0.655,1455,1.795,1456,0.468,1477,0.595,1490,0.678,1498,1.349,1520,1.304,1561,0.787,1623,0.893,1640,0.737,1644,1.795,1647,0.717,1688,1.745,1942,0.664,1947,0.859,2010,0.913,2016,0.73,2018,1.388,2031,1.035,2032,1.035,2033,1.035,2034,1.035,2035,1.035,2036,1.035,2037,0.936,2038,1.035,2039,1.035,2040,1.035,2041,1.035,2042,0.717,2043,1.632,2045,0.807,2046,0.875,2047,0.875,2050,0.845,2051,2.354,2054,0.635,2055,2.729,2056,0.73,2057,1.035,2058,0.963,2059,1.035,2060,0.705,2061,0.936,2062,1.035,2063,0.777,2064,1.035,2066,0.936,2067,1.702,2068,0.936,2069,0.875,2070,0.963,2071,0.936,2072,0.831,2073,0.831,2074,1.035,2370,0.893,2785,0.913,3003,0.963,3154,0.936,3162,1.089,3163,1.089,3164,1.089,3165,0.893,3166,1.089,3167,1.089,3168,0.893,3169,1.089,3170,1.665,3171,0.893,3172,0.893,3173,1.089]],["component/130",[7,0.401]],["title/131-1",[684,38.775,869,56.867]],["name/131-1",[]],["text/131-1",[]],["component/131-1",[]],["title/131-2",[113,39.143]],["name/131-2",[]],["text/131-2",[]],["component/131-2",[]],["title/131-3",[7,19.043,869,56.867]],["name/131-3",[]],["text/131-3",[]],["component/131-3",[]],["title/131-4",[111,50.007]],["name/131-4",[]],["text/131-4",[]],["component/131-4",[]],["title/131-5",[113,39.143]],["name/131-5",[]],["text/131-5",[]],["component/131-5",[]],["title/131-6",[13,19.063,14,24.225,264,19.605,325,36.279]],["name/131-6",[]],["text/131-6",[]],["component/131-6",[]],["title/131",[1246,68.801]],["name/131",[1246,1.832]],["text/131",[3,2.362,7,2.951,8,1.41,10,1.419,11,3.277,12,1.843,13,2.983,14,3.79,23,1.611,26,1.444,33,2.922,38,1.962,42,1.573,48,3.147,49,2.49,62,2.957,77,2.012,80,2.44,84,2.003,88,1.748,96,1.68,102,3.132,111,4.947,113,4.529,115,2.033,125,2.646,128,2.023,129,1.658,148,1.189,158,1.874,164,2.156,186,1.882,221,2.374,236,1.525,243,3.474,252,1.611,264,2.439,301,1.451,313,4.392,314,3.187,320,2.044,325,3.593,333,2.091,344,2.844,356,3.047,384,2.957,421,1.934,443,1.899,451,1.799,509,2.214,517,2.079,520,2.49,553,3.452,593,1.697,684,2.899,869,7.179,889,2.129,963,1.843,972,3.7,1062,2.465,1221,2.957,1246,6.807,1250,2.574,1289,2.898,1421,2.465,1595,5.137,1945,2.297,2075,3.427,2076,2.395,2077,5.523,2078,5.523,2079,5.523]],["component/131",[7,0.401]],["title/132-1",[296,27.183,673,32.606,743,37.312]],["name/132-1",[]],["text/132-1",[]],["component/132-1",[]],["title/132-2",[7,16.382,134,23.806,552,26.841]],["name/132-2",[]],["text/132-2",[]],["component/132-2",[]],["title/132-3",[2080,70.826]],["name/132-3",[]],["text/132-3",[]],["component/132-3",[]],["title/132-4",[86,46.845]],["name/132-4",[]],["text/132-4",[]],["component/132-4",[]],["title/132-5",[88,27.909]],["name/132-5",[]],["text/132-5",[]],["component/132-5",[]],["title/132-6",[155,27.786,465,32.434]],["name/132-6",[]],["text/132-6",[]],["component/132-6",[]],["title/132-7",[13,21.726,14,27.609,319,27.465]],["name/132-7",[]],["text/132-7",[]],["component/132-7",[]],["title/132-8",[135,31.759,319,31.924]],["name/132-8",[]],["text/132-8",[]],["component/132-8",[]],["title/132-9",[439,37.508,708,35.536,1400,35.216]],["name/132-9",[]],["text/132-9",[]],["component/132-9",[]],["title/132",[]],["name/132",[93,0.536,94,0.561,552,0.386]],["text/132",[3,0.449,5,0.842,7,0.886,8,1.516,10,2.751,13,2.03,14,2.405,17,0.448,18,0.49,20,0.613,29,2.054,30,0.882,36,0.892,38,1.119,42,0.897,45,0.49,52,0.945,68,0.64,76,1.737,84,1.598,86,2.94,87,0.683,88,1.282,90,0.492,93,1.147,94,1.684,99,0.985,102,0.595,109,0.887,112,3.675,113,0.867,115,0.623,116,0.595,117,2.161,118,1.179,125,0.936,126,0.779,130,1.214,134,1.287,135,3.757,136,1.09,139,2.065,141,2.523,148,1.596,154,0.536,155,1.524,160,0.587,161,1.843,163,0.547,165,1.331,169,1.16,171,0.516,172,1.218,181,0.788,186,0.576,191,1.092,192,0.555,194,0.698,195,0.669,196,2.418,200,0.715,201,0.762,203,0.644,211,0.56,214,1.605,220,2.497,224,3.987,226,0.693,234,1.142,238,0.788,239,0.514,247,1.715,250,0.755,253,0.715,263,0.525,264,3.413,277,0.538,279,0.496,280,1.29,283,1.674,292,0.589,296,2.54,297,1.124,308,0.832,311,2.526,315,0.715,316,0.525,319,0.845,341,0.629,348,0.709,349,0.576,391,2.694,392,0.976,402,0.244,406,0.367,408,0.574,439,0.619,441,1.237,443,0.581,446,0.549,451,0.551,455,1.01,465,1.509,468,0.968,470,0.485,476,0.856,487,0.479,514,1.496,518,3.626,525,0.908,547,0.471,549,0.549,552,2.15,556,2.875,583,2.366,603,0.66,604,0.598,613,0.798,617,2.929,630,1.229,631,0.648,658,0.949,670,1.083,673,3.972,674,0.715,680,0.551,683,1.078,684,1.44,695,0.536,697,1.664,708,1.922,735,1.853,736,0.656,743,0.616,767,0.762,786,1.083,859,1.237,865,1.078,890,0.678,894,0.715,900,0.703,903,0.613,909,0.755,961,0.771,982,3.802,993,0.616,1005,0.699,1076,0.513,1090,0.727,1095,0.871,1139,0.721,1211,0.709,1253,1.272,1277,5.815,1400,1.083,1413,0.871,1449,0.976,1467,2.804,1490,0.688,1640,0.747,1727,0.755,1942,0.673,1945,0.703,1948,1.653,1952,1.595,2051,0.727,2054,1.2,2060,3.133,2061,0.949,2073,0.843,2076,0.733,2080,4.769,2081,0.949,2082,1.049,2083,0.843,2084,0.926,2085,1.049,2086,0.949,2087,0.949,2088,0.949,2089,0.949,2090,0.949,2091,0.949,2092,0.856,2093,1.686,2094,0.949,2095,1.049,2096,0.949,2097,0.83,2098,0.905,2099,0.976,2100,1.049,2101,1.049,2102,1.049,2103,0.871,2104,0.976,2105,1.049,2106,0.949,2107,0.949,2108,0.856,2109,0.819,2110,0.949,2111,1.954,2112,2.48,2113,1.049,2114,0.976,2115,1.049,2116,0.856,2117,1.954,2118,1.653,2119,2.551,2120,1.049,2121,1.878,2122,1.049,2123,1.049,2124,1.954,2125,2.743,2126,1.818,2127,0.905,2128,1.049,2129,1.049,2130,0.949,2131,0.976,2132,0.905,2133,1.049,2134,0.887,2135,0.843,2136,0.887]],["component/132",[7,0.401]],["title/133-1",[7,16.382,134,23.806,552,26.841]],["name/133-1",[]],["text/133-1",[]],["component/133-1",[]],["title/133-2",[7,16.382,10,26.319,552,26.841]],["name/133-2",[]],["text/133-2",[]],["component/133-2",[]],["title/133-3",[40,22.05,552,26.841,1952,51.858]],["name/133-3",[]],["text/133-3",[]],["component/133-3",[]],["title/133-4",[2080,70.826]],["name/133-4",[]],["text/133-4",[]],["component/133-4",[]],["title/133-5",[86,46.845]],["name/133-5",[]],["text/133-5",[]],["component/133-5",[]],["title/133-6",[88,27.909]],["name/133-6",[]],["text/133-6",[]],["component/133-6",[]],["title/133-7",[465,32.434,548,49.907]],["name/133-7",[]],["text/133-7",[]],["component/133-7",[]],["title/133-8",[139,32.899]],["name/133-8",[]],["text/133-8",[]],["component/133-8",[]],["title/133-9",[13,25.254,14,32.092]],["name/133-9",[]],["text/133-9",[]],["component/133-9",[]],["title/133-10",[1253,48.06,2063,55.481]],["name/133-10",[]],["text/133-10",[]],["component/133-10",[]],["title/133-11",[3,23.851,349,30.628,439,32.911,708,31.18]],["name/133-11",[]],["text/133-11",[]],["component/133-11",[]],["title/133-12",[112,26.465,113,24.75,118,19.133,972,29.739]],["name/133-12",[]],["text/133-12",[]],["component/133-12",[]],["title/133-13",[139,20.802,144,24.886,673,28.61,2137,40.104]],["name/133-13",[]],["text/133-13",[]],["component/133-13",[]],["title/133-14",[16,50.316,1400,40.934]],["name/133-14",[]],["text/133-14",[]],["component/133-14",[]],["title/133-15",[139,23.708,335,38.123,624,46.666]],["name/133-15",[]],["text/133-15",[]],["component/133-15",[]],["title/133-16",[296,21.247,391,26.28,487,22.675,680,26.073,2138,36.475]],["name/133-16",[]],["text/133-16",[]],["component/133-16",[]],["title/133-17",[13,21.726,14,27.609,88,20.111]],["name/133-17",[]],["text/133-17",[]],["component/133-17",[]],["title/133-18",[260,56.153,2063,55.481]],["name/133-18",[]],["text/133-18",[]],["component/133-18",[]],["title/133-19",[10,20.571,87,32.317,129,24.03,402,11.555,470,22.941]],["name/133-19",[]],["text/133-19",[]],["component/133-19",[]],["title/133-20",[258,57.629,260,56.153]],["name/133-20",[]],["text/133-20",[]],["component/133-20",[]],["title/133-21",[258,57.629,2139,73.872]],["name/133-21",[]],["text/133-21",[]],["component/133-21",[]],["title/133-22",[112,26.465,118,19.133,552,23.551,616,45.501]],["name/133-22",[]],["text/133-22",[]],["component/133-22",[]],["title/133-23",[26,20.927,113,22.047,264,17.464,357,29.317,552,20.98]],["name/133-23",[]],["text/133-23",[]],["component/133-23",[]],["title/133-24",[13,21.726,14,27.609,552,26.841]],["name/133-24",[]],["text/133-24",[]],["component/133-24",[]],["title/133-25",[136,15.007,603,35.079,684,29.269,1001,43.502]],["name/133-25",[]],["text/133-25",[]],["component/133-25",[]],["title/133-26",[136,10.972,514,15.054,528,23.936,603,25.648,841,26.913,1201,29.322,1621,34.473]],["name/133-26",[]],["text/133-26",[]],["component/133-26",[]],["title/133",[7,14.374,102,31.619,158,30.495,552,23.551]],["name/133",[552,0.556,1608,1.189]],["text/133",[3,0.946,4,1.008,5,0.27,6,0.315,7,0.686,8,1.063,10,0.715,13,1.185,14,1.337,16,0.426,17,0.736,23,0.811,24,2.14,26,0.727,29,1.398,30,0.541,32,0.263,33,0.634,35,0.667,36,0.547,37,1.059,38,0.358,40,1.202,42,0.792,45,2.234,52,1.489,58,0.399,63,0.41,68,0.382,79,2.101,84,2.197,86,3.085,88,1.097,90,1.037,92,0.391,96,0.307,97,0.816,104,0.322,105,0.272,110,1.828,111,0.68,112,3.058,113,1.989,115,0.371,116,0.978,117,1.903,118,1.736,125,0.3,128,0.369,134,1.679,136,1.206,138,0.557,139,2.404,141,1.624,144,0.987,148,0.599,154,0.882,155,0.649,160,0.965,161,0.691,162,0.88,163,0.899,168,0.334,169,1.024,170,1.079,171,0.308,172,0.981,178,0.645,183,0.262,185,0.441,189,1.554,190,1.374,191,1.658,192,0.331,195,0.399,196,1.671,203,0.384,208,0.552,211,0.334,214,0.475,224,0.889,226,0.413,234,0.365,239,0.307,241,0.519,243,0.394,247,2.604,248,0.624,249,0.94,250,0.45,252,1.447,253,0.426,258,2.076,260,0.476,261,0.54,262,0.719,263,0.863,264,1.681,265,0.434,267,0.711,268,1.719,271,0.586,273,0.519,275,0.62,278,0.74,279,0.296,280,1.251,282,0.384,283,0.382,296,1.917,297,0.993,301,1.467,304,0.89,317,0.446,319,0.956,324,0.465,330,0.81,331,0.341,335,0.375,337,0.54,340,0.391,346,0.482,349,0.658,354,1.065,355,1.156,356,0.345,361,1.275,374,0.47,377,0.653,378,0.446,388,0.384,391,0.913,401,0.295,402,0.716,408,0.656,424,0.88,429,0.437,430,0.446,431,0.727,439,0.707,440,0.413,443,1.225,445,0.404,446,0.327,450,0.43,451,0.629,452,0.862,455,1.978,458,0.404,465,1.168,468,0.31,470,0.554,476,0.978,483,0.566,487,2.046,506,0.47,509,0.404,514,1.765,517,0.38,518,3.404,519,0.446,523,0.386,525,0.557,528,0.704,547,0.774,548,1.494,549,1.391,552,3.328,556,2.802,575,0.45,580,1.326,583,1.008,586,0.382,593,0.594,603,0.754,604,0.357,616,0.511,619,0.83,620,0.38,622,0.47,623,1.034,624,0.459,665,0.928,668,0.645,670,1.705,673,2.452,675,0.823,676,0.43,678,1.326,679,0.718,680,2.509,681,0.434,682,0.936,683,1.468,684,1.615,686,0.701,695,0.32,697,1.341,706,0.407,708,0.67,712,0.786,723,0.69,724,1.014,732,0.803,734,0.455,735,1.166,736,1.079,738,0.519,740,0.511,741,1.707,742,0.862,745,0.32,780,1.034,781,1.489,786,0.664,788,0.731,834,0.446,841,1.46,865,0.952,889,0.745,894,0.816,903,0.7,918,0.482,930,0.465,962,0.511,963,0.336,972,1.179,973,0.923,982,0.823,985,0.399,993,0.367,1001,0.488,1008,0.983,1066,1.242,1068,0.862,1076,1.08,1090,0.434,1091,0.371,1096,0.47,1097,0.846,1108,0.871,1122,0.482,1138,0.45,1150,0.347,1155,0.47,1157,0.511,1201,0.45,1211,0.423,1253,2.49,1256,0.519,1277,4.185,1279,0.396,1400,1.474,1416,0.396,1431,0.352,1447,1.034,1461,0.355,1490,0.41,1498,0.437,1515,2.401,1516,0.511,1556,1.107,1621,0.529,1650,0.89,1661,0.482,1708,0.441,1782,1.084,1924,1.56,1950,0.459,1952,2.511,1962,0.511,1978,0.552,2018,0.862,2051,1.843,2052,0.582,2053,0.54,2054,0.384,2056,0.846,2060,0.426,2063,0.9,2080,1.386,2083,0.503,2084,1.057,2086,0.566,2087,0.566,2088,0.566,2089,0.566,2090,0.566,2091,0.566,2092,0.511,2106,0.566,2107,1.56,2108,0.511,2109,0.488,2110,0.566,2134,0.529,2135,0.503,2136,0.529,2140,0.626,2141,1.152,2142,1.199,2143,0.626,2144,0.626,2145,0.566,2146,0.626,2147,0.626,2148,0.566,2149,1.199,2150,0.552,2151,0.626,2152,0.566,2153,0.626,2154,0.626,2155,0.626,2156,0.626,2157,0.626,2158,0.626,2159,0.626,2160,1.199,2161,0.566,2162,0.626,2163,0.626,2164,0.54,2165,0.626,2166,0.582,2167,0.626,2168,0.626,2169,0.529,2170,3.465,2171,0.626,2172,0.626,2173,2.295,2174,1.199,2175,2.66,2176,1.199,2177,0.885,2178,1.199,2179,1.199,2180,1.199,2181,1.199,2182,0.626,2183,0.626,2184,0.626,2185,0.626,2186,0.626,2187,0.626,2188,0.626,2189,1.199,2190,0.626,2191,1.605,2192,0.626,2193,0.626,2194,0.47,2195,0.626,2196,0.626,2197,0.626,2198,0.626,2199,0.482,2200,0.626,2201,0.626,2202,0.626,2203,0.626,2204,0.626,2205,0.626,2206,0.626,2207,0.626,2208,0.626,2209,0.626,2210,0.626,2211,0.511,2212,0.626,2213,0.626,2214,0.626,2215,0.626,2216,0.626,2217,0.626,2218,1.199,2219,0.626,2220,0.582,2221,0.626,2222,0.626,3174,1.261,3175,0.658]],["component/133",[7,0.401]],["title/134",[158,40.398,502,34.217]],["name/134",[502,1.088]],["text/134",[134,3.739,158,5.459,251,5.065,967,6.404,1936,6.494,3176,10.501]],["component/134",[7,0.401]],["title/135-1",[2258,66.798,2259,66.798]],["name/135-1",[]],["text/135-1",[]],["component/135-1",[]],["title/135-2",[23,34.737,1619,60.278]],["name/135-2",[]],["text/135-2",[]],["component/135-2",[]],["title/135-3",[42,29.179,436,54.829,514,23.467]],["name/135-3",[]],["text/135-3",[]],["component/135-3",[]],["title/135-4",[23,34.737,1936,48.06]],["name/135-4",[]],["text/135-4",[]],["component/135-4",[]],["title/135-5",[23,29.884,521,43.287,723,25.408]],["name/135-5",[]],["text/135-5",[]],["component/135-5",[]],["title/135",[7,19.043,23,34.737]],["name/135",[23,1.104]],["text/135",[1,2.249,5,3.304,7,1.713,8,0.821,19,3.28,23,5.375,24,2.934,26,3.23,34,1.448,36,1.469,40,1.116,42,1.477,58,2.05,84,0.929,88,1.661,110,2.506,118,1.8,125,2.514,128,3.097,129,1.556,130,1.999,133,2.011,134,3.579,144,1.436,158,1.759,172,2.329,183,2.194,188,1.963,191,2.645,203,1.975,234,1.879,252,1.513,264,3.185,270,2.625,271,2.564,296,2.244,301,2.222,319,1.39,337,2.776,377,1.752,406,1.125,436,4.527,458,2.078,470,2.423,514,2.454,525,1.495,552,1.359,583,1.879,586,1.963,604,1.833,659,2.477,668,2.822,682,1.744,683,1.775,694,1.999,697,1.952,698,1.767,736,2.011,772,2.011,830,2.05,833,2.477,895,2.477,984,2.078,1004,2.27,1013,2.51,1017,2.27,1139,3.604,1168,2.477,1204,2.776,1211,4.489,1402,2.477,1499,2.338,1561,2.446,1641,2.72,1669,2.477,1727,2.314,1747,2.625,1877,2.838,2054,1.975,2056,2.27,2081,2.909,2259,4.745,2260,2.909,2261,3.217,2262,3.217,2263,3.217,2264,3.217,2265,3.217,2266,3.217,2267,3.217,2268,3.217,2269,3.217,2270,3.217,2271,3.217,2272,3.217]],["component/135",[7,0.401]],["title/136-1",[7,22.734]],["name/136-1",[]],["text/136-1",[]],["component/136-1",[]],["title/136-2",[264,25.971,522,71]],["name/136-2",[]],["text/136-2",[]],["component/136-2",[]],["title/136-3",[264,19.605,343,40.515,1750,43.502,2619,38.632]],["name/136-3",[]],["text/136-3",[]],["component/136-3",[]],["title/136-4",[4,43.146,7,19.043]],["name/136-4",[]],["text/136-4",[]],["component/136-4",[]],["title/136-5",[239,31.151,308,27.045,629,59.109]],["name/136-5",[]],["text/136-5",[]],["component/136-5",[]],["title/136-6",[191,35.099]],["name/136-6",[]],["text/136-6",[]],["component/136-6",[]],["title/136-7",[2273,88.192]],["name/136-7",[]],["text/136-7",[]],["component/136-7",[]],["title/136-8",[209,31.893,790,25.639,968,24.706,3177,47.115,3178,47.115,3179,47.115]],["name/136-8",[]],["text/136-8",[]],["component/136-8",[]],["title/136-9",[95,42.597,2282,59.109,3180,57.467]],["name/136-9",[]],["text/136-9",[]],["component/136-9",[]],["title/136-10",[94,39.007,2275,61.082,2276,63.552]],["name/136-10",[]],["text/136-10",[]],["component/136-10",[]],["title/136-11",[93,37.312,1715,51.038,2274,61.082]],["name/136-11",[]],["text/136-11",[]],["component/136-11",[]],["title/136-12",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2277,40.77,2278,40.77]],["name/136-12",[]],["text/136-12",[]],["component/136-12",[]],["title/136-13",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2279,40.77,2280,40.77]],["name/136-13",[]],["text/136-13",[]],["component/136-13",[]],["title/136-14",[8,10.407,191,16.226,854,27.77,2119,30.27,2281,37.92,2282,37.92,2283,40.77]],["name/136-14",[]],["text/136-14",[]],["component/136-14",[]],["title/136",[7,19.043,78,47.724]],["name/136",[631,1.45]],["text/136",[0,0.515,3,0.776,4,0.566,5,1.103,7,0.468,8,1.34,10,2.174,11,0.575,12,1.376,13,1.646,14,1.111,15,0.521,16,0.66,17,0.774,18,0.453,23,1.513,24,2.425,26,2.211,29,2.118,31,0.547,32,1.352,34,1.448,36,1.168,40,1.321,42,0.833,45,0.848,52,1.557,54,0.552,56,0.481,57,0.563,58,2.427,60,0.618,64,0.728,71,0.988,84,1.252,88,1.018,90,0.851,93,0.569,94,1.114,95,1.715,96,1.254,97,0.66,102,1.029,104,2.479,105,1.398,110,0.463,113,2.137,117,0.77,118,2.061,125,0.869,129,0.878,133,0.606,134,0.68,135,1.637,136,1.617,139,2.241,144,1.436,146,2.091,148,0.63,150,1.117,153,0.746,154,0.495,155,1.631,158,0.992,160,1.015,163,0.505,168,1.364,172,1.428,178,0.521,183,0.405,186,0.997,191,2.246,194,1.207,195,1.156,196,1.117,200,0.66,214,0.384,215,4.101,221,0.671,224,1.317,226,0.64,234,1.06,235,0.901,247,0.606,248,0.505,249,0.988,252,0.456,254,0.677,263,1.61,264,2.969,275,0.501,278,0.598,280,0.456,296,1.376,297,0.557,308,1.62,313,2.038,319,1.874,320,0.578,322,0.704,330,0.655,333,1.107,341,1.088,349,0.997,351,0.45,354,0.598,375,0.649,377,0.528,382,0.901,391,1.353,401,1.207,402,1.397,406,0.339,415,2.638,438,0.712,439,0.572,446,0.507,450,0.666,455,1.322,458,0.626,460,1.136,464,0.626,465,0.425,466,0.575,468,1.594,470,1.486,502,1.491,514,1.188,517,0.588,519,0.69,521,0.66,525,0.45,547,1.444,552,2.807,567,0.697,583,0.566,593,0.898,597,1.06,603,0.61,633,0.901,634,1.688,635,0.876,637,0.791,638,0.901,643,1.506,644,0.819,645,0.836,646,0.876,647,0.614,648,0.901,649,0.778,650,0.901,651,0.901,654,0.704,656,1.851,663,1.246,673,0.497,678,1.088,679,2.184,684,1.343,686,0.737,690,0.614,705,1.788,723,0.725,728,0.557,736,0.606,743,2.546,745,1.308,774,0.671,788,0.591,790,1.465,794,0.969,835,0.539,841,1.198,848,0.969,859,0.614,865,2.896,873,0.655,890,0.626,895,1.397,896,1.198,898,0.778,900,0.649,910,3.029,921,0.778,925,0.767,943,0.666,962,0.791,967,0.622,970,0.684,972,2.031,984,0.626,1005,0.649,1053,0.677,1064,0.719,1066,1.019,1073,0.778,1078,1.172,1130,1.156,1133,0.649,1134,0.737,1136,0.635,1187,0.719,1213,0.69,1253,1.18,1310,0.756,1343,0.836,1367,0.901,1394,4.033,1400,0.537,1417,0.855,1424,0.931,1431,0.544,1448,1.436,1457,0.441,1477,0.557,1483,1.527,1508,0.737,1520,0.655,1523,0.855,1533,0.728,1558,0.572,1559,0.684,1591,0.649,1610,0.635,1671,0.901,1708,0.684,1735,0.542,1754,0.719,1772,1.945,1783,0.756,1819,0.671,1843,0.819,1908,0.901,1942,1.164,1945,0.649,1947,0.804,2053,0.836,2054,1.57,2060,2.593,2076,0.677,2126,0.901,2145,0.876,2253,0.969,2289,3.218,2291,0.969,2292,0.791,2293,1.688,2294,0.876,2295,0.969,2296,1.332,2297,0.969,2298,0.969,2299,1.641,2301,0.756,2304,0.855,2305,0.969,2306,0.737,2307,1.688,2308,0.876,2309,0.704,2310,0.756,2311,0.876,2312,0.901,2545,0.901,2548,0.901,2673,0.767,3043,0.728,3129,0.644,3181,1.019,3182,1.019,3183,1.019,3184,1.019,3185,1.019,3186,1.019,3187,1.019,3188,1.019,3189,3.386,3190,1.019,3191,1.019,3192,1.019,3193,0.931,3194,0.931,3195,1.019,3196,1.019,3197,1.019,3198,1.019]],["component/136",[7,0.401]],["title/137-1",[136,15.007,191,22.192,296,23.851,552,23.551]],["name/137-1",[]],["text/137-1",[]],["component/137-1",[]],["title/137",[102,41.887,136,19.88]],["name/137",[102,1.332]],["text/137",[6,1.778,8,2.169,10,1.461,18,0.941,24,1.126,25,1.531,30,1.592,31,1.136,34,1.588,36,0.919,42,0.925,52,1.707,79,0.944,84,1.019,88,2.239,90,2.207,99,1.015,112,1.674,117,0.855,118,1.21,134,2.855,136,2.821,139,3.702,146,1.106,147,1.329,148,0.699,152,1.448,154,1.029,158,1.101,163,1.837,172,1.566,190,1.251,191,2.25,192,1.065,196,2.807,203,1.236,209,1.434,214,1.865,224,2.424,227,1.372,234,2.061,239,0.987,264,3.561,279,1.669,280,0.947,286,1.201,292,1.131,296,3.26,297,2.03,308,3.01,319,2.443,377,1.097,402,1.315,431,1.222,443,1.955,446,1.053,460,0.894,465,1.549,466,1.195,514,1.738,552,2.715,593,0.997,620,1.222,647,1.275,665,1.083,668,1.083,673,3.298,681,1.395,682,1.092,683,1.111,684,3.713,690,1.275,697,2.14,723,2.57,733,1.408,741,2.264,743,3.319,772,1.259,774,1.395,788,1.229,790,2.695,889,1.251,903,1.176,909,2.537,933,2.383,972,1.074,982,1.383,1005,2.53,1053,1.408,1066,3.176,1092,1.339,1099,1.571,1110,1.395,1150,1.116,1772,2.682,1942,1.292,2016,1.421,2043,3.981,2045,1.571,2046,1.703,2047,1.703,2050,1.643,2051,1.395,2055,1.617,2069,1.703,2072,1.617,2098,4.062,2099,1.873,2104,1.873,2138,1.479,2223,3.391,2296,1.479,2634,1.643,3154,1.821,3165,1.737,3168,1.737,3170,3.044,3171,1.737,3172,1.737,3199,1.821,3200,1.821,3201,1.821,3202,1.821,3203,1.821,3204,2.118,3205,1.821,3206,1.671]],["component/137",[7,0.401]],["title/138",[136,15.007,214,22.092,264,19.605,1005,19.947]],["name/138",[214,0.521,1005,0.471]],["text/138",[0,2.012,4,2.212,5,2.579,8,2.341,10,2.477,12,2.037,17,2.552,18,1.77,30,1.709,36,2.731,40,1.314,42,1.739,68,2.311,69,2.879,86,2.012,88,2.346,110,1.809,118,1.3,133,3.739,135,2.572,136,1.995,139,3.421,142,2.09,155,2.25,160,2.118,172,1.681,211,2.02,214,3.862,215,2.752,249,2.062,264,1.332,377,2.062,402,0.881,412,2.672,487,3.384,536,6.57,556,2.368,557,2.285,608,2.028,612,3.144,674,2.58,716,3.144,717,5.568,718,3.523,719,3.476,722,6.896,723,1.514,724,3.203,725,3.523,726,3.788,727,3.341,728,2.179,746,1.62,752,3.907,757,3.523,762,2.879,763,2.916,764,2.724,765,2.752,766,2.58,1005,3.28,1137,2.845,1166,3.091,1483,1.798,1877,3.341,2169,5.058,2304,5.277,2313,3.203,2314,3.788,2315,3.788,3129,2.519,3207,3.985,3208,3.64,3209,3.985,3210,3.64]],["component/138",[7,0.401]],["title/139",[136,23.734]],["name/139",[631,1.45]],["text/139",[5,4.01,7,2.398,34,4.186,36,4.246,136,2.503,139,4.196,155,3.499,179,6.562,214,3.686,690,5.89]],["component/139",[7,0.401]],["title/140-1",[88,23.377,142,40.753]],["name/140-1",[]],["text/140-1",[]],["component/140-1",[]],["title/140-2",[6,37.221,687,52.112]],["name/140-2",[]],["text/140-2",[]],["component/140-2",[]],["title/140-3",[123,52.609,124,56.867]],["name/140-3",[]],["text/140-3",[]],["component/140-3",[]],["title/140",[136,19.88,684,38.775]],["name/140",[684,1.233]],["text/140",[6,3.164,15,1.595,17,2.094,26,1.25,32,2.063,35,2.732,36,1.354,38,2.81,40,1.029,57,1.724,75,2.347,77,2.882,84,3.179,88,2.559,91,1.76,96,2.406,121,1.715,123,4.472,124,4.834,129,2.374,130,3.901,135,3.138,136,2.963,142,1.636,144,2.191,155,1.846,166,1.843,171,1.459,172,2.178,192,1.569,196,2.742,202,2.314,211,3.349,214,2.488,264,1.726,308,2.672,313,1.878,316,3.651,321,4.565,331,1.615,377,1.615,388,3.013,401,2.315,411,3.883,509,4.056,570,1.82,663,3.371,668,3.376,682,1.608,686,1.205,697,1.799,698,1.629,699,2.759,700,2.759,702,2.759,703,2.759,704,2.759,705,2.073,706,3.193,707,2.759,708,1.658,709,2.759,711,3.128,713,2.759,714,2.759,786,2.72,889,1.843,917,3.731,949,3.128,1092,1.973,1138,2.133,1187,2.202,1467,2.42,1661,2.283,2316,2.966,2317,2.966,2318,2.966,2319,2.966,2320,2.966,2321,2.966,2322,2.966,2323,2.966,2324,2.966,2325,4.908,2326,2.966,2327,2.966,2328,4.438,2329,3.942,2330,2.966,2331,2.966]],["component/140",[7,0.401]],["title/141-1",[729,57.377]],["name/141-1",[]],["text/141-1",[]],["component/141-1",[]],["title/141-2",[84,21.33,706,48.06]],["name/141-2",[]],["text/141-2",[]],["component/141-2",[]],["title/141-3",[514,27.277,706,48.06]],["name/141-3",[]],["text/141-3",[]],["component/141-3",[]],["title/141-4",[786,48.87]],["name/141-4",[]],["text/141-4",[]],["component/141-4",[]],["title/141-5",[1967,66.236]],["name/141-5",[]],["text/141-5",[]],["component/141-5",[]],["title/141-6",[52,30.744,350,36.208,680,33.358]],["name/141-6",[]],["text/141-6",[]],["component/141-6",[]],["title/141-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/141-7",[]],["text/141-7",[]],["component/141-7",[]],["title/141-8",[502,40.851]],["name/141-8",[]],["text/141-8",[]],["component/141-8",[]],["title/141",[136,17.103,487,29.01,680,33.358]],["name/141",[487,0.6,680,0.69]],["text/141",[4,0.88,7,0.703,8,0.385,13,0.515,14,0.655,17,2.258,18,0.705,20,0.88,26,2.23,29,0.608,32,0.634,35,2.946,36,0.688,38,2.136,46,1.107,52,2.86,71,0.821,84,2.412,96,0.739,101,3.673,108,1.074,110,0.72,112,1.771,117,3.275,118,2.213,121,0.872,125,1.788,134,2.593,136,1.736,142,0.832,148,0.523,155,2.224,157,2.224,161,0.604,163,0.785,164,0.948,165,1.027,170,0.942,171,1.341,172,2.349,178,0.811,180,0.942,195,0.961,196,1.998,214,1.08,226,1.799,239,0.739,245,1.074,247,0.942,248,1.42,250,1.084,252,1.755,255,2.744,263,2.648,275,1.409,277,1.914,279,0.713,280,1.282,297,2.147,301,2.731,315,1.027,319,1.178,327,1.211,331,2.032,340,0.942,346,1.16,347,1.211,351,0.7,375,1.01,377,1.484,378,1.074,386,0.872,391,1.974,395,0.988,398,1.146,418,1.211,430,1.074,439,0.89,446,0.788,451,0.791,452,1.084,455,3.795,458,1.761,465,0.662,487,3.522,505,0.988,508,1.644,514,1.378,525,2.125,547,0.677,583,1.592,596,0.988,597,0.88,604,2.126,608,0.807,622,2.802,665,0.811,673,1.399,679,3.693,680,4.99,682,0.817,683,1.504,686,1.516,689,1.063,698,0.828,705,1.054,708,0.843,712,2.998,729,0.981,730,2.802,731,2.189,732,2.501,733,1.054,734,1.095,735,2.521,736,2.333,737,1.33,738,1.251,741,1.749,744,2.632,745,0.771,770,1.402,771,3.733,772,2.86,774,1.044,775,1.176,776,1.402,777,1.402,778,1.402,779,2.378,780,1.301,781,2.352,782,1.33,783,1.176,785,2.405,786,2.068,787,1.402,788,0.92,789,1.363,790,0.863,889,1.693,973,1.16,985,0.961,993,0.885,1010,1.074,1033,2.684,1066,0.847,1076,0.736,1097,1.923,1219,1.044,1400,0.835,1416,0.954,1478,1.275,1551,1.044,1640,1.074,1659,1.211,1730,1.211,1733,1.193,1933,1.251,1943,1.275,1967,1.132,1968,1.449,1969,1.301,1970,1.33,1971,2.62,1972,1.449,1973,2.405,1974,1.363,1975,1.449,1976,1.449,1977,1.449,1978,1.33,1979,1.449,1980,1.449,2051,1.044,2054,0.925,2332,1.507,2333,1.507,2334,1.507,2335,1.507,2336,1.193]],["component/141",[7,0.401]],["title/142-1",[191,22.192,296,23.851,468,27.611,552,23.551]],["name/142-1",[]],["text/142-1",[]],["component/142-1",[]],["title/142",[102,41.887,468,36.578]],["name/142",[102,1.332]],["text/142",[3,0.951,4,1.299,5,0.958,6,1.937,8,2.168,10,2.104,18,1.039,23,1.045,25,1.69,30,1.735,31,1.255,42,1.021,52,1.86,79,1.042,84,0.642,86,2.043,88,2.688,90,1.803,99,1.12,112,1.055,117,0.944,118,1.319,134,3.008,139,3.446,146,1.221,147,1.468,148,0.771,154,1.966,158,1.216,163,2.003,172,2.255,188,1.357,190,1.381,191,3.196,192,1.176,196,2.644,200,1.514,203,2.36,209,1.583,214,0.881,224,1.98,227,1.514,234,2.968,239,1.09,264,3.449,279,2.404,280,1.045,286,1.326,292,1.249,296,3.435,297,1.279,308,2.576,317,1.583,319,2.616,391,1.176,431,1.349,443,2.131,446,1.162,460,0.987,465,0.976,468,5.179,514,1.876,552,2.889,593,1.101,597,1.299,604,1.267,620,1.349,665,1.195,668,1.195,673,1.973,681,1.54,682,1.205,683,1.226,684,1.167,690,1.408,697,1.349,723,2.42,733,1.554,741,2.467,743,2.983,790,2.909,889,1.381,901,1.961,902,1.961,903,2.246,909,2.766,933,1.502,1053,1.554,1066,2.854,1078,1.436,1099,1.734,1110,1.54,1123,1.633,1174,1.514,2016,1.568,2043,4.296,2045,1.734,2046,1.88,2047,1.88,2050,1.814,2051,1.54,2054,1.365,2055,1.785,2069,1.88,2070,2.068,2072,1.785,2138,1.633,2296,1.633,2353,1.961,3129,1.479,3135,1.785,3143,3.696,3165,1.918,3168,1.918,3170,3.318,3171,1.918,3172,1.918,3199,2.01,3200,2.01,3201,2.01,3202,2.01,3203,2.01,3205,2.01,3206,1.845,3211,2.137,3212,2.137,3213,2.339,3214,2.339]],["component/142",[7,0.401]],["title/143",[468,43.669]],["name/143",[631,1.45]],["text/143",[]],["component/143",[7,0.401]],["title/144",[32,26.708,45,29.703,130,39.481]],["name/144",[45,0.615,559,1.223]],["text/144",[11,7.224,26,3.255,45,3.611,48,4.402,52,3.737,54,4.402,60,4.924,77,5.878,91,4.584,155,4.178,191,3.075,232,6.413,560,7.185,561,7.185,562,7.185,563,7.185,566,7.185,567,5.556,568,7.185]],["component/144",[7,0.401]],["title/145-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/145-1",[]],["text/145-1",[]],["component/145-1",[]],["title/145-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/145-2",[]],["text/145-2",[]],["component/145-2",[]],["title/145-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/145-3",[]],["text/145-3",[]],["component/145-3",[]],["title/145-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/145-4",[]],["text/145-4",[]],["component/145-4",[]],["title/145-5",[148,25.631,582,61.318]],["name/145-5",[]],["text/145-5",[]],["component/145-5",[]],["title/145-6",[84,9.983,136,9.304,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156,1005,12.367]],["name/145-6",[]],["text/145-6",[]],["component/145-6",[]],["title/145-7",[586,53.814]],["name/145-7",[]],["text/145-7",[]],["component/145-7",[]],["title/145",[587,73.205]],["name/145",[587,1.949]],["text/145",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303,1005,1.27]],["component/145",[7,0.401]],["title/146-1",[88,17.646,142,30.762,604,31.77,910,35.079]],["name/146-1",[]],["text/146-1",[]],["component/146-1",[]],["title/146-2",[135,23.974,191,22.192,296,23.851,552,23.551]],["name/146-2",[]],["text/146-2",[]],["component/146-2",[]],["title/146",[102,41.887,135,31.759]],["name/146",[102,1.332]],["text/146",[3,0.967,5,0.974,6,2.592,8,2.067,10,2.131,11,1.341,14,0.982,17,0.964,18,1.056,23,1.063,25,1.718,29,0.912,30,1.02,31,2.201,34,1.755,42,1.038,48,1.288,52,1.887,79,1.059,84,0.653,86,2.072,88,2.563,90,1.828,99,1.139,112,1.851,113,1.731,117,0.959,118,1.765,134,3.034,135,3.998,136,0.608,139,2.577,142,1.247,146,1.241,147,1.492,148,0.784,154,1.994,155,0.85,158,1.236,163,1.177,172,2.283,190,1.404,191,3.007,192,1.196,196,2.247,203,1.387,209,1.609,214,0.895,224,2.008,227,1.539,234,3.005,239,1.108,243,1.422,264,3.376,268,1.46,275,1.168,279,1.845,280,1.063,286,1.348,296,3.464,297,1.3,308,2.189,313,1.431,317,2.778,319,2.223,356,2.152,386,1.307,391,2.063,431,1.371,443,2.161,446,1.182,460,1.003,465,0.992,514,1.9,552,2.173,553,1.413,593,1.119,620,1.371,665,1.215,668,2.097,673,2.001,681,1.566,682,1.225,683,1.247,684,1.186,689,1.594,695,1.155,697,1.371,712,1.481,719,1.313,723,2.057,741,2.502,743,3.021,790,2.233,889,1.404,901,1.994,902,1.994,903,2.278,909,2.805,910,1.422,933,1.527,1053,1.58,1078,2.52,1106,1.225,1110,1.566,1134,1.718,2016,1.594,2043,4.35,2045,1.763,2046,1.911,2047,1.911,2050,1.844,2051,1.566,2055,1.815,2069,1.911,2072,1.815,2138,1.66,2296,1.66,2353,1.994,3129,1.503,3135,1.815,3165,1.95,3168,1.95,3170,3.365,3171,1.95,3172,1.95,3199,2.044,3200,2.044,3201,2.044,3202,2.044,3203,2.044,3205,2.044,3206,1.876,3211,2.172,3212,2.172,3215,2.378,3216,2.378,3217,2.378,3218,2.378,3219,2.378]],["component/146",[7,0.401]],["title/147-1",[406,22.217,1106,34.459,1107,35.216]],["name/147-1",[]],["text/147-1",[]],["component/147-1",[]],["title/147-2",[136,17.103,679,26.447,752,33.489]],["name/147-2",[]],["text/147-2",[]],["component/147-2",[]],["title/147-3",[42,22.807,142,27.403,143,28.034,752,26.176,2337,44.917]],["name/147-3",[]],["text/147-3",[]],["component/147-3",[]],["title/147-4",[5,21.411,42,22.807,135,21.356,138,23.078,752,26.176]],["name/147-4",[]],["text/147-4",[]],["component/147-4",[]],["title/147",[135,37.916]],["name/147",[631,1.45]],["text/147",[8,0.699,17,3.573,20,1.6,23,1.288,29,2.394,31,1.546,40,0.951,42,2.11,45,2.148,76,1.735,84,2.418,92,1.713,96,2.909,99,1.381,101,1.371,104,1.411,106,1.796,118,2.036,125,1.313,134,1.026,135,4.428,138,2.135,142,2.535,143,1.546,144,1.223,152,1.971,155,1.031,161,1.098,164,2.891,170,1.713,171,1.348,183,3.236,189,1.6,192,1.45,195,1.746,196,2.007,211,4.127,251,2.332,252,2.79,254,1.915,255,1.644,280,1.288,301,1.946,308,1.166,320,1.635,341,1.644,351,1.273,357,1.617,374,2.058,377,1.492,391,1.45,406,1.606,415,1.898,439,1.617,451,1.438,455,1.416,502,1.269,531,1.386,583,1.6,593,3.439,608,1.467,668,1.473,719,2.67,752,2.421,754,1.233,756,1.915,764,1.971,771,2.236,772,1.713,786,1.518,859,1.735,890,2.968,891,2.549,892,2.549,893,1.851,894,1.866,895,2.109,896,1.809,897,2.417,898,2.201,899,2.549,904,2.138,913,2.236,972,1.461,1075,1.626,1076,1.339,1109,1.971,1133,3.08,1150,1.518,1151,2.034,1284,2.201,1348,2.274,1389,2.274,1647,1.898,1747,2.236,2016,3.241,2130,2.478,2337,2.478,2338,2.74,2339,2.74,2340,2.74,2341,2.74,2342,2.317,2343,2.74,2344,2.74,2345,2.74,2346,2.74,2347,2.74,2348,2.201,2351,2.74,2352,2.109,2353,2.417,2356,2.201,2357,2.74,2358,2.74,2359,2.74,2360,2.74,2361,2.74,2362,2.74,2363,4.155,2364,2.74,2365,2.478,2366,2.74,2367,2.74,2368,2.74,2369,2.417,2370,2.364,2371,2.478,3220,2.883,3221,2.883,3222,2.883,3223,2.883,3224,2.883]],["component/147",[7,0.401]],["title/148-1",[45,34.526,90,34.631]],["name/148-1",[]],["text/148-1",[]],["component/148-1",[]],["title/148-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/148-2",[]],["text/148-2",[]],["component/148-2",[]],["title/148-3",[79,26.141,134,20.888,552,23.551,686,22.657]],["name/148-3",[]],["text/148-3",[]],["component/148-3",[]],["title/148-4",[84,11.772,112,19.35,139,15.209,335,24.457,429,28.498,624,29.938,673,20.918]],["name/148-4",[]],["text/148-4",[]],["component/148-4",[]],["title/148-5",[26,26.774,465,27.903,2372,48.923]],["name/148-5",[]],["text/148-5",[]],["component/148-5",[]],["title/148-6",[319,31.924,2373,60.278]],["name/148-6",[]],["text/148-6",[]],["component/148-6",[]],["title/148-7",[26,26.774,308,27.045,767,46.175]],["name/148-7",[]],["text/148-7",[]],["component/148-7",[]],["title/148-8",[106,36.54,136,15.007,137,27.802,2374,43.502]],["name/148-8",[]],["text/148-8",[]],["component/148-8",[]],["title/148-9",[86,33.757,191,25.292,296,27.183]],["name/148-9",[]],["text/148-9",[]],["component/148-9",[]],["title/148-10",[144,24.886,547,25.024,673,28.61,2137,40.104]],["name/148-10",[]],["text/148-10",[]],["component/148-10",[]],["title/148-11",[296,31.597,745,37.762]],["name/148-11",[]],["text/148-11",[]],["component/148-11",[]],["title/148-12",[135,27.323,893,42.936,2375,53.736]],["name/148-12",[]],["text/148-12",[]],["component/148-12",[]],["title/148-13",[2313,74.57]],["name/148-13",[]],["text/148-13",[]],["component/148-13",[]],["title/148-14",[84,16.101,586,34.025,672,38.3,1255,24.418]],["name/148-14",[]],["text/148-14",[]],["component/148-14",[]],["title/148",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,1253,29.136]],["name/148",[2376,2.348]],["text/148",[0,0.824,3,0.664,4,0.906,5,0.669,7,0.4,8,1.676,10,1.159,13,0.957,14,0.674,17,0.662,26,2.965,29,1.542,31,0.876,33,1.481,45,1.308,57,2.221,71,0.845,77,0.911,79,0.728,84,2.032,86,1.486,88,0.886,90,1.312,101,1.4,102,0.88,106,1.017,110,1.337,111,1.587,112,2.859,113,0.689,117,1.622,118,1.605,126,1.152,128,0.916,134,0.581,135,1.643,136,1.621,137,3.004,139,3.045,143,0.876,144,2.411,155,1.438,160,0.868,161,0.622,163,1.991,172,0.689,178,0.834,180,0.97,186,0.852,189,1.635,191,1.114,196,0.678,214,2.14,224,0.799,231,1.105,236,0.691,247,3.377,249,0.845,251,0.788,252,3.31,263,1.912,264,3.071,268,1.003,277,0.796,292,1.572,296,3.011,300,1.075,301,1.618,308,1.99,313,0.983,316,0.776,319,1.652,335,1.679,340,0.97,349,0.852,354,2.36,355,1.04,356,0.856,357,2.76,361,1.341,375,1.04,386,0.897,401,1.803,402,0.889,429,1.085,440,2.523,446,0.811,465,1.229,476,2.284,487,1.277,514,1.033,517,0.942,518,1.993,520,1.128,525,0.721,545,1.085,547,1.256,552,2.545,556,1.749,577,2.332,580,0.931,586,0.947,624,2.806,665,2.055,670,0.86,672,2.625,673,3.091,679,0.646,680,0.815,681,1.075,686,1.137,698,2.569,723,0.62,744,1.095,745,0.793,752,0.818,767,1.128,841,1.024,867,1.057,889,0.964,893,1.891,938,2.183,939,1.443,943,1.066,945,1.443,946,1.443,947,1.246,948,1.339,951,2.414,967,0.996,1066,1.572,1076,0.758,1077,1.246,1150,0.86,1174,1.057,1253,3.514,1255,0.68,1289,1.312,1291,1.18,1400,0.86,1403,1.105,1416,0.983,1421,1.116,1533,1.166,1557,1.339,1558,1.652,1610,1.017,1611,1.085,1612,1.688,1650,1.152,1708,1.095,1754,1.152,1786,1.698,1818,1.14,1855,3.119,1942,1.796,1962,3.119,2042,1.075,2063,1.166,2066,1.403,2097,1.228,2137,1.116,2138,1.14,2152,1.403,2161,2.531,2310,1.211,2311,2.531,2313,2.366,2372,2.154,2373,1.266,2374,1.211,2375,2.366,2377,1.403,2378,1.552,2379,1.312,2380,2.799,2381,1.552,2382,1.552,2383,1.552,2384,1.552,2385,1.552,2386,1.552,2387,2.154,2388,1.552,2389,1.552,2390,1.552,2391,1.312,2392,1.552,2393,1.552,2394,1.552,2395,1.552,2396,1.552,2397,1.552]],["component/148",[7,0.401]],["title/149-1",[264,19.605,296,23.851,673,28.61,743,32.738]],["name/149-1",[]],["text/149-1",[]],["component/149-1",[]],["title/149-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/149-2",[]],["text/149-2",[]],["component/149-2",[]],["title/149-3",[136,15.007,144,24.886,319,24.098,401,26.302]],["name/149-3",[]],["text/149-3",[]],["component/149-3",[]],["title/149-4",[679,26.447,754,28.6,2306,48.309]],["name/149-4",[]],["text/149-4",[]],["component/149-4",[]],["title/149-5",[678,44.313,1291,56.153]],["name/149-5",[]],["text/149-5",[]],["component/149-5",[]],["title/149-6",[139,23.708,319,27.465,1005,22.733]],["name/149-6",[]],["text/149-6",[]],["component/149-6",[]],["title/149-7",[120,38.779,319,27.465,949,40.503]],["name/149-7",[]],["text/149-7",[]],["component/149-7",[]],["title/149-8",[0,33.757,139,23.708,1066,35.699]],["name/149-8",[]],["text/149-8",[]],["component/149-8",[]],["title/149-9",[136,15.007,139,20.802,319,24.098,1005,19.947]],["name/149-9",[]],["text/149-9",[]],["component/149-9",[]],["title/149-10",[40,19.348,871,38.977,1431,31.324,2398,43.502]],["name/149-10",[]],["text/149-10",[]],["component/149-10",[]],["title/149-11",[136,12.052,249,24.386,452,32.208,1005,16.019,1403,31.893,1483,21.255]],["name/149-11",[]],["text/149-11",[]],["component/149-11",[]],["title/149",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2060,30.503]],["name/149",[2399,2.348]],["text/149",[0,0.405,5,0.329,7,0.197,8,1.727,10,0.856,13,1.382,14,0.898,15,1.414,17,1.724,18,0.677,20,1.208,23,0.681,26,0.322,29,0.834,30,0.345,32,1.699,34,0.344,35,2.471,36,0.661,37,0.469,40,0.265,45,0.357,52,0.369,54,0.435,56,0.379,63,0.5,68,0.466,77,0.448,79,0.679,84,2.075,88,0.242,93,0.448,94,0.469,95,0.971,96,1.014,101,0.725,102,0.822,103,0.588,112,1.918,113,0.918,115,0.86,118,0.497,120,1.605,125,1.506,126,0.567,128,0.451,129,0.369,134,0.543,135,0.889,136,2.125,137,2.396,139,3.111,143,0.431,144,1.174,146,0.796,154,0.39,155,0.989,160,0.81,161,0.306,163,0.398,166,0.474,171,0.375,178,0.41,180,0.477,189,0.846,190,0.474,192,1.094,195,0.923,196,1.765,214,0.819,224,1.354,228,0.402,239,0.71,243,0.48,247,4.23,248,0.398,249,1.126,251,1.335,252,1.237,255,0.458,263,1.316,264,2.526,272,0.437,275,0.395,278,0.471,282,0.469,283,1.262,286,0.455,292,0.429,296,2.582,297,0.439,301,0.876,308,1.119,317,0.544,319,2.72,324,0.567,333,0.466,340,0.477,341,0.458,351,0.355,354,0.471,374,0.573,375,0.512,377,0.416,391,0.404,398,1.101,401,0.683,402,1.197,421,0.431,424,1.931,431,0.463,440,0.957,441,0.483,443,0.803,446,1.081,451,0.761,452,1.042,455,0.395,459,0.49,465,0.335,468,1.302,470,0.353,487,0.944,492,1.473,505,0.5,508,0.461,514,1.639,517,1.255,520,0.555,523,0.471,525,0.355,531,0.733,547,0.65,549,1.081,552,1.111,577,0.466,586,0.466,597,0.446,603,0.48,604,0.435,615,0.834,617,0.439,620,1.255,665,1.112,668,0.41,670,1.146,673,2.278,678,0.869,679,1.503,680,1.086,684,1.381,686,1.804,690,0.483,705,0.534,743,1.544,744,0.539,754,2.459,755,0.613,773,0.512,783,0.596,841,0.504,854,1.409,865,1.141,871,1.838,873,0.516,894,0.52,909,0.549,910,0.48,918,1.115,931,1.088,932,1.806,933,1.397,934,2.564,936,2.081,938,0.596,940,1.31,942,0.69,947,2.112,948,0.659,949,3.063,951,0.659,958,0.673,959,0.71,963,0.41,966,0.52,967,0.93,970,1.022,974,0.659,975,1.25,982,0.995,984,0.493,993,0.448,998,1.064,1005,2.824,1010,1.032,1017,1.022,1025,0.659,1033,0.549,1040,0.874,1056,1.182,1066,1.765,1076,1.285,1078,0.493,1086,0.673,1096,0.573,1112,1.146,1125,0.516,1126,0.549,1136,0.5,1138,1.042,1146,1.182,1252,0.659,1253,1.711,1277,1.553,1290,0.71,1291,1.101,1400,2.001,1403,1.032,1416,0.483,1431,2.7,1456,0.345,1473,0.995,1483,0.688,1499,1.053,1518,0.659,1520,0.516,1521,0.659,1531,0.659,1558,1.221,1559,1.022,1561,0.58,1578,0.588,1591,1.386,1597,0.71,1610,0.95,1611,1.013,1612,1.587,1631,1.203,1708,0.539,1772,0.58,1786,0.463,1818,1.519,1819,0.529,1849,0.613,1942,1.688,1945,1.763,1955,0.71,1969,0.659,1973,0.673,2054,0.469,2056,0.539,2060,4.111,2083,0.613,2109,0.596,2116,0.623,2118,0.645,2119,0.567,2137,0.549,2169,0.645,2194,1.088,2230,0.645,2258,0.69,2286,0.734,2296,0.561,2299,1.31,2301,1.13,2306,1.999,2309,0.555,2329,1.164,2352,0.588,2365,0.69,2372,0.588,2373,1.182,2377,0.69,2387,2.78,2391,0.645,2398,1.13,2400,0.763,2401,1.348,2402,0.763,2403,0.69,2404,0.763,2405,1.449,2406,0.645,2407,0.645,2408,1.25,2409,0.71,2410,0.763,2411,0.645,2412,1.182,2413,0.623,2414,0.69,2415,1.225,2416,0.763,2417,1.636,2418,1.182,2419,1.115,2420,0.763,2421,0.645,2422,2.543,2423,0.623,2424,0.69,2425,0.69,2426,0.69,2427,0.763,2428,0.763,2429,0.71,2430,0.763,2431,0.645,2432,0.645,2433,0.69,2434,0.69,2435,0.763,2436,0.763,2437,0.763,2438,0.69,2439,0.71,2440,1.449,2441,0.763,2442,0.763,2443,0.673,2444,0.69,2445,0.673,2446,0.763,2447,0.69,2448,0.596,2449,0.763,2450,0.763,2451,0.763,2452,1.278,2453,0.763,2454,0.763,2455,0.613,2456,0.763,2457,0.659,2458,0.763,2459,0.763,2460,0.763]],["component/149",[7,0.401]],["title/150-1",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/150-1",[]],["text/150-1",[]],["component/150-1",[]],["title/150-2",[136,17.103,144,28.362,401,29.976]],["name/150-2",[]],["text/150-2",[]],["component/150-2",[]],["title/150-3",[296,31.597,3225,71]],["name/150-3",[]],["text/150-3",[]],["component/150-3",[]],["title/150-4",[308,31.436,465,32.434]],["name/150-4",[]],["text/150-4",[]],["component/150-4",[]],["title/150-5",[3129,58.657]],["name/150-5",[]],["text/150-5",[]],["component/150-5",[]],["title/150-6",[96,31.151,754,28.6,3226,61.082]],["name/150-6",[]],["text/150-6",[]],["component/150-6",[]],["title/150-7",[1483,35.06,3227,71]],["name/150-7",[]],["text/150-7",[]],["component/150-7",[]],["title/150-8",[45,26.062,319,24.098,1448,44.118,2292,45.501]],["name/150-8",[]],["text/150-8",[]],["component/150-8",[]],["title/150-9",[402,17.184,1076,36.09]],["name/150-9",[]],["text/150-9",[]],["component/150-9",[]],["title/150-10",[402,10.417,452,32.208,547,20.098,1483,21.255,1612,27.015,1631,37.173]],["name/150-10",[]],["text/150-10",[]],["component/150-10",[]],["title/150-11",[1610,41.527,1611,28.498,1612,38.229,2306,30.991,3228,32.742]],["name/150-11",[]],["text/150-11",[]],["component/150-11",[]],["title/150",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2292,36.543]],["name/150",[3229,2.471]],["text/150",[5,0.505,7,0.302,8,1.271,13,0.401,17,0.5,19,1.886,24,0.655,26,2.098,29,1.218,31,0.661,32,0.91,45,0.548,54,0.668,68,0.715,71,1.643,77,0.688,79,0.549,84,1.585,86,1.996,88,0.685,92,0.732,94,1.329,95,0.785,96,2.16,105,0.94,112,1.783,117,1.281,118,1.512,121,0.677,122,0.805,125,0.561,128,0.691,134,1.65,136,1.6,139,1.857,142,0.646,144,1.966,146,2.064,148,0.407,155,2.391,158,0.641,161,0.469,163,1.128,165,0.798,178,1.164,180,0.732,189,1.264,191,1.201,195,0.747,196,0.512,214,1.196,224,0.603,247,4.417,248,1.572,251,1.531,252,1.419,263,1.88,264,2.09,267,0.695,268,1.399,275,1.119,277,0.601,279,0.554,280,0.551,282,0.719,286,1.292,292,0.658,296,1.607,301,1.278,308,2.863,316,1.083,319,2.152,349,1.189,350,0.668,354,1.863,357,1.278,361,1.037,377,1.643,401,0.553,402,1.478,404,0.972,406,0.41,421,0.661,440,1.429,443,0.649,446,1.132,447,1.126,452,2.703,455,2.278,465,3.103,470,0.541,487,0.535,502,1.741,505,0.768,513,0.972,517,0.711,520,0.851,523,0.723,525,0.544,547,1.354,549,0.613,552,1.861,567,1.557,580,0.703,586,0.715,644,0.991,665,0.63,670,0.649,673,2.554,675,3.42,677,0.752,679,2.8,680,0.615,682,0.635,684,1.136,690,0.742,697,1.313,698,1.189,712,0.768,723,0.865,727,1.033,731,1.739,735,0.792,740,2.462,741,1.936,742,0.843,744,2.129,745,1.107,754,1.691,772,0.732,774,0.812,775,0.914,790,0.671,850,0.851,859,0.742,865,1.194,867,0.798,889,0.728,900,0.785,918,0.902,919,1.033,936,0.927,963,0.63,966,0.798,967,0.752,970,2.129,972,1.155,982,1.487,984,1.95,985,1.38,1005,1.079,1008,0.668,1040,1.306,1064,2.24,1066,1.695,1076,1.474,1078,1.399,1089,0.86,1125,0.792,1136,0.768,1144,0.902,1174,0.798,1255,0.513,1287,0.779,1400,1.2,1448,0.927,1457,0.533,1483,2.605,1610,2.887,1611,2.109,1612,3.834,1622,0.914,1631,2.505,1682,0.927,1708,0.826,1730,2.423,1752,1.09,1754,0.87,1783,0.914,1786,0.711,1843,0.991,1942,1.389,1945,0.785,1974,1.059,2042,0.812,2054,0.719,2056,0.826,2060,1.475,2108,0.956,2132,1.011,2137,1.557,2194,1.626,2230,0.991,2292,3.595,2296,0.86,2306,0.891,2401,1.09,2412,0.956,2413,1.766,2417,1.713,2418,1.766,2419,1.667,2421,0.991,2422,1.362,2423,0.956,2445,1.91,2457,1.011,2469,1.172,2493,1.033,2512,1.09,2586,0.914,2713,1.09,3129,3.954,3225,1.126,3226,1.126,3227,1.126,3228,1.739,3230,1.233,3231,1.233,3232,1.233,3233,1.233,3234,1.011,3235,1.233,3236,1.233,3237,2.278,3238,1.126,3239,1.233,3240,1.233,3241,1.233,3242,1.233,3243,1.233,3244,1.126,3245,1.233,3246,1.126,3247,1.126,3248,1.233,3249,1.233,3250,1.233,3251,1.233,3252,1.233,3253,1.233,3254,1.233,3255,1.233,3256,1.233,3257,0.972,3258,1.059,3259,1.233,3260,1.126]],["component/150",[7,0.401]],["title/151-1",[236,39.251]],["name/151-1",[]],["text/151-1",[]],["component/151-1",[]],["title/151-2",[96,36.21,679,30.741]],["name/151-2",[]],["text/151-2",[]],["component/151-2",[]],["title/151-3",[679,30.741,949,47.08]],["name/151-3",[]],["text/151-3",[]],["component/151-3",[]],["title/151-4",[32,18.821,79,20.995,84,12.931,421,25.274,455,23.149,917,34.042]],["name/151-4",[]],["text/151-4",[]],["component/151-4",[]],["title/151-5",[351,40.973]],["name/151-5",[]],["text/151-5",[]],["component/151-5",[]],["title/151-6",[980,68.801]],["name/151-6",[]],["text/151-6",[]],["component/151-6",[]],["title/151-7",[36,33.721,1005,26.424]],["name/151-7",[]],["text/151-7",[]],["component/151-7",[]],["title/151-8",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/151-8",[]],["text/151-8",[]],["component/151-8",[]],["title/151-9",[155,18.684,183,20.773,308,21.139,465,21.81,593,24.597]],["name/151-9",[]],["text/151-9",[]],["component/151-9",[]],["title/151-10",[52,35.736,1137,55.481]],["name/151-10",[]],["text/151-10",[]],["component/151-10",[]],["title/151-11",[29,25.643,287,46.666,679,26.447]],["name/151-11",[]],["text/151-11",[]],["component/151-11",[]],["title/151-12",[754,39.689]],["name/151-12",[]],["text/151-12",[]],["component/151-12",[]],["title/151-13",[3244,84.764]],["name/151-13",[]],["text/151-13",[]],["component/151-13",[]],["title/151-14",[2352,67.892]],["name/151-14",[]],["text/151-14",[]],["component/151-14",[]],["title/151-15",[96,43.229]],["name/151-15",[]],["text/151-15",[]],["component/151-15",[]],["title/151-16",[3261,92.783]],["name/151-16",[]],["text/151-16",[]],["component/151-16",[]],["title/151-17",[3262,92.783]],["name/151-17",[]],["text/151-17",[]],["component/151-17",[]],["title/151-18",[96,43.229]],["name/151-18",[]],["text/151-18",[]],["component/151-18",[]],["title/151-19",[2411,74.57]],["name/151-19",[]],["text/151-19",[]],["component/151-19",[]],["title/151-20",[96,43.229]],["name/151-20",[]],["text/151-20",[]],["component/151-20",[]],["title/151-21",[2412,71.964]],["name/151-21",[]],["text/151-21",[]],["component/151-21",[]],["title/151-22",[96,43.229]],["name/151-22",[]],["text/151-22",[]],["component/151-22",[]],["title/151-23",[2461,84.764]],["name/151-23",[]],["text/151-23",[]],["component/151-23",[]],["title/151-24",[96,43.229]],["name/151-24",[]],["text/151-24",[]],["component/151-24",[]],["title/151-25",[2413,71.964]],["name/151-25",[]],["text/151-25",[]],["component/151-25",[]],["title/151-26",[3129,58.657]],["name/151-26",[]],["text/151-26",[]],["component/151-26",[]],["title/151-27",[86,46.845]],["name/151-27",[]],["text/151-27",[]],["component/151-27",[]],["title/151-28",[96,43.229]],["name/151-28",[]],["text/151-28",[]],["component/151-28",[]],["title/151-29",[0,23.788,86,23.788,308,19.058,597,26.157,2373,36.543,3129,29.786]],["name/151-29",[]],["text/151-29",[]],["component/151-29",[]],["title/151-30",[2414,79.747]],["name/151-30",[]],["text/151-30",[]],["component/151-30",[]],["title/151-31",[96,43.229]],["name/151-31",[]],["text/151-31",[]],["component/151-31",[]],["title/151-32",[3263,92.783]],["name/151-32",[]],["text/151-32",[]],["component/151-32",[]],["title/151-33",[96,43.229]],["name/151-33",[]],["text/151-33",[]],["component/151-33",[]],["title/151",[26,31.122,679,30.741]],["name/151",[26,0.554,679,0.547]],["text/151",[0,0.1,2,0.113,3,0.081,4,0.218,5,1.678,7,0.049,8,1.721,10,0.507,14,0.082,15,0.482,17,1.786,18,0.258,19,0.345,20,0.11,22,0.309,23,0.175,24,0.594,26,0.95,29,1.57,30,0.249,31,0.6,32,1.059,34,0.327,35,0.404,36,0.902,37,0.339,38,0.316,40,0.252,42,0.171,45,0.258,52,1.219,54,0.108,56,0.185,57,0.98,63,0.587,68,0.337,71,0.918,76,0.349,79,1.871,82,0.258,84,2.702,86,1.725,88,0.877,90,0.42,91,0.112,92,1.146,96,1.908,97,0.376,98,0.125,99,1.91,101,3.644,104,0.097,105,0.316,106,0.244,108,0.134,110,0.806,111,0.211,112,0.504,113,0.472,115,0.221,117,0.839,118,1.035,120,0.747,121,0.319,122,0.499,123,0.517,124,0.287,125,0.878,127,0.125,128,0.111,129,0.18,130,0.117,133,0.454,134,1.039,135,0.526,136,0.532,138,0.569,139,2.184,141,0.139,142,0.206,143,0.952,144,0.4,145,0.25,146,0.205,148,0.48,154,0.097,155,1.306,160,0.501,161,0.291,162,0.139,163,2.027,165,0.941,166,0.859,168,0.199,169,0.221,170,0.56,171,0.756,172,0.749,179,0.263,180,0.345,183,0.943,186,0.303,188,0.115,189,0.322,190,0.66,191,0.423,192,0.197,194,0.126,196,0.925,199,0.229,200,0.254,201,0.401,203,0.229,206,0.139,209,0.134,211,0.199,214,0.355,224,0.462,225,0.28,226,0.364,228,0.099,231,0.134,238,0.414,239,2.188,243,0.347,245,0.134,246,0.163,248,0.467,249,0.3,250,0.136,251,0.621,252,0.576,254,0.627,255,2.511,262,0.331,263,2.49,264,0.43,266,0.145,267,0.327,272,0.416,275,0.872,277,1.837,278,0.23,279,0.344,280,0.862,282,0.116,283,0.547,285,0.291,286,0.535,287,1.128,289,0.291,292,0.504,293,0.239,296,0.383,297,1.449,301,2.072,304,0.277,308,0.959,309,0.167,311,0.205,313,0.12,315,0.254,316,0.449,317,0.134,319,1.144,320,0.329,322,0.772,330,0.128,331,0.998,332,0.154,333,0.115,335,0.113,340,0.118,341,0.224,347,0.583,348,0.491,349,0.303,350,0.605,351,1.663,352,0.666,353,0.167,356,0.206,357,0.22,361,0.179,377,0.488,386,0.109,391,0.292,394,0.125,395,0.587,398,0.552,401,0.423,403,0.277,404,0.157,406,0.788,408,0.103,411,0.149,415,0.131,420,0.137,421,1.116,424,0.139,430,0.265,431,0.115,432,5.102,439,0.429,440,0.808,441,0.973,442,0.139,443,0.306,445,0.122,446,0.38,450,0.13,451,0.196,455,3.922,458,1.871,465,1.049,467,0.176,468,0.979,470,0.847,474,0.757,481,0.176,482,0.345,484,0.254,487,0.086,502,0.849,505,0.124,508,1.277,509,0.469,514,1.581,517,0.335,518,0.757,521,0.376,523,0.554,525,0.416,528,0.219,531,0.537,536,0.291,547,0.248,549,0.882,552,0.449,553,0.118,556,0.233,557,0.114,570,0.55,575,0.522,577,0.547,580,0.922,581,0.567,583,1.237,586,0.443,593,0.684,596,0.244,597,0.322,598,0.167,599,0.163,601,0.147,603,0.119,604,0.212,615,0.214,617,0.884,619,0.503,621,0.673,624,0.139,625,0.154,630,0.869,652,0.773,663,0.13,665,1.138,668,0.297,670,1.467,672,0.13,673,0.373,675,1.905,676,0.256,679,1.205,682,0.102,683,0.104,684,1.935,686,0.685,689,0.389,690,0.46,696,0.154,697,0.645,698,0.303,708,0.106,711,0.352,712,1.105,717,0.414,719,0.617,723,0.674,726,0.673,730,0.142,731,0.152,732,0.25,733,0.508,735,0.128,736,1.324,741,0.121,742,0.136,744,0.389,745,1.542,752,1.651,754,2.049,760,0.133,762,1.168,763,0.145,764,0.994,766,0.254,767,0.137,771,0.304,772,0.345,773,0.25,774,1.921,775,2.259,779,0.352,783,0.147,786,0.402,788,0.115,790,0.966,827,0.106,833,0.287,834,0.134,835,0.105,841,0.125,844,0.163,854,0.254,859,0.568,861,0.112,865,0.495,867,0.495,871,0.743,873,0.373,889,0.117,893,0.128,894,0.611,896,0.701,897,0.167,900,1.03,904,0.147,907,0.666,908,0.176,909,0.268,910,0.119,913,0.304,917,0.552,918,1.298,920,0.575,921,0.443,924,0.149,925,0.149,926,0.154,927,0.147,928,0.304,929,0.144,930,0.14,931,0.142,932,0.616,933,0.128,934,0.304,936,0.437,938,0.147,943,0.499,949,1.349,950,0.309,955,0.347,956,0.176,960,0.176,961,1.239,962,0.593,963,0.297,964,0.575,965,0.834,966,0.254,967,0.785,968,0.104,969,0.176,970,0.263,971,0.176,972,0.199,973,0.559,974,0.322,975,0.773,976,0.583,977,0.176,978,0.167,979,0.176,981,0.154,982,0.13,983,0.142,984,0.579,985,0.238,987,0.988,988,0.176,989,0.322,990,0.152,991,0.154,993,0.111,994,0.163,995,0.163,996,0.163,997,0.163,998,0.405,999,0.163,1000,0.163,1001,0.147,1002,0.163,1003,0.163,1004,0.133,1005,0.55,1006,1.455,1007,0.163,1008,1.045,1009,0.163,1010,0.517,1011,0.147,1012,0.145,1013,0.147,1014,0.322,1015,0.437,1017,0.512,1018,0.163,1019,0.154,1020,0.347,1021,0.322,1022,0.709,1023,0.347,1024,0.295,1025,0.163,1026,0.176,1027,0.176,1028,0.176,1029,0.176,1031,0.14,1032,0.176,1033,1.105,1034,0.513,1035,0.176,1036,0.176,1037,0.176,1038,0.176,1039,0.176,1040,0.114,1041,0.176,1042,0.176,1043,0.176,1044,0.176,1045,0.163,1046,0.167,1047,0.999,1048,1.11,1049,0.157,1051,0.176,1052,0.176,1053,0.508,1054,0.176,1055,0.176,1056,0.154,1059,0.176,1061,0.163,1062,0.136,1063,0.322,1064,0.14,1066,1.266,1068,0.268,1069,0.176,1070,0.171,1071,0.176,1072,0.176,1073,0.152,1074,0.154,1075,0.112,1076,0.182,1077,0.299,1078,0.241,1079,0.72,1080,0.176,1082,0.154,1083,0.283,1087,0.14,1088,0.322,1089,0.274,1090,0.382,1091,0.112,1092,0.126,1093,0.329,1094,0.329,1095,0.309,1098,0.167,1103,0.329,1105,0.167,1106,0.299,1107,0.207,1108,0.271,1109,0.136,1110,0.131,1111,0.167,1112,0.149,1113,0.181,1126,0.136,1127,0.14,1134,0.283,1137,0.142,1141,0.283,1146,0.154,1150,0.207,1155,0.28,1158,0.14,1166,0.154,1168,0.145,1195,0.117,1196,0.309,1211,0.252,1219,0.621,1249,0.154,1250,0.142,1253,0.123,1258,0.167,1280,0.16,1285,0.283,1288,0.347,1291,0.144,1293,0.171,1295,0.147,1308,0.145,1312,0.181,1361,0.458,1389,0.458,1400,0.306,1416,0.46,1417,0.167,1447,0.322,1451,0.154,1477,0.109,1483,1.257,1508,0.419,1513,0.139,1515,0.147,1519,0.299,1520,0.252,1529,0.152,1533,0.28,1647,0.131,1650,0.41,1682,0.149,1730,0.853,1750,0.147,1880,0.304,1946,0.309,1947,0.157,1948,0.16,1950,0.274,1961,0.16,1970,0.167,1981,0.167,1982,0.167,1983,0.167,1984,0.167,1986,0.167,1987,0.487,1988,0.167,1989,0.487,1990,0.167,1991,0.487,1992,0.16,1993,0.487,1994,0.167,1995,0.458,1996,0.152,1997,0.181,1998,0.181,1999,0.167,2003,0.16,2007,0.171,2016,0.133,2042,0.382,2045,0.147,2054,0.116,2056,0.512,2060,0.376,2071,0.171,2093,1.056,2094,0.171,2108,0.45,2112,0.337,2119,0.14,2137,0.397,2138,1.239,2164,0.163,2173,0.322,2177,0.191,2194,0.546,2229,0.181,2230,0.16,2237,2.278,2240,0.147,2256,1.035,2296,0.274,2304,1.488,2308,0.337,2309,0.271,2310,0.291,2328,0.171,2329,0.983,2348,0.152,2352,0.425,2372,0.145,2375,0.16,2387,0.145,2391,0.16,2403,0.171,2411,0.16,2412,0.304,2413,0.304,2415,0.315,2417,0.295,2418,0.154,2419,0.145,2421,0.16,2422,0.234,2423,0.304,2424,0.337,2425,0.337,2426,0.171,2431,0.467,2432,0.315,2433,0.171,2434,0.337,2438,0.171,2439,0.176,2448,0.147,2452,0.167,2457,0.322,2463,0.726,2464,0.337,2465,0.337,2468,0.157,2472,0.373,2473,0.373,2474,0.189,2475,0.373,2476,0.189,2477,0.144,2478,0.322,2479,0.16,2480,0.373,2481,0.189,2482,0.189,2483,0.189,2484,0.171,2485,0.176,2486,0.189,2487,0.189,2488,0.337,2489,0.171,2491,0.189,2492,0.189,2493,0.167,2494,0.347,2495,0.322,2496,0.373,2497,0.189,2498,0.189,2499,0.189,2500,0.189,2501,0.171,2502,0.171,2503,0.16,2504,0.189,2505,0.189,2506,0.189,2507,0.171,2508,0.373,2509,0.373,2510,0.373,2511,1.525,2512,1.285,2513,0.373,2514,0.337,2515,0.373,2516,0.189,2517,0.373,2518,0.171,2519,0.189,2520,0.189,2521,0.189,2522,0.189,2523,0.552,2524,0.726,2525,0.189,2526,0.189,2527,0.189,2528,0.337,2529,0.189,2530,0.189,2531,0.552,2532,0.189,2533,0.552,2534,0.373,2535,0.189,2536,0.189,2537,0.189,2538,0.189,2539,0.373,2540,1.224,2541,0.189,2542,0.189,2543,0.189,2544,0.189,2545,0.347,2546,0.189,2547,0.189,2548,0.176,2549,0.189,2550,0.189,2551,0.189,2552,0.16,2553,0.189,2554,0.189,2555,0.189,2556,0.189,2557,0.189,2558,0.171,2559,0.176,2560,0.189,2561,0.373,2562,0.154,2563,0.347,2564,0.189,2565,0.726,2566,1.761,2567,1.536,2568,0.552,2569,0.896,2570,0.189,2571,0.189,2572,0.347,2573,0.189,2574,0.961,2575,0.189,2577,0.189,2578,0.189,2579,0.189,2580,0.171,2583,0.373,2584,0.373,2585,0.189,2587,0.157,2588,0.167,2589,0.171,2590,0.189,2591,0.373,2592,0.347,2593,0.176,2594,0.373,2595,0.171,2596,0.176,2597,0.189,2598,0.171,2599,0.189,2600,0.189,2601,0.189,2602,0.189,2603,0.189,2604,0.189,2605,0.189,2606,0.189,2607,0.189,2608,0.189,2609,0.189,2610,0.329,2611,0.373,2612,0.189,2613,0.16,2614,0.189,2615,0.189,2616,0.189,2617,0.189,2619,0.258,2621,0.167,2622,0.189,2663,0.163,2673,0.149,2788,0.176,2803,0.176,2874,0.176,3043,0.28,3129,1.761,3135,1.234,3206,0.157,3208,1.177,3210,0.181,3246,0.181,3264,0.392,3265,0.181,3266,0.181,3267,0.199,3268,0.199,3269,0.199,3270,0.199,3271,0.392,3272,0.392,3273,0.199,3274,0.199,3275,0.199,3276,0.199,3277,0.199,3278,0.392,3279,0.392,3280,1.118,3281,0.581,3282,0.581,3283,0.581,3284,0.199,3285,0.392,3286,0.392,3287,0.163,3288,0.392,3289,0.199,3290,0.392,3291,0.199,3292,0.764,3293,0.392,3294,0.199,3295,0.199,3296,0.199,3297,0.199,3298,0.199,3299,0.199,3300,0.199,3301,0.214,3302,0.199,3303,0.199,3304,0.199,3305,0.764,3306,0.199,3307,0.199,3308,0.199,3309,1.774,3310,0.199,3311,0.358,3312,0.392,3313,0.392,3314,0.199,3315,0.392,3316,0.199,3317,0.199,3318,0.199,3319,0.392,3320,0.392,3321,0.199,3322,0.199,3323,0.199,3324,0.199,3325,0.199,3326,0.199,3327,0.392,3328,0.199,3329,0.199,3330,0.199,3331,0.199,3332,0.199,3333,0.199,3334,0.392,3335,0.199,3336,0.199,3337,0.199,3338,0.199,3339,0.199,3340,0.199,3341,0.199,3342,0.199,3343,0.581,3344,0.199,3345,0.199,3346,0.199,3347,0.199,3348,0.199,3349,0.392,3350,0.199,3351,0.199,3352,0.199,3353,0.199,3354,0.392]],["component/151",[7,0.401]],["title/152-1",[923,82.026]],["name/152-1",[]],["text/152-1",[]],["component/152-1",[]],["title/152",[136,17.103,144,28.362,401,29.976]],["name/152",[631,1.45]],["text/152",[6,3.272,7,1.085,8,2.024,13,1.438,18,1.966,24,2.352,26,2.736,34,2.922,71,2.291,105,1.828,113,1.867,118,1.444,129,2.035,134,2.97,136,1.748,144,3.539,145,2.82,168,2.244,214,1.667,252,1.978,263,2.105,275,2.175,300,2.915,401,3.063,402,1.845,415,2.915,470,2.999,514,2.398,523,2.598,552,1.777,597,2.457,676,2.89,679,4.866,686,1.709,688,3.433,705,2.941,790,2.409,835,2.342,924,3.329,925,3.329,926,3.433,927,3.282,928,3.433,929,3.198,930,3.124,931,3.16,966,2.866,968,2.321,984,4.195,1031,3.124,1040,2.538,1116,3.913,1117,3.913,1118,5.728,1119,3.63,1120,3.913,1121,3.913,1122,3.239,1123,3.089,1124,3.913,1125,2.842,1126,3.026,1127,3.124,1136,4.255,1310,3.282,1483,1.997,1950,3.089,2018,3.026,2329,3.379,2406,3.557,2407,3.557,2623,4.207]],["component/152",[7,0.401]],["title/153-1",[86,33.757,343,46.175,1008,36.208]],["name/153-1",[]],["text/153-1",[]],["component/153-1",[]],["title/153-2",[236,39.251]],["name/153-2",[]],["text/153-2",[]],["component/153-2",[]],["title/153-3",[331,40.225,341,44.313]],["name/153-3",[]],["text/153-3",[]],["component/153-3",[]],["title/153-4",[3355,79.747]],["name/153-4",[]],["text/153-4",[]],["component/153-4",[]],["title/153-5",[3356,84.764]],["name/153-5",[]],["text/153-5",[]],["component/153-5",[]],["title/153-6",[3357,79.747]],["name/153-6",[]],["text/153-6",[]],["component/153-6",[]],["title/153-7",[3358,79.747]],["name/153-7",[]],["text/153-7",[]],["component/153-7",[]],["title/153-8",[3359,79.747]],["name/153-8",[]],["text/153-8",[]],["component/153-8",[]],["title/153-9",[3360,84.764]],["name/153-9",[]],["text/153-9",[]],["component/153-9",[]],["title/153-10",[3361,76.088]],["name/153-10",[]],["text/153-10",[]],["component/153-10",[]],["title/153-11",[191,29.399,3361,63.732]],["name/153-11",[]],["text/153-11",[]],["component/153-11",[]],["title/153-12",[3362,84.764]],["name/153-12",[]],["text/153-12",[]],["component/153-12",[]],["title/153-13",[3363,79.747]],["name/153-13",[]],["text/153-13",[]],["component/153-13",[]],["title/153-14",[3364,79.747]],["name/153-14",[]],["text/153-14",[]],["component/153-14",[]],["title/153-15",[301,31.278,3365,71]],["name/153-15",[]],["text/153-15",[]],["component/153-15",[]],["title/153-16",[191,29.399,3363,66.798]],["name/153-16",[]],["text/153-16",[]],["component/153-16",[]],["title/153-17",[1554,62.461,3366,71]],["name/153-17",[]],["text/153-17",[]],["component/153-17",[]],["title/153",[86,29.619,155,20.975,465,24.483,1008,31.77]],["name/153",[1008,1.338]],["text/153",[0,0.365,4,1.939,7,0.742,8,1.138,12,1.01,13,0.235,15,0.369,17,3.841,23,0.323,24,0.733,26,3.408,29,0.529,31,1.624,33,0.994,34,0.309,40,0.238,63,0.45,71,0.713,76,1.189,84,1.84,86,1.274,90,0.322,101,3.396,104,0.675,105,2.67,110,0.328,111,0.389,113,1.065,117,0.797,118,1.642,121,1.086,125,1.967,129,2.464,130,0.814,133,0.429,134,0.257,138,0.873,139,0.701,143,2.702,144,0.306,145,0.46,148,0.652,150,0.3,154,0.351,155,1.402,160,0.733,161,0.275,167,0.581,168,0.699,172,0.582,183,0.287,189,1.401,191,2.702,192,0.693,195,0.438,199,0.421,206,1.762,214,0.519,215,2.091,224,0.675,248,1.25,249,0.374,251,0.348,255,0.412,262,1.127,263,0.344,264,1.31,265,1.302,272,0.393,277,5.234,278,0.424,283,0.799,286,2.66,292,0.386,296,0.294,301,2.956,308,1.412,311,0.72,317,0.489,319,1.434,322,2.708,331,0.374,335,0.412,341,0.412,348,0.464,350,0.746,351,2.626,357,1.416,361,1.59,375,0.46,377,1.306,386,0.758,391,1.522,396,0.621,401,0.618,402,0.772,403,0.51,405,0.621,406,1.559,420,0.499,441,0.435,442,0.504,443,0.726,445,0.444,460,0.305,465,1.264,470,1.533,475,1.699,484,0.468,492,1.338,510,1.259,514,0.484,523,0.809,525,0.319,528,0.769,531,0.662,547,1.077,549,0.685,577,0.799,580,0.412,596,0.45,597,0.401,617,0.395,621,1.411,640,0.57,665,0.704,672,0.472,675,0.472,679,1.551,697,0.795,698,0.72,733,0.916,735,3.012,744,1.325,754,0.309,768,0.996,779,0.438,785,0.606,786,2.47,841,0.865,859,1.189,861,0.407,862,0.516,865,0.379,867,0.892,890,1.859,910,0.824,943,1.648,961,1.38,963,0.369,968,0.379,970,0.924,972,1.535,978,1.156,984,0.444,985,0.438,993,1.103,1008,5.778,1010,0.933,1011,0.536,1017,0.924,1031,0.51,1047,0.56,1053,0.916,1064,0.51,1066,0.386,1076,1.406,1099,5.138,1128,0.765,1129,0.675,1132,0.903,1133,1.929,1136,0.859,1139,0.9,1145,1.153,1195,0.424,1200,0.56,1219,1.994,1279,3.408,1280,0.581,1400,1.33,1456,0.311,1477,0.395,1483,0.326,1551,0.476,1554,1.589,1609,0.432,1612,0.414,1659,0.551,1786,0.795,1796,0.606,1852,0.933,1945,1.259,1948,1.108,2054,0.804,2067,0.606,2076,0.48,2096,1.185,2097,0.543,2138,1.762,2150,0.606,2177,2.287,2249,2.232,2281,0.639,2374,0.536,2419,1.446,2452,0.606,2468,3.094,2562,1.533,2619,1.302,2621,1.156,2636,2.491,2662,0.639,2684,0.606,2685,0.606,2756,1.219,2847,0.606,2890,0.606,3043,0.516,3129,3.184,3132,1.185,3135,1.509,3206,0.57,3247,0.66,3287,0.592,3355,2.17,3356,0.66,3357,0.621,3358,0.621,3359,1.185,3360,0.66,3361,1.621,3362,0.66,3363,1.185,3364,0.621,3365,0.66,3366,0.66,3367,0.722,3368,0.722,3369,1.378,3370,2.863,3371,1.378,3372,1.378,3373,0.722,3374,0.722,3375,0.722,3376,1.259,3377,1.31,3378,1.259,3379,1.185,3380,1.806,3381,4.32,3382,0.933,3383,1.378,3384,0.722,3385,0.66,3386,0.66,3387,1.259,3388,0.66,3389,0.66,3390,0.66,3391,0.621,3392,2.766,3393,1.259,3394,0.66,3395,1.378,3396,0.66,3397,0.66,3398,1.259,3399,0.621,3400,0.621,3401,0.722,3402,1.259,3403,0.722,3404,0.722,3405,0.66,3406,1.259,3407,0.66,3408,0.66,3409,0.66,3410,0.722,3411,0.722,3412,0.722,3413,0.592]],["component/153",[7,0.401]],["title/154-1",[236,39.251]],["name/154-1",[]],["text/154-1",[]],["component/154-1",[]],["title/154-2",[88,27.909]],["name/154-2",[]],["text/154-2",[]],["component/154-2",[]],["title/154-3",[30,28.681,466,37.709,2624,47.184]],["name/154-3",[]],["text/154-3",[]],["component/154-3",[]],["title/154-4",[134,23.806,264,22.343,361,30.449]],["name/154-4",[]],["text/154-4",[]],["component/154-4",[]],["title/154-5",[134,20.888,264,19.605,361,26.717,3413,48.109]],["name/154-5",[]],["text/154-5",[]],["component/154-5",[]],["title/154-6",[134,18.607,264,17.464,361,23.8,547,22.292,3258,44.917]],["name/154-6",[]],["text/154-6",[]],["component/154-6",[]],["title/154-7",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/154-7",[]],["text/154-7",[]],["component/154-7",[]],["title/154-8",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/154-8",[]],["text/154-8",[]],["component/154-8",[]],["title/154-9",[134,16.775,264,15.745,361,21.457,401,21.124,745,22.893,2817,39.504]],["name/154-9",[]],["text/154-9",[]],["component/154-9",[]],["title/154-10",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/154-10",[]],["text/154-10",[]],["component/154-10",[]],["title/154-11",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/154-11",[]],["text/154-11",[]],["component/154-11",[]],["title/154-12",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/154-12",[]],["text/154-12",[]],["component/154-12",[]],["title/154-13",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/154-13",[]],["text/154-13",[]],["component/154-13",[]],["title/154-14",[134,23.806,466,37.709,2627,51.038]],["name/154-14",[]],["text/154-14",[]],["component/154-14",[]],["title/154-15",[26,26.774,1772,48.309,2628,57.467]],["name/154-15",[]],["text/154-15",[]],["component/154-15",[]],["title/154-16",[859,40.238,1279,40.238,2629,57.467]],["name/154-16",[]],["text/154-16",[]],["component/154-16",[]],["title/154-17",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/154-17",[]],["text/154-17",[]],["component/154-17",[]],["title/154-18",[63,48.407,1513,54.244]],["name/154-18",[]],["text/154-18",[]],["component/154-18",[]],["title/154-19",[54,42.087,2631,66.798]],["name/154-19",[]],["text/154-19",[]],["component/154-19",[]],["title/154-20",[32,31.045,2309,53.672]],["name/154-20",[]],["text/154-20",[]],["component/154-20",[]],["title/154-21",[32,26.708,745,32.486,2309,46.175]],["name/154-21",[]],["text/154-21",[]],["component/154-21",[]],["title/154-22",[183,26.577,593,31.469,1079,51.038]],["name/154-22",[]],["text/154-22",[]],["component/154-22",[]],["title/154-23",[470,34.116,1846,56.153]],["name/154-23",[]],["text/154-23",[]],["component/154-23",[]],["title/154-24",[32,37.063]],["name/154-24",[]],["text/154-24",[]],["component/154-24",[]],["title/154-25",[36,25.454,88,17.646,129,26.976,470,25.753]],["name/154-25",[]],["text/154-25",[]],["component/154-25",[]],["title/154-26",[581,57.629,2610,65.163]],["name/154-26",[]],["text/154-26",[]],["component/154-26",[]],["title/154-27",[2632,88.192]],["name/154-27",[]],["text/154-27",[]],["component/154-27",[]],["title/154-28",[36,25.454,338,42.927,470,25.753,1846,42.387]],["name/154-28",[]],["text/154-28",[]],["component/154-28",[]],["title/154-29",[88,20.111,155,23.905,1040,38.337]],["name/154-29",[]],["text/154-29",[]],["component/154-29",[]],["title/154-30",[1255,32.348,1457,33.624]],["name/154-30",[]],["text/154-30",[]],["component/154-30",[]],["title/154",[679,30.741,1136,48.407]],["name/154",[679,0.547,1136,0.862]],["text/154",[0,0.954,2,0.173,3,0.671,4,0.634,5,0.574,6,0.284,7,0.214,8,0.768,10,0.744,13,0.098,15,0.155,17,0.86,18,0.507,19,0.18,23,0.626,24,1.579,26,2.292,29,1.14,30,0.811,31,0.318,32,2.811,34,0.599,35,0.16,36,0.379,38,0.165,40,0.288,45,0.135,52,0.401,54,1.5,57,0.631,65,0.198,68,0.344,71,0.854,79,0.842,84,1.398,86,0.3,88,1.532,91,0.335,92,1.123,93,0.169,94,0.509,96,0.141,98,0.19,101,1.218,102,0.163,105,0.125,110,0.137,111,0.163,112,0.853,113,0.696,115,0.492,117,1.765,118,1.617,120,0.176,121,0.166,122,0.198,125,1.528,127,0.548,129,2.011,133,1.261,134,2.68,135,0.243,136,0.709,138,0.134,139,0.752,141,3.053,143,2.66,144,0.484,146,0.31,147,0.19,148,0.623,153,0.222,154,0.555,155,1.618,158,0.157,160,0.744,161,1.206,163,0.565,165,0.196,166,1.385,167,0.243,168,0.153,169,0.644,170,0.519,171,0.771,172,0.797,178,0.155,180,1.393,183,0.843,186,0.31,188,0.506,190,0.179,191,1.876,192,0.152,195,0.529,196,1.543,199,0.509,200,0.384,201,0.41,205,0.231,206,0.211,214,1.119,215,1.465,221,0.199,224,0.559,228,0.152,231,0.205,238,0.623,239,0.407,240,0.216,242,0.216,243,0.181,246,0.716,247,0.353,248,2.088,249,1.214,250,0.597,251,0.421,252,0.39,253,0.196,255,0.498,262,0.173,263,1.506,264,1.355,265,0.391,267,0.171,268,0.364,271,0.878,272,0.165,275,0.688,277,1.544,278,0.178,279,0.742,280,0.626,282,0.346,283,0.176,286,0.337,287,0.211,288,0.468,289,0.225,292,0.748,293,0.185,296,0.953,297,0.477,301,1.822,308,0.667,311,0.731,313,0.525,316,0.785,319,1.379,328,0.225,330,0.194,333,0.506,335,0.941,340,0.832,345,0.468,347,0.453,348,0.194,350,0.164,351,1.036,354,0.512,355,0.378,357,0.333,360,1.012,361,1.92,374,0.216,375,0.193,377,1.214,378,0.402,379,0.239,386,0.77,393,0.277,394,0.19,395,0.37,397,0.228,401,1.42,402,0.365,406,1.553,412,0.398,413,0.248,421,0.162,428,0.689,429,0.201,430,0.205,431,0.175,432,0.666,440,0.19,441,1.411,443,0.738,446,0.15,451,0.436,452,0.207,455,2.568,460,0.368,461,0.239,464,0.364,465,0.789,466,0.492,468,0.142,470,3.493,480,0.487,482,0.18,502,1.033,505,0.544,508,0.174,509,0.536,513,0.239,514,0.745,516,0.248,517,0.342,523,0.968,525,0.134,528,0.169,531,0.549,542,0.268,547,1,549,0.434,553,0.18,557,0.174,577,0.344,580,1.21,581,0.647,583,0.329,586,0.344,590,0.228,591,0.936,593,0.776,596,0.37,597,0.634,603,0.181,604,0.164,608,0.154,615,0.166,617,0.477,619,1.397,620,0.658,630,1.13,636,0.248,637,0.46,640,0.239,641,0.487,649,0.231,660,0.26,662,0.243,665,0.446,668,0.716,670,2.952,673,1.544,674,0.384,675,0.387,679,2.64,682,0.85,683,0.159,684,1.674,686,0.989,694,0.35,696,0.46,697,1.09,698,0.31,708,0.315,711,0.183,712,1.177,716,0.689,719,0.631,723,0.226,732,0.378,734,0.209,745,0.68,752,0.297,754,0.373,760,0.203,768,0.219,772,0.519,774,0.199,779,0.36,786,1.565,788,0.506,790,1.028,827,0.162,834,0.205,841,0.716,850,0.209,853,0.239,859,0.182,861,0.335,865,1.343,889,0.515,893,0.381,894,0.196,900,1.352,903,0.168,910,0.522,913,0.235,929,0.219,930,0.214,932,0.198,937,0.196,938,0.44,943,1.234,963,0.584,964,3.931,966,0.739,967,0.532,968,0.458,972,0.71,982,0.57,983,0.216,984,0.364,985,0.692,990,0.231,991,0.235,993,0.331,998,0.797,1005,0.202,1008,0.618,1017,0.939,1019,0.886,1022,1.053,1033,3.662,1040,0.803,1045,0.248,1053,0.58,1066,1.792,1074,0.235,1076,0.276,1077,0.231,1079,0.453,1082,0.235,1091,0.171,1097,1.573,1101,1.674,1108,0.41,1109,0.406,1110,0.752,1112,0.228,1125,0.194,1126,0.207,1128,0.168,1129,0.148,1130,0.529,1135,0.235,1136,3.491,1155,0.216,1169,0.41,1211,0.194,1213,0.205,1219,0.391,1255,0.247,1282,2.524,1284,0.231,1285,0.219,1287,0.191,1294,0.248,1295,0.225,1308,0.222,1310,0.225,1311,0.268,1321,0.248,1348,1.302,1356,0.254,1398,0.254,1399,1.624,1403,0.205,1416,0.182,1451,0.886,1457,0.257,1463,0.487,1477,0.477,1483,0.744,1499,0.209,1508,0.429,1513,0.797,1520,0.194,1554,0.477,1556,0.185,1609,0.181,1612,0.174,1620,0.394,1625,0.216,1640,0.205,1643,0.656,1647,0.391,1650,0.214,1681,0.26,1682,0.228,1727,0.207,1759,0.167,1772,0.825,1779,0.216,1784,0.243,1786,0.175,1846,3.27,1852,0.402,1942,0.696,1945,0.193,1950,0.414,1963,1.55,1992,0.477,1995,0.239,2003,0.243,2009,0.254,2016,0.398,2018,0.597,2042,0.752,2054,0.962,2056,0.203,2076,0.201,2092,0.235,2109,0.225,2116,0.46,2118,0.243,2132,0.248,2148,0.26,2225,0.254,2238,1.043,2240,0.225,2256,0.918,2257,0.254,2260,0.26,2292,0.235,2294,0.26,2300,0.254,2306,0.219,2307,0.268,2309,2.444,2310,0.44,2336,0.446,2363,0.26,2370,0.248,2371,0.26,2379,0.477,2407,0.477,2417,0.228,2418,0.235,2419,0.222,2447,0.26,2448,0.647,2484,0.26,2495,0.248,2501,0.26,2502,0.26,2503,0.243,2507,0.26,2528,0.26,2552,0.243,2572,0.525,2580,0.26,2586,0.44,2587,0.239,2589,0.26,2595,0.26,2598,0.26,2610,0.498,2619,0.575,2625,1.334,2626,0.835,2627,0.231,2628,0.75,2630,0.453,2631,0.75,2633,0.51,2634,0.235,2635,1.624,2636,2.041,2637,2.201,2638,0.981,2639,0.75,2641,0.26,2642,0.179,2643,0.26,2644,0.26,2645,0.981,2646,0.453,2647,0.248,2648,0.26,2649,0.26,2650,0.26,2651,0.26,2652,0.51,2653,0.26,2654,0.51,2655,0.26,2656,0.26,2657,0.26,2658,0.239,2659,0.288,2660,0.288,2661,0.564,2662,0.268,2663,0.487,2664,0.26,2665,0.26,2666,0.26,2667,0.26,2668,4.969,2669,0.288,2670,0.288,2671,0.288,2672,0.564,2673,1.421,2674,0.564,2675,0.288,2676,0.288,2677,0.288,2678,0.288,2679,0.542,2680,0.288,2681,0.288,2682,0.268,2683,1.085,2684,0.254,2685,0.254,2686,0.288,2687,0.26,2688,0.83,2689,0.83,2690,0.288,2691,0.288,2692,2.017,2693,0.564,2694,0.772,2695,0.288,2696,0.288,2697,0.564,2698,0.564,2699,0.564,2700,0.564,2701,0.288,2702,0.288,2703,0.288,2704,0.288,2705,0.288,2706,0.564,2707,0.288,2708,0.288,2709,0.288,2710,0.288,2713,0.525,2714,0.288,2715,0.288,2716,0.26,2717,0.288,2718,0.288,2719,0.288,2720,0.288,2721,0.288,2722,0.83,2723,1.085,2724,0.83,2725,1.796,2726,0.564,2727,0.564,2728,0.288,2729,0.83,2730,0.83,2731,1.085,2732,0.288,2733,0.83,2734,0.26,2735,0.288,2736,0.243,2737,0.288,2738,0.288,2739,0.26,2740,0.288,2741,0.288,2742,0.288,2743,0.288,2744,0.288,2745,0.288,2746,0.288,2747,0.288,2748,0.564,2749,0.288,2750,0.564,2751,0.288,2752,0.288,2753,0.288,2754,0.288,2755,0.288,2756,0.268,3238,0.277,3257,0.239,3258,0.51,3413,0.248,3414,0.303,3415,0.594,3416,0.231,3417,0.288,3418,0.303,3419,0.303,3420,0.303,3421,0.303,3422,0.303,3423,0.303,3424,0.303,3425,0.873,3426,0.303,3427,0.873,3428,0.303,3429,0.873,3430,0.303]],["component/154",[7,0.401]],["title/155-1",[236,39.251]],["name/155-1",[]],["text/155-1",[]],["component/155-1",[]],["title/155-2",[96,36.21,679,30.741]],["name/155-2",[]],["text/155-2",[]],["component/155-2",[]],["title/155-3",[679,30.741,949,47.08]],["name/155-3",[]],["text/155-3",[]],["component/155-3",[]],["title/155-4",[980,68.801]],["name/155-4",[]],["text/155-4",[]],["component/155-4",[]],["title/155-5",[36,33.721,1005,26.424]],["name/155-5",[]],["text/155-5",[]],["component/155-5",[]],["title/155-6",[754,39.689]],["name/155-6",[]],["text/155-6",[]],["component/155-6",[]],["title/155-7",[2757,79.747]],["name/155-7",[]],["text/155-7",[]],["component/155-7",[]],["title/155-8",[2758,79.747]],["name/155-8",[]],["text/155-8",[]],["component/155-8",[]],["title/155-9",[2759,79.747]],["name/155-9",[]],["text/155-9",[]],["component/155-9",[]],["title/155-10",[2760,79.747]],["name/155-10",[]],["text/155-10",[]],["component/155-10",[]],["title/155-11",[2761,88.192]],["name/155-11",[]],["text/155-11",[]],["component/155-11",[]],["title/155",[402,17.184,679,30.741]],["name/155",[402,0.306,679,0.547]],["text/155",[5,3.213,8,2.229,13,0.28,14,0.356,17,3.002,19,0.513,23,0.386,24,1.234,26,2.275,29,0.626,31,0.463,34,0.369,36,1.947,45,0.383,52,0.397,68,0.5,71,0.845,76,0.519,79,1.034,84,2.849,86,0.824,88,1.209,96,3.217,99,3.175,101,4.083,105,0.356,111,1.251,115,0.487,117,1.187,118,0.532,120,1.346,127,0.541,129,0.397,134,0.826,136,0.897,139,2.135,142,0.856,143,0.875,144,0.985,146,0.852,148,0.285,154,0.793,155,1.253,161,0.329,163,0.427,166,0.963,168,0.437,171,1.085,172,0.364,178,0.441,186,0.852,190,0.963,192,2.021,196,0.358,199,0.503,214,0.325,224,0.422,228,0.432,241,1.287,245,1.105,248,2.222,249,0.447,251,0.787,252,1.567,263,1.399,264,1.172,266,0.631,275,0.802,277,3.367,280,0.386,282,0.503,283,0.5,292,0.461,296,0.663,301,1.184,319,0.953,331,2.08,341,0.93,351,0.381,357,1.302,375,2.859,377,1.201,394,0.541,395,0.537,401,0.732,402,0.992,406,1.491,408,0.449,415,0.568,421,0.875,424,0.602,442,0.602,445,1.807,451,0.431,465,1.228,508,2.01,509,1.807,514,2.598,521,0.559,525,0.381,531,0.415,547,0.368,549,0.811,552,0.346,553,0.513,570,0.952,580,1.323,583,0.479,586,0.5,593,1.891,597,0.479,608,0.831,615,0.472,617,2.689,630,0.516,668,0.834,670,0.454,673,0.796,679,1.775,683,0.452,684,1.158,686,2.052,687,0.579,697,0.941,698,0.45,711,0.523,723,0.62,733,1.084,736,0.969,742,0.59,743,0.482,754,1.259,768,0.623,786,2.799,790,2.187,827,0.461,830,0.523,841,1.846,865,0.856,924,0.649,925,0.649,926,0.669,927,0.64,928,0.669,929,0.623,932,1.515,934,1.8,936,0.649,943,0.563,949,2.979,961,1.139,963,0.441,967,0.995,976,1.246,981,0.669,984,0.53,989,0.708,990,0.659,991,0.669,993,0.482,994,0.708,995,0.708,996,0.708,997,0.708,998,0.602,999,0.708,1000,0.708,1001,0.64,1002,0.708,1003,0.708,1004,0.579,1005,1.807,1006,4.658,1007,0.708,1008,2.43,1009,0.708,1010,0.584,1011,0.64,1012,0.631,1013,0.64,1014,1.338,1015,1.745,1017,0.579,1018,0.708,1019,0.669,1033,0.59,1040,0.495,1053,0.573,1056,0.669,1061,0.708,1062,0.59,1063,1.338,1064,0.609,1066,1.239,1088,1.338,1099,0.64,1106,1.807,1107,1.55,1114,0.659,1195,0.506,1285,1.179,1479,0.708,1533,1.165,1852,0.584,1961,0.694,1962,1.266,1964,1.338,1965,1.338,1981,0.723,1982,0.723,1983,0.723,1984,0.723,1986,0.723,1987,1.946,1988,0.723,1989,1.946,1990,0.723,1991,1.946,1992,0.694,1993,1.946,1994,0.723,1995,1.831,1996,0.659,1999,0.723,2051,0.568,2056,0.579,2068,0.742,2177,0.421,2194,2.101,2234,1.227,2240,1.21,2310,1.21,2372,0.631,2387,0.631,2406,3.607,2415,0.694,2422,0.516,2423,0.669,2431,0.694,2432,1.311,2455,0.659,2464,1.402,2465,1.402,2468,0.681,2488,1.402,2489,0.742,2511,1.995,2514,0.742,2574,1.402,2586,0.64,2633,2.529,2757,0.742,2758,1.402,2762,1.551,2763,0.82,2764,1.551,2765,0.82,2766,0.82,2767,0.82,2768,0.82,2769,0.82,2770,0.82,2771,0.82,2772,0.82,2773,0.82,2774,0.82,2775,0.82,2776,0.82,2777,0.82,2778,0.82,2780,1.551,2781,1.551,2782,0.82,2783,0.82,2784,0.82,2785,1.368,2786,1.551,2787,0.82,2788,0.763,2789,0.82,2790,0.82,2791,0.82,2792,0.82,2793,0.82,2794,0.82,2795,0.82,2796,0.82,2797,0.82,2798,0.82,2799,0.82,2800,0.82,2801,0.82,2802,0.82,2803,1.442,2804,0.742,2805,0.82,3132,0.742,3265,0.788,3266,0.788,3370,0.708,3431,0.863,3432,1.632,3433,0.863,3434,1.632,3435,0.863,3436,0.863]],["component/155",[7,0.401]],["title/156-1",[29,25.643,42,29.179,502,29.437]],["name/156-1",[]],["text/156-1",[]],["component/156-1",[]],["title/156-2",[155,27.786,308,31.436]],["name/156-2",[]],["text/156-2",[]],["component/156-2",[]],["title/156-3",[183,30.892,1128,43.146]],["name/156-3",[]],["text/156-3",[]],["component/156-3",[]],["title/156-4",[183,30.892,1129,38.042]],["name/156-4",[]],["text/156-4",[]],["component/156-4",[]],["title/156-5",[356,40.753,835,41.118]],["name/156-5",[]],["text/156-5",[]],["component/156-5",[]],["title/156-6",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/156-6",[]],["text/156-6",[]],["component/156-6",[]],["title/156-7",[227,33.834,525,23.078,861,29.474,1130,31.658,1131,32.55]],["name/156-7",[]],["text/156-7",[]],["component/156-7",[]],["title/156-8",[349,34.906,1735,35.536,2806,57.467]],["name/156-8",[]],["text/156-8",[]],["component/156-8",[]],["title/156-9",[351,34.319,1967,55.481]],["name/156-9",[]],["text/156-9",[]],["component/156-9",[]],["title/156-10",[96,36.21,2807,73.872]],["name/156-10",[]],["text/156-10",[]],["component/156-10",[]],["title/156-11",[293,47.398,1004,52.112]],["name/156-11",[]],["text/156-11",[]],["component/156-11",[]],["title/156",[13,15.31,14,19.455,84,12.931,98,29.562,502,20.744,1132,21.525]],["name/156",[1132,1.129]],["text/156",[0,0.577,3,0.465,5,0.677,6,1.017,7,0.146,8,1.597,10,0.45,11,1.198,12,0.584,13,2.471,14,2.049,17,1.508,18,0.734,19,0.353,29,1.288,30,0.255,31,0.319,32,0.848,34,0.706,35,0.874,37,0.347,38,0.323,40,0.7,42,1.298,45,0.508,46,0.798,48,1.819,52,1.544,54,1.15,56,1.405,57,0.328,60,1.286,77,0.332,79,0.509,84,3.259,88,1.317,91,1.198,92,0.353,93,0.332,96,0.277,98,0.373,99,0.285,101,0.544,104,0.291,105,0.877,110,0.27,112,0.516,117,1.887,118,2.618,120,1.725,125,0.752,127,0.373,128,1.438,130,0.351,134,0.212,136,0.292,138,0.262,139,0.753,146,0.862,147,0.373,148,0.7,151,0.395,154,0.555,155,0.759,161,0.629,163,0.818,164,0.987,166,0.351,168,0.301,171,0.278,172,1.081,179,0.398,180,0.353,183,1.613,185,0.766,186,1.338,188,0.345,189,0.33,192,0.299,194,0.376,196,0.247,202,0.441,203,0.347,206,0.415,211,1.077,214,0.965,220,0.41,224,1.039,225,0.424,227,0.74,228,1.064,236,0.251,239,0.277,240,0.816,247,0.353,251,0.287,252,0.949,262,0.339,264,1.122,265,0.753,267,0.645,268,0.365,271,0.276,275,0.562,277,0.29,279,0.514,280,0.511,282,0.347,283,0.663,285,0.441,293,1.295,296,2.127,300,1.398,301,0.239,308,1.037,311,0.31,315,0.74,316,0.283,319,0.469,324,0.419,325,1.021,327,0.454,330,1.06,331,0.855,333,0.345,338,0.836,346,0.435,349,2.442,350,0.322,351,1.313,354,0.349,356,1.761,360,0.429,361,0.52,386,0.628,402,0.822,406,0.852,412,0.398,421,0.319,438,0.415,439,0.333,445,0.365,446,0.295,450,0.388,457,0.415,459,1.007,464,0.365,465,0.248,468,0.777,474,0.402,478,0.441,482,0.353,502,1.129,508,0.947,514,0.9,517,0.343,518,0.402,521,0.385,523,0.349,525,0.938,528,1.431,531,0.794,532,0.766,539,0.435,541,0.454,547,0.704,548,0.382,549,0.568,552,0.239,556,0.353,558,0.402,570,0.667,577,0.663,580,1.696,593,0.28,596,1.029,597,0.635,602,0.429,608,0.302,618,0.419,647,0.358,666,0.675,668,0.844,670,0.602,673,1.25,677,0.362,682,0.306,689,0.766,698,0.31,706,2.51,711,1.286,728,1.402,729,1.313,730,1.179,735,1.364,736,2.411,742,0.406,743,1.185,745,0.555,758,0.435,773,0.379,786,1.119,790,0.323,827,1.986,833,0.435,835,0.874,846,3.707,861,2.95,868,0.511,890,1.014,910,0.355,963,0.584,967,0.362,972,0.579,993,0.332,1004,0.398,1010,0.402,1021,0.487,1022,0.447,1024,0.447,1040,0.655,1048,0.454,1066,0.882,1083,1.193,1087,0.419,1097,0.398,1102,0.498,1128,1.179,1129,0.808,1130,1.286,1131,1.323,1133,1.633,1134,0.429,1135,0.461,1136,0.37,1137,0.424,1138,0.781,1139,1.078,1140,0.525,1141,0.826,1142,0.86,1143,0.86,1144,0.435,1145,0.347,1146,0.461,1147,0.525,1148,0.525,1149,1.01,1150,3.467,1151,0.807,1152,1.01,1153,0.937,1154,0.435,1155,0.424,1156,0.525,1157,0.461,1158,0.419,1159,0.525,1160,1.01,1161,0.525,1162,0.902,1163,0.525,1164,0.902,1165,1.46,1166,0.461,1167,0.525,1168,0.435,1169,0.41,1170,1.01,1171,0.525,1172,1.208,1173,0.525,1174,0.385,1175,0.525,1176,0.525,1177,0.525,1178,0.525,1179,0.525,1180,1.01,1181,0.525,1182,0.525,1183,1.01,1184,1.01,1185,1.01,1186,0.525,1187,0.807,1188,1.01,1189,0.525,1190,0.525,1191,0.525,1192,0.525,1193,0.525,1194,0.525,1195,0.349,1196,0.469,1197,1.303,1198,0.525,1199,0.525,1200,0.461,1201,1.452,1202,0.525,1203,1.01,1204,0.487,1205,1.01,1206,0.525,1207,0.525,1208,0.525,1209,0.525,1210,0.498,1211,0.382,1212,0.525,1214,0.759,1219,0.391,1277,0.424,1294,0.487,1295,0.441,1296,0.487,1300,0.461,1347,1.01,1349,1.46,1356,1.781,1361,6.334,1362,2.969,1379,1.877,1382,0.525,1400,0.313,1483,0.268,1520,0.382,1556,0.362,1558,0.333,1647,0.391,1682,0.86,1733,1.242,1735,1.977,1964,0.487,1967,1.83,1996,0.454,2003,0.478,2029,0.982,2037,0.982,2055,0.454,2060,0.385,2072,0.454,2076,0.395,2134,0.478,2135,0.454,2173,2.102,2336,0.447,2342,0.478,2478,1.354,2558,1.825,2806,3.197,2808,0.487,2809,1.57,2810,0.565,2811,0.565,2812,0.565,2813,0.565,2814,0.565,2815,1.086,2816,0.565,2817,0.498,2818,0.565,2819,0.565,2820,0.565,2821,0.565,2822,1.086,2823,0.565,2824,0.565,2825,0.565,2826,0.565,2827,1.57,2828,1.57,2829,0.565,2830,1.086,2831,0.565,2832,1.086,2833,0.565,2834,1.086,2835,0.565,2836,2.827,2837,0.525,2838,3.193,2839,0.565,2840,1.086,2841,1.086,2842,1.086,2843,1.086,2844,1.01,2845,1.086,2846,0.565,2847,0.498,2848,0.565,2849,0.565,2850,0.982,2851,0.525,2852,0.565,2853,0.565,2854,1.57,2855,0.565,2856,0.565,2857,1.57,2858,0.565,2859,0.565,2860,0.565,2861,0.565,2862,0.565,2863,0.565,2864,0.565,2865,0.565,2866,0.565,2867,0.565,2868,0.565,2869,0.565,2870,0.565,2871,0.565,2872,0.525,2873,0.565,2874,0.525,2875,1.086,2876,1.086,2877,1.086,2878,0.565,2879,0.565,2880,0.565,2881,0.565,2882,0.565,2883,1.086,2884,0.565,2885,1.57,2886,0.565,2887,0.565,2888,0.565,2889,0.565,2890,0.498,2891,0.565,2892,0.565,2893,0.565,2894,0.565]],["component/156",[7,0.401]],["title/157-1",[402,20.515]],["name/157-1",[]],["text/157-1",[]],["component/157-1",[]],["title/157-2",[116,50.007]],["name/157-2",[]],["text/157-2",[]],["component/157-2",[]],["title/157-3",[52,35.736,116,41.887]],["name/157-3",[]],["text/157-3",[]],["component/157-3",[]],["title/157-4",[118,25.347,2619,51.178]],["name/157-4",[]],["text/157-4",[]],["component/157-4",[]],["title/157-5",[134,27.671,2619,51.178]],["name/157-5",[]],["text/157-5",[]],["component/157-5",[]],["title/157-6",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/157-6",[]],["text/157-6",[]],["component/157-6",[]],["title/157-7",[33,23.693,36,20.443,111,25.393,116,25.393,118,15.366,421,25.274]],["name/157-7",[]],["text/157-7",[]],["component/157-7",[]],["title/157-8",[36,18.611,88,12.902,116,23.118,118,13.989,143,23.009,361,19.534,854,27.77]],["name/157-8",[]],["text/157-8",[]],["component/157-8",[]],["title/157-9",[33,23.693,111,25.393,118,23.373,361,21.457,421,25.274]],["name/157-9",[]],["text/157-9",[]],["component/157-9",[]],["title/157-10",[33,14.895,36,12.852,111,15.964,116,15.964,118,9.66,143,15.889,186,15.464,421,15.889,854,19.177,861,16.706,985,17.944,1153,24.29]],["name/157-10",[]],["text/157-10",[]],["component/157-10",[]],["title/157-11",[54,18.307,110,15.346,118,17.986,120,19.606,171,15.803,214,12.73,361,15.395,487,14.667,680,16.866]],["name/157-11",[]],["text/157-11",[]],["component/157-11",[]],["title/157-12",[245,52.609,528,43.37]],["name/157-12",[]],["text/157-12",[]],["component/157-12",[]],["title/157-13",[88,23.377,356,40.753]],["name/157-13",[]],["text/157-13",[]],["component/157-13",[]],["title/157-14",[48,36.208,88,20.111,356,35.06]],["name/157-14",[]],["text/157-14",[]],["component/157-14",[]],["title/157-15",[88,20.111,356,35.06,1172,48.923]],["name/157-15",[]],["text/157-15",[]],["component/157-15",[]],["title/157-16",[56,31.577,356,35.06,711,40.503]],["name/157-16",[]],["text/157-16",[]],["component/157-16",[]],["title/157-17",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/157-17",[]],["text/157-17",[]],["component/157-17",[]],["title/157-18",[88,27.909]],["name/157-18",[]],["text/157-18",[]],["component/157-18",[]],["title/157-19",[1276,68.801]],["name/157-19",[]],["text/157-19",[]],["component/157-19",[]],["title/157",[13,19.063,14,24.225,88,17.646,158,30.495]],["name/157",[88,0.743]],["text/157",[0,0.755,2,0.231,3,0.32,4,0.225,5,0.166,7,0.282,8,1.117,10,0.718,11,0.228,12,0.207,13,1.844,14,1.901,15,0.588,17,2.235,18,0.511,19,0.24,23,0.514,24,0.612,30,0.173,31,0.422,32,0.46,33,2.599,34,1.792,36,0.342,40,0.38,42,0.344,45,0.18,46,1.044,48,1.896,49,0.795,52,1.496,54,2.985,56,1.285,57,1.181,58,0.477,60,1.648,63,0.49,65,2.735,71,0.596,77,0.439,80,0.274,84,2.053,88,2.369,91,1.206,92,0.684,93,1.518,94,0.873,95,0.953,96,0.85,97,0.969,100,1.203,101,2.846,102,0.424,103,0.576,105,2.276,106,0.49,107,1.447,110,1.802,111,3.598,112,0.964,113,3.199,115,0.844,116,5.071,117,0.736,118,3.011,120,4.821,121,2.53,123,0.533,125,0.524,128,0.227,129,0.362,130,0.465,134,1.639,136,0.294,143,2.957,144,0.334,145,0.258,146,0.211,147,0.494,148,0.26,151,0.269,152,0.276,153,0.296,155,0.871,160,0.215,161,0.438,162,0.55,163,0.741,164,0.471,166,0.884,168,0.399,169,0.228,170,0.684,171,1.139,172,0.77,186,1.272,188,0.235,191,0.153,192,0.396,194,0.498,196,1.739,199,0.236,202,0.584,204,0.325,211,0.399,214,0.917,215,0.544,221,0.519,224,0.385,227,0.262,234,0.437,238,0.289,243,0.242,245,0.274,248,1.965,249,0.408,252,0.669,253,0.262,254,0.269,255,0.449,262,0.231,263,0.192,264,0.714,271,0.188,272,0.429,275,0.199,277,1.327,280,0.352,283,0.235,285,0.3,292,0.216,293,0.48,296,1.217,301,1.204,304,0.285,308,0.605,313,2.648,315,0.262,316,2.541,319,0.323,322,0.279,325,1.128,330,0.26,335,0.656,338,0.842,340,0.684,341,1.04,344,0.319,348,0.26,350,1.158,351,1.076,352,0.285,356,2.891,360,0.292,361,1.595,377,0.209,379,0.319,384,0.332,386,0.222,388,0.236,389,0.696,394,0.254,397,0.304,401,0.353,402,0.926,403,0.285,406,0.382,408,0.21,421,1.745,429,0.269,438,1.274,439,0.442,440,0.254,441,0.9,443,0.415,446,0.391,455,0.199,470,0.178,480,0.646,482,0.24,487,0.792,502,0.178,505,2.33,506,0.289,508,0.452,509,0.919,519,1.013,523,0.237,525,1.201,526,0.319,528,0.226,531,1.171,547,0.172,549,0.744,552,0.316,553,0.684,558,0.274,570,0.459,575,0.276,577,0.457,580,0.231,602,0.292,604,0.426,613,0.292,617,0.221,619,0.266,620,0.454,664,0.314,666,0.239,668,0.207,670,0.415,677,0.247,679,0.16,680,0.91,686,0.304,697,0.233,698,0.211,706,0.25,708,0.215,711,1.476,712,0.932,728,0.629,729,0.925,732,0.953,765,0.544,766,0.51,767,0.279,768,0.569,772,0.24,773,0.502,784,0.332,827,0.216,835,0.965,841,0.494,854,2.57,861,2.11,865,0.413,869,0.576,889,0.465,890,0.707,900,0.733,910,0.471,937,0.969,949,0.245,961,0.55,963,0.207,966,0.262,968,0.785,972,1.517,980,0.3,985,0.477,993,0.642,1013,0.3,1031,0.285,1040,0.232,1047,0.314,1049,0.319,1062,1.023,1075,0.228,1076,0.695,1083,1.081,1089,0.282,1092,0.256,1129,0.198,1130,0.245,1131,1.331,1133,0.953,1139,0.751,1144,0.296,1154,0.842,1155,0.562,1162,0.319,1164,0.621,1172,3.649,1197,0.621,1213,1.447,1214,1.212,1216,0.358,1217,0.358,1218,0.358,1219,0.985,1220,1.018,1221,0.944,1222,0.358,1223,0.358,1224,0.696,1225,0.696,1226,0.358,1227,0.358,1228,0.358,1229,0.358,1230,0.358,1231,0.358,1232,0.358,1233,0.358,1234,0.358,1235,0.358,1236,0.358,1237,0.358,1238,1.018,1239,0.358,1240,0.696,1241,1.018,1242,0.358,1243,0.358,1244,0.358,1245,0.358,1246,0.584,1247,0.696,1248,1.323,1249,0.611,1250,0.562,1251,0.696,1252,0.332,1253,0.25,1254,0.358,1255,0.168,1256,0.908,1257,0.358,1258,0.66,1261,0.358,1262,0.358,1265,0.358,1266,0.358,1267,0.358,1268,0.358,1269,0.358,1270,0.358,1271,0.358,1272,0.358,1273,0.358,1274,0.358,1275,0.358,1276,0.3,1277,1.303,1278,0.358,1295,0.3,1296,0.332,1297,0.358,1298,0.358,1299,0.358,1300,0.893,1301,0.319,1302,0.358,1303,0.319,1307,0.369,1308,0.296,1319,0.358,1320,0.696,1321,0.332,1322,0.358,1323,0.358,1324,0.358,1325,1.613,1326,0.358,1327,0.696,1328,0.358,1329,0.358,1331,0.358,1332,0.358,1333,0.358,1334,0.696,1335,0.358,1336,0.696,1337,0.358,1338,0.358,1339,0.696,1340,0.696,1341,0.358,1342,0.358,1343,0.332,1344,0.358,1345,0.358,1346,0.358,1383,0.358,1384,0.358,1385,0.358,1386,0.358,1387,0.358,1388,0.66,1389,0.319,1390,0.242,1391,0.339,1392,0.358,1393,0.358,1397,0.358,1416,0.474,1456,0.174,1483,0.519,1484,0.292,1498,0.269,1513,0.55,1641,0.925,1661,0.296,1733,1.607,1768,0.696,1770,1.227,1779,0.289,1849,0.309,1938,0.696,2042,0.519,2051,0.266,2054,0.236,2076,0.523,2083,0.309,2127,0.646,2166,0.696,2240,0.3,2444,0.348,2448,0.3,2518,0.348,2562,0.314,2619,1.791,2673,0.304,2895,0.384,2896,1.734,2897,0.348,2898,0.384,2899,0.384,2900,0.749,2901,0.384,2902,0.384,2903,0.384,2904,1.094,2905,0.384,2906,0.384,2907,0.384,2908,0.384,2909,0.384,2910,0.384,2911,0.384,2912,0.384,2913,0.384,2915,0.384,2916,1.734,2917,0.384,2918,0.384,2919,0.384,2921,1.094,2922,0.384,2923,0.384,2924,0.384,2925,0.384,2926,0.358,2927,0.384,2928,0.384,2929,0.749,2930,0.384,2931,0.749,2932,1.094,2933,0.384,2934,0.893,2935,1.094,2936,0.384,2937,0.384,2938,0.749,2939,0.384,2940,1.422,2941,0.384,2942,0.384,2943,0.384,2944,0.384,2945,0.369,2946,0.384,2947,0.384,2948,0.384,2949,0.384,2950,0.384,2951,0.384,2952,0.384,2953,0.384,2954,0.384,2955,0.384,2956,0.749,2957,0.384,2958,0.384,2959,0.749,2960,0.384,2961,0.384,2962,0.384,2963,0.384,2964,0.384,2965,0.384,2966,0.384,2967,0.384,2968,0.384,2969,0.384,2970,0.384,2971,0.749,2972,0.749,3370,2.667,3396,0.369,3400,0.989,3437,2.992,3438,0.404,3439,0.404,3440,1.825,3441,0.787,3442,0.787,3443,1.151,3444,0.404,3445,0.404,3446,0.404,3447,0.404]],["component/157",[7,0.401]],["title/158-1",[117,26.976,118,21.806,296,27.183]],["name/158-1",[]],["text/158-1",[]],["component/158-1",[]],["title/158-2",[8,10.407,26,17.177,117,17.306,118,13.989,168,21.743,296,17.438,402,9.484]],["name/158-2",[]],["text/158-2",[]],["component/158-2",[]],["title/158-3",[1276,68.801]],["name/158-3",[]],["text/158-3",[]],["component/158-3",[]],["title/158",[13,25.254,105,32.092]],["name/158",[631,1.45]],["text/158",[7,0.622,8,0.616,13,2.456,14,1.048,20,1.408,24,2.306,26,2.694,29,0.973,30,1.088,34,1.085,45,1.127,52,3.093,54,2.349,60,2.628,71,1.313,84,2.547,88,1.305,102,1.367,105,2.347,112,1.957,113,1.07,116,2.338,117,3.552,118,3.957,125,1.155,126,3.062,129,1.167,134,2.395,136,2.252,138,1.12,139,1.538,148,1.431,150,1.053,155,1.551,161,1.652,171,1.186,179,1.701,181,1.811,183,1.008,196,1.053,199,1.48,214,2.846,226,1.592,239,2.021,264,2.526,275,1.246,292,1.355,296,4.209,301,2.707,308,3.057,313,1.527,320,1.439,324,1.79,341,1.447,357,1.423,391,1.276,395,1.58,402,1.487,438,1.771,443,1.336,451,2.165,453,2.318,455,1.246,458,1.558,460,1.07,465,1.059,487,1.101,503,2.181,514,1.523,519,1.717,547,1.082,552,1.018,557,1.455,570,1.48,617,1.387,661,2.002,665,1.297,667,2.243,670,2.994,671,2.243,672,1.656,673,3.28,676,1.656,677,1.547,678,1.447,679,1.004,680,2.165,683,1.33,684,1.266,723,1.649,743,2.421,746,1.031,865,1.33,963,2.217,966,1.642,972,1.286,1005,0.863,1092,1.604,1125,1.629,1279,1.527,1280,2.039,1281,2.243,1282,1.908,1283,2.243,1284,1.937,1285,1.833,1286,2.002,1287,1.604,1305,1.937,1306,2.002,1477,1.387,1640,1.717,2054,1.48,3193,2.318,3370,3.558]],["component/158",[7,0.401]],["title/159-1",[78,56.976]],["name/159-1",[]],["text/159-1",[]],["component/159-1",[]],["title/159-2",[745,45.082]],["name/159-2",[]],["text/159-2",[]],["component/159-2",[]],["title/159-3",[1255,32.348,1457,33.624]],["name/159-3",[]],["text/159-3",[]],["component/159-3",[]],["title/159",[136,17.103,178,34.172,1005,22.733]],["name/159",[1473,1.613]],["text/159",[8,1.827,65,4.917,88,2.266,118,2.456,129,3.463,136,1.927,139,2.671,178,5.121,183,2.994,228,3.773,263,3.582,264,2.517,301,3.031,388,4.394,468,3.545,487,3.268,514,2.644,686,2.909,723,2.862,756,5.004,827,4.022,1005,3.828,1473,4.917,1585,4.876,2422,4.504,2566,4.762,2974,7.159,2976,7.159,3448,8.098,3449,8.098]],["component/159",[7,0.401]],["title/160-1",[78,56.976]],["name/160-1",[]],["text/160-1",[]],["component/160-1",[]],["title/160-2",[745,45.082]],["name/160-2",[]],["text/160-2",[]],["component/160-2",[]],["title/160-3",[1255,32.348,1457,33.624]],["name/160-3",[]],["text/160-3",[]],["component/160-3",[]],["title/160",[136,17.103,1005,22.733,3450,44.422]],["name/160",[3416,1.056,3450,0.919]],["text/160",[8,2.443,12,2.598,31,2.727,91,4.28,104,2.488,118,1.658,136,2.891,139,1.802,150,2.11,161,1.936,183,2.021,191,1.923,192,2.556,263,2.417,264,1.699,297,2.78,301,2.046,308,2.056,379,4.011,388,2.966,465,2.121,470,2.231,675,3.319,686,1.963,723,1.932,963,2.598,984,3.121,1005,4.259,1400,2.677,1472,2.948,1483,2.293,2063,3.629,2137,3.475,2422,4.537,2566,3.214,3257,4.011,3450,8.448,3451,6.522,3452,5.083,3453,7.588,3454,5.083,3455,5.083,3456,5.083,3457,5.083,3458,5.083,3459,4.168,3460,4.369,3461,4.369]],["component/160",[7,0.401]],["title/161-1",[78,56.976]],["name/161-1",[]],["text/161-1",[]],["component/161-1",[]],["title/161-2",[745,45.082]],["name/161-2",[]],["text/161-2",[]],["component/161-2",[]],["title/161-3",[191,25.292,728,36.562,1483,30.163]],["name/161-3",[]],["text/161-3",[]],["component/161-3",[]],["title/161-4",[10,30.592,228,38.927]],["name/161-4",[]],["text/161-4",[]],["component/161-4",[]],["title/161-5",[1255,32.348,1457,33.624]],["name/161-5",[]],["text/161-5",[]],["component/161-5",[]],["title/161",[136,17.103,538,50.281,1005,22.733]],["name/161",[538,1.858]],["text/161",[6,3.125,8,1.583,10,2.004,29,1.176,32,2.607,34,2.792,45,2.262,84,2.642,88,0.923,94,1.789,101,1.459,118,1.66,136,1.943,139,1.088,172,1.294,183,1.219,186,1.601,190,3.006,191,3.188,196,1.273,228,1.536,263,1.459,264,1.701,271,2.364,283,1.779,301,1.234,317,2.076,319,1.26,341,1.749,351,1.354,352,2.164,388,1.789,402,0.678,443,1.615,468,1.444,487,1.331,492,2.076,514,2.666,538,5.713,570,1.789,580,1.749,686,1.185,717,2.19,723,1.166,728,6.907,773,1.954,827,1.638,907,2.164,932,2.002,1005,2.865,1078,3.126,1106,1.581,1145,2.97,1150,1.615,1151,3.593,1174,4.918,1472,1.779,1483,1.384,1484,2.216,1488,2.42,1640,2.076,1727,2.097,1827,3.725,1945,1.954,2301,3.775,2408,2.515,2422,1.834,2566,1.939,2808,6.91,3462,7.449,3463,7.242,3464,2.915,3465,4.651,3466,2.572,3467,4.839,3468,2.802,3469,2.802,3470,2.915,3471,2.572,3472,2.915,3473,8.638,3474,6.203,3475,7.016,3476,3.297]],["component/161",[7,0.401]],["title/162-1",[78,56.976]],["name/162-1",[]],["text/162-1",[]],["component/162-1",[]],["title/162-2",[745,45.082]],["name/162-2",[]],["text/162-2",[]],["component/162-2",[]],["title/162-3",[1255,32.348,1457,33.624]],["name/162-3",[]],["text/162-3",[]],["component/162-3",[]],["title/162",[136,15.007,1005,19.947,1769,50.423,3477,38.977]],["name/162",[3478,2.257]],["text/162",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1769,5.173,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3478,7.843,3479,4.936,3480,6.019,3481,4.936]],["component/162",[7,0.401]],["title/163-1",[78,56.976]],["name/163-1",[]],["text/163-1",[]],["component/163-1",[]],["title/163-2",[745,45.082]],["name/163-2",[]],["text/163-2",[]],["component/163-2",[]],["title/163-3",[1255,32.348,1457,33.624]],["name/163-3",[]],["text/163-3",[]],["component/163-3",[]],["title/163",[136,15.007,1005,19.947,3477,38.977,3482,53.595]],["name/163",[3483,2.257]],["text/163",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3482,5.499,3483,7.843,3484,6.019]],["component/163",[7,0.401]],["title/164-1",[78,56.976]],["name/164-1",[]],["text/164-1",[]],["component/164-1",[]],["title/164-2",[745,45.082]],["name/164-2",[]],["text/164-2",[]],["component/164-2",[]],["title/164-3",[1255,32.348,1457,33.624]],["name/164-3",[]],["text/164-3",[]],["component/164-3",[]],["title/164",[136,15.007,1005,19.947,3477,38.977,3485,50.423]],["name/164",[3486,2.257]],["text/164",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3485,5.173,3486,7.843,3487,6.019]],["component/164",[7,0.401]],["title/165-1",[78,56.976]],["name/165-1",[]],["text/165-1",[]],["component/165-1",[]],["title/165-2",[745,45.082]],["name/165-2",[]],["text/165-2",[]],["component/165-2",[]],["title/165-3",[1255,32.348,1457,33.624]],["name/165-3",[]],["text/165-3",[]],["component/165-3",[]],["title/165",[136,15.007,1005,19.947,1741,44.118,3477,38.977]],["name/165",[3488,2.257]],["text/165",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1741,4.527,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3488,7.843,3489,6.019]],["component/165",[7,0.401]],["title/166-1",[78,56.976]],["name/166-1",[]],["text/166-1",[]],["component/166-1",[]],["title/166-2",[745,45.082]],["name/166-2",[]],["text/166-2",[]],["component/166-2",[]],["title/166-3",[1255,32.348,1457,33.624]],["name/166-3",[]],["text/166-3",[]],["component/166-3",[]],["title/166",[136,17.103,1005,22.733,1431,35.699]],["name/166",[1431,1.319]],["text/166",[8,1.565,65,4.212,84,1.77,88,1.94,118,2.104,136,1.65,139,2.287,183,2.564,191,3.41,252,2.883,264,2.156,279,2.901,301,2.596,357,3.619,388,3.764,451,3.219,487,2.799,514,3.164,567,4.41,686,2.491,723,2.451,827,3.444,1005,3.533,1076,2.996,1158,4.552,1431,6.722,1483,2.91,1578,4.72,1580,5.545,1617,7.748,2398,4.784,2422,3.857,2566,4.078,3180,5.545,3490,5.893,3491,6.451,3492,6.451,3493,6.451]],["component/166",[7,0.401]],["title/167-1",[78,56.976]],["name/167-1",[]],["text/167-1",[]],["component/167-1",[]],["title/167-2",[745,45.082]],["name/167-2",[]],["text/167-2",[]],["component/167-2",[]],["title/167-3",[1255,32.348,1457,33.624]],["name/167-3",[]],["text/167-3",[]],["component/167-3",[]],["title/167",[136,17.103,1005,22.733,3494,51.038]],["name/167",[3494,1.886]],["text/167",[8,2.095,12,3.102,31,3.256,40,2.002,65,3.963,84,1.666,88,1.826,118,1.98,136,1.553,139,2.152,158,3.155,183,2.413,191,3.267,252,2.713,264,2.028,279,2.73,301,2.443,357,3.405,388,3.541,440,5.419,451,3.028,487,2.634,514,3.031,686,2.344,723,2.307,827,3.241,1005,3.418,1076,2.819,1483,2.738,1555,3.93,2422,3.629,2562,4.708,2566,3.837,3180,5.217,3494,9.654,3495,6.07,3496,6.07,3497,6.526,3498,5.77,3499,4.978,3500,5.545,3501,5.545,3502,5.545]],["component/167",[7,0.401]],["title/168-1",[78,56.976]],["name/168-1",[]],["text/168-1",[]],["component/168-1",[]],["title/168-2",[745,45.082]],["name/168-2",[]],["text/168-2",[]],["component/168-2",[]],["title/168-3",[1255,32.348,1457,33.624]],["name/168-3",[]],["text/168-3",[]],["component/168-3",[]],["title/168",[136,17.103,1005,22.733,1591,42.597]],["name/168",[1591,1.574]],["text/168",[8,1.608,12,3.388,15,3.388,32,2.648,35,3.507,88,1.994,118,2.162,136,1.696,139,2.351,183,2.635,264,2.215,301,2.668,388,3.868,460,3.876,468,4.324,482,3.939,487,3.987,493,8.319,514,3.225,531,3.186,549,3.295,686,2.56,723,2.519,756,6.104,758,4.851,827,4.906,898,5.061,1005,3.585,1591,7.253,2422,3.964,2566,4.191,2979,6.301,3503,6.629]],["component/168",[7,0.401]],["title/169-1",[84,16.101,117,23.67,402,12.971,604,31.77]],["name/169-1",[]],["text/169-1",[]],["component/169-1",[]],["title/169-2",[84,12.931,117,19.01,136,12.052,139,16.706,604,25.515,1005,16.019]],["name/169-2",[]],["text/169-2",[]],["component/169-2",[]],["title/169",[402,17.184,1040,44.562]],["name/169",[402,0.306,1040,0.793]],["text/169",[0,0.862,3,0.694,6,0.817,7,0.418,8,1.422,13,1.653,14,1.265,17,0.692,18,1.361,23,1.863,26,1.227,29,1.599,30,1.314,34,1.31,36,0.74,37,0.996,40,0.563,42,0.745,45,1.852,84,0.841,86,1.547,88,0.513,101,1.457,108,1.155,110,0.775,112,1.382,115,0.962,117,1.682,118,0.557,125,0.777,133,1.014,134,2.703,135,0.697,136,2.154,139,3.412,144,1.299,145,1.952,148,1.01,150,0.708,151,1.134,155,1.49,158,0.887,160,0.907,161,1.588,163,2.518,172,2.145,178,0.872,180,1.014,183,1.218,189,1.701,196,2.944,202,1.265,203,0.996,214,2.206,224,2.04,225,2.187,236,0.722,248,2.064,252,1.863,262,0.973,263,1.982,267,0.962,268,1.881,270,1.323,271,1.423,272,0.929,277,1.494,280,0.763,292,1.636,296,1.245,301,0.687,319,1.712,333,0.99,354,1.001,357,0.957,386,0.938,394,1.922,395,1.063,397,1.283,401,0.765,402,2.311,406,2.167,408,1.592,418,1.303,420,1.178,441,1.027,443,0.899,445,1.881,450,1.114,455,1.505,460,0.72,465,1.278,468,0.803,474,1.155,487,0.74,514,1.075,518,1.155,523,2.446,525,1.841,548,1.096,549,0.848,552,0.685,557,0.978,583,0.947,593,1.442,617,0.933,630,3.041,665,0.872,668,2.599,674,1.105,675,1.114,678,0.973,679,3.176,683,1.606,686,1.61,695,0.829,696,1.323,719,1.692,723,0.648,733,1.134,735,1.096,741,1.041,745,0.829,754,0.73,756,1.134,779,1.034,827,0.911,835,0.903,865,2.186,903,0.947,949,1.034,967,1.041,968,0.895,970,1.144,993,0.952,1005,3.184,1008,0.924,1033,2.094,1040,1.756,1076,0.792,1082,1.323,1097,2.054,1106,1.579,1107,0.899,1125,1.096,1126,1.166,1131,1.063,1169,2.116,1213,2.074,1308,1.249,1400,0.899,1416,1.027,1456,0.734,1477,0.933,1483,0.77,1499,1.178,1516,1.323,1555,1.983,1852,2.074,1936,1.055,1965,2.512,2042,1.124,2097,1.283,2098,1.399,2135,1.303,2136,1.371,2177,0.832,2194,1.218,2348,1.303,2356,1.303,2387,1.249,2455,1.303,2479,1.371,2503,1.371,2586,1.265,2646,1.303,2687,1.467,2759,1.467,2760,1.467,2804,1.467,2980,1.622,2981,1.622,2982,1.622,2983,1.622,2984,1.622,2985,1.622,2986,1.622,2987,1.622,2988,1.622,3504,1.559,3505,1.706]],["component/169",[7,0.401]],["title/170-1",[402,17.184,1456,33.432]],["name/170-1",[]],["text/170-1",[]],["component/170-1",[]],["title/170-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/170-2",[]],["text/170-2",[]],["component/170-2",[]],["title/170-3",[8,18.856,150,32.262]],["name/170-3",[]],["text/170-3",[]],["component/170-3",[]],["title/170-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/170-4",[]],["text/170-4",[]],["component/170-4",[]],["title/170-5",[547,33.151,708,41.306]],["name/170-5",[]],["text/170-5",[]],["component/170-5",[]],["title/170-6",[350,31.77,546,42.927,830,35.539,2989,55.762]],["name/170-6",[]],["text/170-6",[]],["component/170-6",[]],["title/170-7",[8,16.222,546,48.923,830,40.503]],["name/170-7",[]],["text/170-7",[]],["component/170-7",[]],["title/170-8",[2177,45.248]],["name/170-8",[]],["text/170-8",[]],["component/170-8",[]],["title/170-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/170-9",[]],["text/170-9",[]],["component/170-9",[]],["title/170-10",[8,16.222,746,27.183,1005,22.733]],["name/170-10",[]],["text/170-10",[]],["component/170-10",[]],["title/170-11",[1255,32.348,1457,33.624]],["name/170-11",[]],["text/170-11",[]],["component/170-11",[]],["title/170",[545,55.999,862,41.88,1129,28.716]],["name/170",[545,0.919,862,0.988]],["text/170",[0,2,5,1.989,8,1.778,10,0.631,20,0.89,26,1.16,29,1.862,30,0.688,32,1.157,33,0.806,34,2.401,35,1.533,36,1.257,40,0.529,42,0.7,45,1.287,49,1.107,56,0.757,57,0.886,71,0.83,84,3.165,88,1.688,90,0.715,91,2.234,93,0.895,94,0.936,95,1.022,99,0.768,101,0.763,104,1.939,110,1.798,115,0.904,125,3.111,127,2.486,128,1.625,129,1.822,136,1.013,138,1.279,139,0.569,144,0.68,148,0.529,155,1.036,165,1.038,168,0.813,169,0.904,172,2.368,183,0.637,191,0.607,196,1.202,211,4.138,214,1.492,223,1.265,224,1.418,232,1.265,239,0.747,245,3.286,251,0.774,252,1.771,254,1.065,264,0.968,277,0.782,279,0.721,280,0.717,286,1.643,296,0.652,297,0.877,301,0.645,308,0.649,316,1.378,325,0.992,331,0.83,335,0.914,351,2.478,361,0.73,386,1.592,401,0.719,402,1.073,406,0.963,411,1.206,424,1.119,425,3.502,441,0.965,457,4.372,460,0.677,465,0.669,470,1.272,487,2.106,502,0.706,514,1.704,525,0.708,528,3.132,545,4.539,546,5.686,547,1.69,553,1.721,557,0.919,647,0.965,659,1.173,664,1.244,668,2.025,673,0.782,676,1.047,686,0.619,690,1.743,695,2.358,711,1.755,736,2.354,752,0.803,754,0.686,788,0.93,827,2.115,829,3.322,830,4.707,835,0.848,840,4.291,844,1.315,861,0.904,862,2.068,865,1.519,867,1.038,963,0.82,973,1.173,981,1.244,1005,0.545,1008,0.868,1076,0.745,1110,1.056,1122,2.12,1123,1.119,1127,1.132,1129,0.785,1132,0.733,1201,1.096,1279,0.965,1287,1.014,1421,1.096,1472,0.93,1477,0.877,1492,2.068,1519,1.224,1602,1.418,1639,1.378,1735,0.852,1967,4.006,2177,1.932,2369,1.345,2636,0.925,2642,0.947,2667,1.378,2716,1.378,2734,2.49,2739,1.378,2850,2.49,2990,1.524,2991,2.753,2992,1.524,2993,1.524,2994,1.524,2995,1.524,2996,1.524,2997,2.753,2998,1.524,2999,1.524,3000,2.753,3001,2.753,3002,1.524,3003,1.418,3004,2.753,3005,1.524,3006,1.524,3007,1.524,3008,1.524,3009,1.524,3010,2.753,3011,1.524,3012,1.524,3013,1.524,3014,2.753,3015,2.753,3016,1.524,3017,1.524,3018,2.753,3019,1.524,3020,2.753,3021,1.524,3022,1.524,3087,1.006,3506,0.985,3507,1.604,3508,1.604,3509,3.114,3510,1.604,3511,1.132,3512,0.971]],["component/170",[7,0.401]],["title/171-1",[402,17.184,1456,33.432]],["name/171-1",[]],["text/171-1",[]],["component/171-1",[]],["title/171-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/171-2",[]],["text/171-2",[]],["component/171-2",[]],["title/171-3",[8,18.856,150,32.262]],["name/171-3",[]],["text/171-3",[]],["component/171-3",[]],["title/171-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/171-4",[]],["text/171-4",[]],["component/171-4",[]],["title/171-5",[2177,45.248]],["name/171-5",[]],["text/171-5",[]],["component/171-5",[]],["title/171-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/171-6",[]],["text/171-6",[]],["component/171-6",[]],["title/171-7",[8,16.222,746,27.183,1005,22.733]],["name/171-7",[]],["text/171-7",[]],["component/171-7",[]],["title/171-8",[1255,32.348,1457,33.624]],["name/171-8",[]],["text/171-8",[]],["component/171-8",[]],["title/171",[178,34.172,1129,32.728,1473,43.651]],["name/171",[677,0.844,1473,0.903]],["text/171",[5,2.98,8,2.221,12,1.833,26,2.317,29,2.219,33,1.804,84,3.118,88,2.188,90,1.599,99,1.718,129,1.65,135,2.365,136,1.48,138,2.556,139,1.272,144,1.522,148,1.183,155,1.283,161,1.366,172,1.513,178,5.003,183,1.426,191,1.357,214,2.179,228,1.797,231,2.428,239,1.671,263,1.706,264,1.934,277,1.749,280,2.587,301,1.444,308,1.451,331,1.857,349,1.873,351,1.584,361,1.634,394,2.251,395,2.234,401,1.608,402,1.608,406,2.417,445,2.203,446,1.783,451,1.79,459,2.188,465,1.497,470,2.54,484,2.322,514,2.929,654,2.477,686,1.385,687,2.405,695,2.812,726,2.159,746,1.458,752,1.797,788,2.081,830,2.173,835,1.898,873,2.304,896,2.251,983,2.561,1005,1.22,1008,1.943,1068,2.452,1076,1.666,1106,1.849,1107,1.889,1129,1.756,1187,2.532,1461,1.933,1472,2.081,1473,3.778,1474,3.171,1475,3.997,1476,5.116,1477,3.165,1478,2.883,1479,2.942,1480,3.171,1481,3.171,1482,3.083,1735,1.907,2177,3.547,2636,2.069,2642,2.118,3087,2.251,3506,2.203,3511,2.532,3512,2.173,3513,2.532,3514,2.592]],["component/171",[7,0.401]],["title/172-1",[402,17.184,1456,33.432]],["name/172-1",[]],["text/172-1",[]],["component/172-1",[]],["title/172-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/172-2",[]],["text/172-2",[]],["component/172-2",[]],["title/172-3",[118,25.347,694,45.892]],["name/172-3",[]],["text/172-3",[]],["component/172-3",[]],["title/172-4",[1145,45.341,1483,35.06]],["name/172-4",[]],["text/172-4",[]],["component/172-4",[]],["title/172-5",[1091,43.832,1145,45.341]],["name/172-5",[]],["text/172-5",[]],["component/172-5",[]],["title/172-6",[88,20.111,468,31.469,532,44.832]],["name/172-6",[]],["text/172-6",[]],["component/172-6",[]],["title/172-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/172-7",[]],["text/172-7",[]],["component/172-7",[]],["title/172-8",[8,16.222,30,28.681,150,27.755]],["name/172-8",[]],["text/172-8",[]],["component/172-8",[]],["title/172-9",[104,32.728,264,22.343,686,25.822]],["name/172-9",[]],["text/172-9",[]],["component/172-9",[]],["title/172-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/172-10",[]],["text/172-10",[]],["component/172-10",[]],["title/172-11",[2177,45.248]],["name/172-11",[]],["text/172-11",[]],["component/172-11",[]],["title/172-12",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/172-12",[]],["text/172-12",[]],["component/172-12",[]],["title/172-13",[8,16.222,746,27.183,1005,22.733]],["name/172-13",[]],["text/172-13",[]],["component/172-13",[]],["title/172-14",[728,36.562,1078,41.057,3463,57.467]],["name/172-14",[]],["text/172-14",[]],["component/172-14",[]],["title/172-15",[1255,32.348,1457,33.624]],["name/172-15",[]],["text/172-15",[]],["component/172-15",[]],["title/172",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/172",[728,0.757,1484,1]],["text/172",[2,0.571,5,0.769,6,1.268,7,0.245,8,1.751,10,1.043,12,0.512,13,1.084,14,0.775,15,2.3,17,0.761,20,0.556,26,0.401,29,1.918,30,1.43,32,1.332,33,0.503,34,1.426,35,0.53,36,0.434,37,1.095,40,2.282,42,0.819,45,1.177,56,0.886,57,1.036,65,0.654,79,2.43,84,0.727,87,1.16,88,0.797,90,1.18,94,0.584,96,0.466,97,0.648,98,1.177,101,1.878,104,0.919,110,0.852,117,0.757,118,3.086,120,1.536,134,2.089,135,0.409,136,1.688,138,1.744,139,1.4,142,0.525,144,1.415,148,0.33,155,0.947,160,0.532,161,0.715,171,0.468,172,2.109,183,0.746,184,0.839,186,2.35,189,0.556,191,2.364,196,1.099,214,1.695,224,0.49,234,0.556,239,0.874,251,0.483,252,0.447,253,0.648,264,0.627,267,1.494,271,2.09,272,0.545,275,0.492,277,0.488,278,0.587,279,1.5,280,0.447,283,0.581,292,1.002,300,0.659,301,0.403,308,1.071,315,2.159,316,1.586,319,1.622,320,1.064,328,0.742,330,1.205,331,0.518,333,0.581,340,0.595,341,0.571,350,0.542,355,1.195,361,0.855,401,1.77,402,1.381,406,1.495,408,0.52,412,0.671,443,0.988,451,0.499,455,0.492,465,0.418,468,2.118,470,0.824,482,1.115,492,2.673,502,0.441,514,2.806,517,0.577,525,1.744,528,1.047,531,0.902,532,1.776,538,2.508,539,0.732,547,0.427,552,0.753,580,0.571,593,0.471,603,1.122,608,0.51,620,0.577,656,1.824,666,0.591,679,1.562,683,2.07,686,2.106,694,1.108,695,0.486,698,0.523,723,0.713,728,4.24,746,1.356,752,0.501,754,0.428,755,0.764,765,0.691,766,0.648,773,0.638,835,2.089,850,1.296,871,0.665,890,3.604,894,0.648,896,0.628,903,0.556,907,0.706,932,0.654,972,0.507,985,1.604,1005,1.53,1008,0.542,1024,1.411,1076,0.871,1078,0.615,1083,0.723,1087,1.869,1089,3.141,1090,1.236,1091,2.538,1092,0.633,1096,0.715,1129,0.49,1133,4.203,1141,0.723,1142,0.753,1143,0.753,1145,4.664,1150,0.988,1151,3.849,1279,1.594,1381,0.753,1390,0.599,1400,0.527,1402,2.44,1416,0.602,1434,0.559,1456,0.431,1475,0.691,1477,1.026,1485,1.659,1488,4.63,1489,1.539,1490,0.623,1491,2.172,1492,0.715,1493,1.539,1494,2.172,1495,1.539,1496,0.821,1497,0.885,1498,0.665,1499,0.691,1500,0.885,1501,2.948,1502,1.659,1503,1.659,1504,2.221,1505,0.885,1506,1.659,1507,0.885,1508,1.356,1509,0.79,1513,0.699,1514,2.889,1515,0.742,1516,0.776,1517,0.715,1518,1.539,1519,0.764,1520,0.643,1521,0.821,1522,0.885,1523,0.839,1524,0.671,1622,0.742,1647,0.659,2177,0.915,2301,1.391,2408,0.821,2808,1.539,3087,0.628,3103,0.885,3287,0.821,3382,0.678,3462,0.885,3463,4.297,3465,1.714,3466,0.839,3468,0.914,3469,0.914,3471,0.839,3511,0.706,3512,0.606,3513,0.706,3514,0.723,3515,1.001,3516,2.017,3517,2.848,3518,1.001,3519,1.001,3520,1.001,3521,1.001,3522,1.001,3523,1.001,3524,1.001,3525,1.001]],["component/172",[7,0.401]],["title/173-1",[402,17.184,1456,33.432]],["name/173-1",[]],["text/173-1",[]],["component/173-1",[]],["title/173-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/173-2",[]],["text/173-2",[]],["component/173-2",[]],["title/173-3",[8,18.856,150,32.262]],["name/173-3",[]],["text/173-3",[]],["component/173-3",[]],["title/173-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/173-4",[]],["text/173-4",[]],["component/173-4",[]],["title/173-5",[2177,45.248]],["name/173-5",[]],["text/173-5",[]],["component/173-5",[]],["title/173-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/173-6",[]],["text/173-6",[]],["component/173-6",[]],["title/173-7",[8,16.222,746,27.183,1005,22.733]],["name/173-7",[]],["text/173-7",[]],["component/173-7",[]],["title/173-8",[191,22.192,984,36.025,1431,31.324,1483,26.465]],["name/173-8",[]],["text/173-8",[]],["component/173-8",[]],["title/173-9",[1255,32.348,1457,33.624]],["name/173-9",[]],["text/173-9",[]],["component/173-9",[]],["title/173",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/173",[1431,0.739,1559,0.928]],["text/173",[0,0.792,3,0.638,5,2.53,6,0.751,8,1.635,10,1.879,13,0.51,15,0.802,17,1.578,26,1.137,29,2.585,32,2.467,33,0.789,34,0.671,40,0.936,45,2.121,56,0.741,84,3.12,87,1.756,88,1.857,90,0.699,101,0.746,104,1.39,105,1.606,112,0.708,113,0.662,116,0.845,117,0.633,118,2.361,125,0.714,129,0.721,135,1.16,136,1.221,138,1.718,143,0.841,148,0.517,150,1.179,154,0.762,155,1.707,161,2.352,169,0.885,172,0.662,183,1.129,189,0.871,191,2.55,196,0.651,211,0.795,214,1.069,220,1.083,228,1.422,234,0.871,239,0.731,242,1.12,252,0.701,255,0.894,264,0.949,271,2.217,272,0.854,275,0.771,277,0.765,279,0.705,288,1.238,292,0.838,297,1.553,301,0.631,308,0.635,319,0.644,322,1.083,331,0.812,349,0.819,351,1.718,354,0.921,357,0.88,361,0.714,402,0.86,406,2.24,408,0.815,431,0.905,451,0.783,464,0.963,465,0.655,470,1.247,502,0.691,514,1.939,567,3.263,586,0.91,593,0.738,654,1.961,656,0.858,663,1.024,668,0.802,678,0.894,679,0.62,682,1.463,686,1.844,695,1.38,719,2.149,746,1.154,752,0.786,754,0.671,772,0.932,779,0.95,830,2.892,834,1.062,835,0.83,861,0.885,863,3.766,864,1.348,893,1.007,1005,1.323,1008,0.849,1068,1.941,1075,0.885,1076,1.319,1106,0.808,1107,0.826,1123,1.095,1129,0.768,1174,1.016,1195,0.921,1279,0.944,1287,0.992,1390,0.938,1431,5.318,1434,2.664,1436,1.261,1441,2.777,1456,0.675,1461,0.845,1468,1.744,1469,0.999,1475,1.083,1477,0.858,1483,2.153,1490,0.977,1498,1.042,1520,1.007,1526,1.961,1527,1.083,1555,1.838,1559,3.705,1561,1.133,1562,1.238,1563,1.387,1578,2.078,1581,2.329,1585,1.838,1608,2.441,1622,1.163,1735,0.834,1779,1.12,1880,2.202,2177,1.897,2398,1.163,2477,1.133,2587,1.238,2636,0.905,2642,0.926,2646,1.197,2844,2.51,3023,1.387,3024,1.491,3025,2.51,3027,3.127,3028,1.491,3029,1.491,3030,4.22,3031,2.699,3032,3.439,3033,2.135,3034,3.439,3035,1.387,3037,1.491,3038,1.491,3039,1.491,3040,2.51,3041,1.491,3087,0.984,3382,1.062,3490,1.433,3506,0.963,3511,1.107,3512,0.95,3513,1.107,3514,1.133,3526,2.84,3527,1.348,3528,1.433,3529,1.433,3530,2.594,3531,1.569,3532,1.569,3533,1.569,3534,1.569,3535,1.686,3536,2.84,3537,1.569,3538,1.686,3539,1.569,3540,1.569,3541,1.686]],["component/173",[7,0.401]],["title/174-1",[402,17.184,1456,33.432]],["name/174-1",[]],["text/174-1",[]],["component/174-1",[]],["title/174-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/174-2",[]],["text/174-2",[]],["component/174-2",[]],["title/174-3",[8,18.856,150,32.262]],["name/174-3",[]],["text/174-3",[]],["component/174-3",[]],["title/174-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/174-4",[]],["text/174-4",[]],["component/174-4",[]],["title/174-5",[2177,45.248]],["name/174-5",[]],["text/174-5",[]],["component/174-5",[]],["title/174-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/174-6",[]],["text/174-6",[]],["component/174-6",[]],["title/174-7",[8,16.222,746,27.183,1005,22.733]],["name/174-7",[]],["text/174-7",[]],["component/174-7",[]],["title/174-8",[8,18.856,647,46.771]],["name/174-8",[]],["text/174-8",[]],["component/174-8",[]],["title/174-9",[1255,32.348,1457,33.624]],["name/174-9",[]],["text/174-9",[]],["component/174-9",[]],["title/174",[402,10.417,1129,23.063,3494,54.705,3499,58.768]],["name/174",[3494,1.056,3499,1.135]],["text/174",[0,0.454,3,0.689,5,0.986,8,1.228,10,1.82,12,1.23,13,0.292,14,0.994,17,0.976,23,1.076,24,0.478,26,0.964,29,2.095,30,0.385,32,0.359,33,0.452,34,0.384,40,0.794,42,1.581,45,0.753,56,0.424,58,0.544,79,0.4,84,3.696,88,0.724,101,1.144,104,1.178,105,0.7,118,2.214,125,0.772,129,0.413,133,0.534,135,0.983,136,1.061,138,1.6,150,1.264,154,1.169,155,1.089,161,2.473,164,0.537,168,0.455,169,0.507,172,0.715,174,0.686,181,0.641,183,1.21,189,0.499,190,0.531,191,0.91,199,0.989,211,0.859,214,0.906,224,0.44,227,0.582,228,1.205,236,0.38,239,1.121,242,0.641,248,1.508,252,1.076,255,0.512,264,0.566,271,1.925,272,0.489,275,0.441,277,0.827,286,0.509,296,0.689,301,0.362,308,0.973,316,0.427,320,0.509,325,0.556,331,0.465,349,2.642,351,1.6,361,0.772,394,0.564,401,0.403,402,0.532,403,0.634,406,2.789,415,0.592,464,0.552,465,1.004,470,2.56,474,1.629,514,1.917,517,0.518,547,0.723,549,2.515,557,1.746,593,0.423,596,0.56,609,0.753,620,0.518,640,0.709,647,0.541,652,0.737,656,0.491,664,0.697,672,1.571,678,0.512,679,0.355,686,0.929,690,0.541,694,1.001,695,0.437,708,1.279,719,1.329,723,0.341,726,0.541,729,0.556,745,0.824,746,0.365,752,0.45,754,0.384,790,1.971,827,0.905,830,2.194,833,0.657,834,1.147,835,1.273,859,0.541,861,1.718,907,1.196,922,1.362,933,0.577,949,0.544,982,0.587,1004,0.602,1005,0.576,1008,0.487,1012,0.657,1068,1.159,1075,0.507,1076,1.682,1106,0.463,1107,0.473,1108,0.62,1110,0.592,1114,0.686,1123,0.627,1129,0.44,1138,0.614,1187,2.149,1195,0.527,1211,1.089,1214,0.597,1279,1.02,1287,0.568,1390,0.537,1431,0.48,1434,0.501,1461,0.484,1475,0.62,1477,0.491,1483,0.765,1490,0.56,1509,0.709,1514,0.657,1526,1.171,1527,0.62,1546,0.722,1555,1.097,1556,0.548,1561,0.649,1585,0.582,1625,1.718,1643,0.676,1693,0.794,1708,0.602,1735,0.901,1750,0.666,1771,2.127,1783,0.666,1795,0.753,1916,0.821,1930,1.549,1933,0.709,1950,1.183,2092,0.697,2177,1.174,2211,0.697,2256,0.722,2312,0.794,2429,0.794,2477,0.649,2588,0.753,2596,0.794,2636,0.518,2642,0.531,3033,0.676,3040,0.794,3087,0.564,3115,0.794,3129,2.621,3135,2.325,3234,0.737,3311,0.821,3382,0.608,3394,0.821,3399,0.772,3494,7.23,3498,0.854,3499,3.4,3500,8.877,3501,3.309,3502,1.549,3506,0.552,3511,0.634,3512,0.544,3513,0.634,3514,0.649,3542,1.695,3543,0.898,3544,1.611,3545,0.898,3546,0.898,3547,0.898,3548,1.695,3549,0.898,3550,1.421,3551,0.898,3552,0.898,3553,0.898,3554,0.898,3555,0.898,3556,0.966,3557,0.898,3558,0.898,3559,0.898,3560,0.898,3561,0.898,3562,1.695,3563,0.898,3564,0.898,3565,0.898,3566,3.045,3567,1.695,3568,0.898,3569,0.898,3570,0.898,3571,0.737,3572,0.898,3573,0.898,3574,0.898,3575,0.898,3576,1.822,3577,0.898,3578,2.406,3579,0.898,3580,0.898,3581,0.898,3582,0.898,3583,0.898,3584,0.898,3585,0.898,3586,0.898,3587,1.695,3588,2.406,3589,0.898,3590,0.898,3591,0.898,3592,0.898,3593,0.898,3594,0.898,3595,0.898,3596,0.898,3597,1.695,3598,0.898,3599,0.898,3600,0.898,3601,0.898,3602,0.898]],["component/174",[7,0.401]],["title/175-1",[402,17.184,1456,33.432]],["name/175-1",[]],["text/175-1",[]],["component/175-1",[]],["title/175-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/175-2",[]],["text/175-2",[]],["component/175-2",[]],["title/175-3",[8,18.856,150,32.262]],["name/175-3",[]],["text/175-3",[]],["component/175-3",[]],["title/175-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/175-4",[]],["text/175-4",[]],["component/175-4",[]],["title/175-5",[2177,45.248]],["name/175-5",[]],["text/175-5",[]],["component/175-5",[]],["title/175-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/175-6",[]],["text/175-6",[]],["component/175-6",[]],["title/175-7",[8,16.222,746,27.183,1005,22.733]],["name/175-7",[]],["text/175-7",[]],["component/175-7",[]],["title/175-8",[1255,32.348,1457,33.624]],["name/175-8",[]],["text/175-8",[]],["component/175-8",[]],["title/175",[402,10.417,1129,23.063,1591,45.657,3042,44.784,3043,33.634]],["name/175",[1591,0.882,3043,0.988]],["text/175",[3,0.93,8,2.144,13,0.743,14,0.944,19,3.122,26,0.916,29,2.405,33,1.15,38,1.244,40,2.068,42,0.998,56,1.08,84,3.737,99,1.9,105,2.17,115,1.29,117,0.923,118,2.046,135,0.935,136,1.015,138,2.77,139,1.407,148,0.754,150,1.647,154,1.111,155,1.418,161,2.703,162,1.596,172,0.965,191,2.373,214,1.979,239,1.066,240,1.633,248,2.601,264,0.764,273,3.13,277,1.115,280,1.022,296,0.93,301,0.92,324,1.614,331,1.184,349,1.194,351,1.01,361,1.041,402,1.387,406,1.318,408,1.189,415,1.506,464,1.404,465,0.954,474,2.686,493,5.599,502,1.007,506,1.633,514,1.392,525,1.01,541,1.746,557,2.275,564,2.089,593,1.867,608,1.164,621,1.633,645,1.875,656,1.251,686,2.029,690,1.376,695,1.111,708,1.215,752,1.145,754,0.978,835,1.21,861,1.29,1005,0.778,1008,1.238,1076,1.062,1091,1.29,1106,1.179,1107,1.205,1109,1.563,1129,1.119,1131,1.424,1150,1.205,1195,1.342,1279,1.376,1475,1.579,1477,1.251,1514,1.673,1517,1.633,1524,1.533,1556,1.395,1566,2.022,1591,4.955,1599,2.022,1600,2.022,1601,2.022,1622,1.696,1735,1.215,1781,1.966,2177,1.935,2342,1.838,2897,1.966,3043,5.961,3044,3.771,3045,2.174,3046,2.174,3047,2.174,3048,2.174,3049,2.174,3050,2.174,3051,2.174,3052,2.174,3053,2.174,3054,2.174,3055,2.174,3056,2.174,3057,2.287,3058,3.771,3059,2.174,3060,2.174,3061,2.174,3062,2.174,3087,1.435,3382,1.548,3506,1.404,3511,1.614,3512,1.385,3513,1.614,3514,1.652]],["component/175",[7,0.401]],["title/176-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/176-1",[]],["text/176-1",[]],["component/176-1",[]],["title/176-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/176-2",[]],["text/176-2",[]],["component/176-2",[]],["title/176-3",[8,18.856,150,32.262]],["name/176-3",[]],["text/176-3",[]],["component/176-3",[]],["title/176-4",[401,41.598]],["name/176-4",[]],["text/176-4",[]],["component/176-4",[]],["title/176-5",[191,29.399,615,42.499]],["name/176-5",[]],["text/176-5",[]],["component/176-5",[]],["title/176-6",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/176-6",[]],["text/176-6",[]],["component/176-6",[]],["title/176-7",[2177,45.248]],["name/176-7",[]],["text/176-7",[]],["component/176-7",[]],["title/176-8",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/176-8",[]],["text/176-8",[]],["component/176-8",[]],["title/176-9",[8,16.222,746,27.183,1005,22.733]],["name/176-9",[]],["text/176-9",[]],["component/176-9",[]],["title/176-10",[1255,32.348,1457,33.624]],["name/176-10",[]],["text/176-10",[]],["component/176-10",[]],["title/176",[615,46.09,937,37.981,1129,28.716]],["name/176",[937,0.896,1528,0.903]],["text/176",[0,0.878,3,0.707,5,2.113,6,0.833,8,1.861,10,1.227,18,0.773,26,1.248,29,3.26,30,2.213,33,0.875,36,0.755,38,2.304,40,1.396,42,0.759,56,0.821,58,1.054,82,1.145,84,3.177,88,1.786,96,0.81,105,1.287,108,1.177,118,1.381,129,0.8,135,1.73,136,1.32,138,1.376,148,1.396,150,0.722,155,1.114,161,3.37,172,0.734,183,2.36,185,2.09,191,1.179,199,1.015,201,1.201,211,0.882,214,1.174,228,1.561,239,1.452,262,0.992,264,0.581,265,1.145,271,2.757,277,0.848,279,1.402,301,0.7,308,0.704,316,0.827,319,1.28,330,2.001,331,0.9,350,0.942,361,0.792,378,2.11,401,0.78,402,0.936,406,2.383,408,0.904,446,0.864,465,0.726,470,1.368,486,4.679,502,0.766,514,3.105,516,1.426,528,0.971,552,0.698,601,1.29,608,1.586,615,3.609,620,1.003,630,1.863,668,1.593,674,1.126,676,1.136,677,1.061,679,1.233,683,0.912,686,1.204,687,2.09,695,1.514,719,2.338,746,0.707,752,0.871,754,0.744,760,2.09,788,1.009,790,0.947,830,1.054,835,0.92,873,1.117,937,2.741,970,1.166,1005,0.591,1008,0.942,1075,0.981,1076,0.808,1106,0.896,1107,0.916,1126,1.189,1127,1.227,1129,0.851,1130,1.054,1134,1.257,1150,2.717,1169,1.201,1201,1.189,1279,2.548,1286,1.372,1305,1.328,1390,2.532,1434,0.971,1461,0.937,1469,1.108,1472,1.009,1475,1.201,1477,0.951,1514,3.775,1528,4.683,1529,1.328,1530,1.372,1531,1.426,1532,1.538,1533,1.242,1534,1.538,1537,1.328,1538,2.071,1540,1.372,1544,2.866,1545,1.29,1546,1.398,1552,1.426,1555,2.018,1556,1.901,1590,3.232,1622,1.29,1735,0.924,1779,2.225,2177,2.065,2301,1.29,2636,1.003,2642,1.027,3063,4.024,3064,1.653,3065,1.653,3066,1.653,3067,1.653,3068,1.653,3069,1.653,3070,1.653,3071,1.653,3073,4.024,3077,1.653,3079,1.653,3080,1.653,3081,1.653,3082,1.653,3083,2.962,3084,1.653,3085,1.653,3086,1.653,3087,1.091,3382,1.177,3477,2.071,3485,2.679,3506,1.068,3511,1.227,3512,1.054,3513,1.227,3514,1.257,3603,1.87,3604,1.87,3605,1.739,3606,1.87,3607,1.739,3608,1.87]],["component/176",[7,0.401]],["title/177-1",[402,17.184,1456,33.432]],["name/177-1",[]],["text/177-1",[]],["component/177-1",[]],["title/177-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/177-2",[]],["text/177-2",[]],["component/177-2",[]],["title/177-3",[8,18.856,150,32.262]],["name/177-3",[]],["text/177-3",[]],["component/177-3",[]],["title/177-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/177-4",[]],["text/177-4",[]],["component/177-4",[]],["title/177-5",[2177,45.248]],["name/177-5",[]],["text/177-5",[]],["component/177-5",[]],["title/177-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/177-6",[]],["text/177-6",[]],["component/177-6",[]],["title/177-7",[8,16.222,746,27.183,1005,22.733]],["name/177-7",[]],["text/177-7",[]],["component/177-7",[]],["title/177-8",[1255,32.348,1457,33.624]],["name/177-8",[]],["text/177-8",[]],["component/177-8",[]],["title/177",[138,34.207,139,18.53,677,47.243]],["name/177",[138,0.611,677,0.844]],["text/177",[5,2.737,7,0.615,8,1.043,17,1.018,26,3.008,29,1.649,33,1.262,34,1.074,37,1.465,40,0.828,58,1.521,84,3.322,88,1.696,90,1.119,101,1.194,110,2.56,113,1.059,129,1.977,135,1.026,136,1.442,138,3.617,142,1.316,144,1.065,146,1.311,148,1.418,150,1.042,155,0.898,161,3.12,163,1.243,170,1.492,172,1.059,180,1.492,183,0.998,191,1.626,196,3.118,199,2.508,205,1.916,214,1.619,215,2.969,228,1.257,239,1.17,264,1.437,271,1.166,277,1.224,279,1.934,280,2.986,301,2.269,316,1.194,331,2.225,333,1.456,351,1.109,361,1.143,401,1.126,402,1.247,406,1.429,408,1.305,445,1.542,459,1.531,465,1.048,470,2.475,474,1.699,484,2.784,508,2.465,514,2.344,521,1.625,525,1.109,531,1.207,547,1.071,556,1.492,570,1.465,593,1.182,608,1.278,630,3.372,677,1.531,686,0.97,695,3.65,719,1.387,728,1.373,732,1.599,745,1.22,752,1.257,760,1.683,864,2.158,865,1.316,910,1.501,932,2.807,949,4.55,950,1.981,1008,1.36,1076,1.166,1091,1.416,1106,1.294,1107,1.322,1114,1.916,1169,2.969,1255,1.045,1390,2.571,1458,2.059,1459,2.219,1460,2.219,1461,1.353,1462,2.219,1463,2.059,1465,1.916,1466,2.219,1467,1.947,1468,1.542,1469,1.599,1470,2.219,1471,2.219,1472,1.456,1477,1.373,1484,1.814,1530,1.981,1661,1.837,1735,1.334,2177,3.257,2348,1.916,2477,1.814,2479,2.018,2634,1.947,2636,1.448,2642,2.539,2646,1.916,3087,2.698,3088,2.386,3089,2.386,3090,2.386,3506,1.542,3511,1.772,3512,1.521,3513,1.772,3609,2.51]],["component/177",[7,0.401]],["title/178-1",[402,17.184,1456,33.432]],["name/178-1",[]],["text/178-1",[]],["component/178-1",[]],["title/178-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/178-2",[]],["text/178-2",[]],["component/178-2",[]],["title/178-3",[8,18.856,150,32.262]],["name/178-3",[]],["text/178-3",[]],["component/178-3",[]],["title/178-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/178-4",[]],["text/178-4",[]],["component/178-4",[]],["title/178-5",[17,23.79,18,26.062,2658,46.286,3610,58.665]],["name/178-5",[]],["text/178-5",[]],["component/178-5",[]],["title/178-6",[2177,45.248]],["name/178-6",[]],["text/178-6",[]],["component/178-6",[]],["title/178-7",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/178-7",[]],["text/178-7",[]],["component/178-7",[]],["title/178-8",[8,16.222,746,27.183,1005,22.733]],["name/178-8",[]],["text/178-8",[]],["component/178-8",[]],["title/178-9",[1255,32.348,1457,33.624]],["name/178-9",[]],["text/178-9",[]],["component/178-9",[]],["title/178",[311,30.628,1609,35.079,1610,36.54,3228,44.782]],["name/178",[1610,0.599,1612,0.551,3228,0.734]],["text/178",[3,1.069,8,1.671,10,3.039,13,0.855,17,1.066,18,1.168,26,1.791,32,1.787,34,1.125,45,2.593,79,1.172,84,3.176,88,0.791,99,1.259,105,1.086,109,2.114,112,1.186,113,1.109,117,1.061,118,0.858,121,1.445,125,1.198,129,1.209,136,0.673,138,1.161,139,0.932,144,1.116,148,0.867,155,3.373,157,2.04,168,1.333,170,1.563,172,1.109,174,2.007,183,1.778,191,0.995,206,1.835,214,2.908,226,1.65,239,1.225,247,1.563,249,1.361,251,1.268,252,1.999,255,1.499,264,0.879,266,1.924,277,1.282,296,2.373,301,2.349,308,1.064,311,2.335,316,1.251,320,1.491,331,1.361,335,1.499,361,1.198,391,2.249,402,0.989,406,0.874,442,1.835,460,1.109,465,1.867,470,1.964,487,1.141,502,1.158,514,1.57,547,1.122,557,1.508,567,1.798,569,2.075,608,1.339,617,1.438,679,1.769,686,1.728,695,1.278,708,1.398,752,1.317,754,1.125,760,1.763,863,2.075,871,1.747,907,1.856,922,2.114,963,1.344,972,2.959,1005,0.894,1008,1.424,1015,1.978,1062,1.798,1075,1.483,1076,1.221,1137,1.877,1421,3.058,1431,4.122,1441,3.193,1477,1.438,1562,2.075,1578,3.273,1581,2.157,1609,1.572,1610,4.809,1611,2.972,1612,1.508,1613,2.325,1614,2.325,1619,2.04,1620,2.972,1623,2.157,1735,1.398,1880,3.47,2005,2.402,2006,2.402,2177,2.847,2374,3.317,2636,1.516,2642,1.553,2658,2.075,3087,1.65,3228,4.456,3260,6.292,3391,2.26,3506,1.615,3511,1.856,3512,1.593,3611,2.63,3612,2.63,3613,4.473,3614,2.63,3615,4.473,3616,2.63,3617,2.63,3618,2.63,3619,2.63]],["component/178",[7,0.401]],["title/179-1",[402,17.184,1456,33.432]],["name/179-1",[]],["text/179-1",[]],["component/179-1",[]],["title/179-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/179-2",[]],["text/179-2",[]],["component/179-2",[]],["title/179-3",[8,18.856,150,32.262]],["name/179-3",[]],["text/179-3",[]],["component/179-3",[]],["title/179-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/179-4",[]],["text/179-4",[]],["component/179-4",[]],["title/179-5",[2177,45.248]],["name/179-5",[]],["text/179-5",[]],["component/179-5",[]],["title/179-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/179-6",[]],["text/179-6",[]],["component/179-6",[]],["title/179-7",[8,16.222,746,27.183,1005,22.733]],["name/179-7",[]],["text/179-7",[]],["component/179-7",[]],["title/179-8",[1255,32.348,1457,33.624]],["name/179-8",[]],["text/179-8",[]],["component/179-8",[]],["title/179",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/179",[1612,0.793,1754,0.977]],["text/179",[5,2.47,8,1.463,13,1.227,14,2.49,17,3.053,18,1.677,26,2.415,84,3.168,88,2.264,105,2.49,118,1.231,129,1.736,136,1.542,138,2.663,139,1.339,148,1.245,155,3.759,168,1.914,172,1.593,191,1.428,214,2.835,224,1.848,228,1.891,239,1.759,264,1.262,271,1.753,277,1.841,301,1.52,308,1.527,316,1.796,331,1.954,361,1.719,391,1.899,402,1.333,406,2.004,460,1.593,465,1.576,470,2.647,487,1.638,514,3.017,547,1.611,557,2.165,608,1.922,617,2.065,679,2.385,686,2.329,695,1.835,708,2.007,752,1.891,754,1.615,930,2.664,963,1.93,1005,1.284,1008,2.045,1075,3.401,1076,1.753,1137,2.695,1279,2.272,1421,4.122,1468,6.151,1472,2.19,1477,2.065,1612,2.165,1735,2.007,1754,2.664,1755,6.967,1756,3.338,2177,3.671,2636,2.177,2642,2.229,3087,2.369,3194,3.449,3382,2.556,3506,2.318,3511,2.664,3512,2.287,3620,3.776,3621,3.776,3622,3.776]],["component/179",[7,0.401]],["title/180-1",[402,17.184,1456,33.432]],["name/180-1",[]],["text/180-1",[]],["component/180-1",[]],["title/180-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/180-2",[]],["text/180-2",[]],["component/180-2",[]],["title/180-3",[8,18.856,150,32.262]],["name/180-3",[]],["text/180-3",[]],["component/180-3",[]],["title/180-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/180-4",[]],["text/180-4",[]],["component/180-4",[]],["title/180-5",[2177,45.248]],["name/180-5",[]],["text/180-5",[]],["component/180-5",[]],["title/180-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/180-6",[]],["text/180-6",[]],["component/180-6",[]],["title/180-7",[8,16.222,746,27.183,1005,22.733]],["name/180-7",[]],["text/180-7",[]],["component/180-7",[]],["title/180-8",[1255,32.348,1457,33.624]],["name/180-8",[]],["text/180-8",[]],["component/180-8",[]],["title/180",[311,34.906,1609,39.979,3623,54.829]],["name/180",[1612,0.793,3623,1.135]],["text/180",[5,2.417,8,1.431,10,1.446,13,1.194,17,0.849,18,0.93,25,1.513,26,0.838,29,2.835,32,2.681,33,1.053,40,0.691,45,2.18,63,1.304,79,0.933,84,3.613,87,2.272,88,0.63,90,0.933,105,2.027,110,1.668,117,0.845,118,1.198,125,0.954,129,0.963,136,0.536,148,0.691,150,0.869,154,1.017,155,1.313,161,2.556,183,2.345,189,1.162,191,1.857,214,1.848,225,1.495,228,1.049,234,1.162,239,1.712,242,1.495,251,1.01,264,0.7,271,2.279,272,1.139,279,1.652,292,1.118,297,1.145,301,0.843,319,0.86,331,1.084,349,1.093,351,0.925,356,1.098,361,0.954,386,1.151,402,0.812,406,0.696,408,1.088,431,1.207,464,1.286,470,1.613,487,0.908,502,0.922,508,1.201,514,1.289,567,3.355,593,0.985,617,1.145,654,1.446,656,1.145,663,1.367,668,1.07,682,1.893,686,1.895,694,1.236,695,2.385,719,1.157,746,1.494,752,1.049,754,1.571,772,1.244,779,1.268,782,1.756,830,2.225,863,4.654,893,1.345,963,1.07,1005,1.249,1075,1.181,1195,1.229,1279,1.26,1421,2.511,1431,4.518,1434,2.739,1436,2.952,1441,2.622,1456,0.901,1468,1.286,1486,1.851,1509,1.652,1526,1.446,1527,1.446,1555,1.356,1571,1.913,1578,1.532,1581,3.013,1585,3.177,1612,1.201,1665,1.851,1691,1.624,1735,1.952,1747,1.624,1880,1.624,2177,1.021,2309,1.446,2477,1.513,2587,1.652,2636,1.207,2642,1.236,2684,3.08,3023,1.851,3025,1.851,3027,1.683,3030,1.851,3032,1.851,3033,1.575,3034,4.339,3035,1.851,3087,1.314,3382,1.417,3504,1.913,3506,1.286,3511,1.478,3512,1.268,3513,1.478,3514,1.513,3527,1.8,3528,1.913,3529,1.913,3530,1.913,3623,5.504,3624,4.484,3625,2.094,3626,2.094,3627,2.094,3628,2.094,3629,2.094,3630,2.094,3631,2.094,3632,2.094,3633,2.094,3634,2.094,3635,2.251,3636,2.094,3637,2.094]],["component/180",[7,0.401]],["title/181-1",[402,17.184,1456,33.432]],["name/181-1",[]],["text/181-1",[]],["component/181-1",[]],["title/181-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/181-2",[]],["text/181-2",[]],["component/181-2",[]],["title/181-3",[8,18.856,150,32.262]],["name/181-3",[]],["text/181-3",[]],["component/181-3",[]],["title/181-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/181-4",[]],["text/181-4",[]],["component/181-4",[]],["title/181-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/181-5",[]],["text/181-5",[]],["component/181-5",[]],["title/181-6",[10,23.093,333,34.025,706,36.279,1758,36.279]],["name/181-6",[]],["text/181-6",[]],["component/181-6",[]],["title/181-7",[1758,48.06,3257,61.318]],["name/181-7",[]],["text/181-7",[]],["component/181-7",[]],["title/181-8",[8,16.222,746,27.183,1005,22.733]],["name/181-8",[]],["text/181-8",[]],["component/181-8",[]],["title/181-9",[1255,32.348,1457,33.624]],["name/181-9",[]],["text/181-9",[]],["component/181-9",[]],["title/181",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/181",[1758,0.856,1759,0.764]],["text/181",[3,0.494,6,1.075,8,1.789,10,2.04,13,0.73,17,1.858,23,0.543,26,0.486,29,2.952,30,0.963,32,1.56,34,0.519,35,2.066,36,0.974,37,0.708,40,0.4,42,0.98,56,0.573,57,0.67,58,1.36,71,0.628,84,3.574,88,0.942,90,0.541,92,1.862,104,0.594,110,1.019,113,0.947,115,1.266,117,1.264,118,2.288,125,0.553,127,0.762,129,0.558,133,0.721,135,0.496,136,0.574,138,0.536,142,0.637,143,1.681,147,0.762,154,1.091,155,1.638,161,2.808,165,0.786,168,0.615,172,2.411,183,0.893,188,0.704,191,0.459,195,0.735,196,0.932,236,0.514,239,0.566,251,1.083,252,1.4,253,0.786,263,0.577,271,1.455,272,0.661,275,1.103,279,0.546,286,0.688,289,0.9,293,0.74,301,0.489,319,1.604,335,0.692,341,0.692,349,0.634,350,0.657,356,0.637,357,1.26,402,1.146,406,1.041,431,1.807,441,0.731,451,0.606,455,1.103,468,0.571,470,2.275,482,1.334,486,3.16,502,1.379,508,0.696,517,0.7,549,0.603,580,1.787,603,0.726,604,0.657,608,1.143,630,1.343,656,0.664,684,1.563,686,2.392,690,1.351,695,0.59,698,1.636,706,1.938,730,0.867,746,0.913,751,0.927,752,0.608,754,0.519,786,0.639,859,0.731,873,0.78,907,2.211,932,2.046,943,0.792,968,2.048,980,0.9,1005,1.065,1011,2.896,1012,0.888,1066,0.648,1068,3.542,1076,1.043,1127,0.857,1195,0.712,1200,0.941,1348,0.958,1361,0.958,1388,1.018,1400,0.639,1461,1.21,1468,1.379,1483,1.413,1520,0.78,1524,0.814,1528,0.792,1530,0.958,1538,0.806,1540,0.958,1544,0.822,1620,0.806,1643,0.913,1735,0.645,1758,6.368,1759,2.157,1762,0.995,1763,1.043,1764,1.073,1765,1.073,1767,1.073,1780,0.995,1783,0.9,1827,1.643,1942,1.37,1963,0.995,1996,1.714,2016,0.814,2045,0.9,2050,1.742,2067,1.018,2137,0.83,2177,0.592,2237,1.043,2336,0.913,2369,1.018,2422,0.726,2559,1.985,2588,1.018,2593,1.073,2619,0.799,2626,0.888,2636,0.7,2642,0.717,2682,1.073,2694,1.073,2837,1.073,2851,5.053,2926,1.073,3257,4.887,3287,1.841,3466,2.627,3471,2.627,3477,1.492,3485,1.043,3506,0.745,3511,0.857,3512,0.735,3624,1.109,3638,2.246,3639,1.214,3640,1.214,3641,1.305,3642,1.305,3643,1.305,3644,1.305,3645,1.305,3646,1.305,3647,1.214,3648,2.051,3649,1.214,3650,2.051,3651,1.214,3652,1.073,3653,1.109,3654,1.109,3655,1.214,3656,1.214,3657,1.214,3658,1.305,3659,1.305,3660,2.246,3661,1.214,3662,1.214,3663,1.214,3664,1.214,3665,1.214,3666,4.582,3667,4.582,3668,2.246,3669,2.246,3670,1.214,3671,1.214,3672,1.214,3673,1.214,3674,1.214,3675,1.214,3676,1.214,3677,1.214,3678,1.214,3679,1.214,3680,1.214,3681,1.214,3682,1.214,3683,1.214,3684,1.214]],["component/181",[7,0.401]],["title/182-1",[402,17.184,1456,33.432]],["name/182-1",[]],["text/182-1",[]],["component/182-1",[]],["title/182-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/182-2",[]],["text/182-2",[]],["component/182-2",[]],["title/182-3",[8,18.856,150,32.262]],["name/182-3",[]],["text/182-3",[]],["component/182-3",[]],["title/182-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/182-4",[]],["text/182-4",[]],["component/182-4",[]],["title/182-5",[8,16.222,746,27.183,1005,22.733]],["name/182-5",[]],["text/182-5",[]],["component/182-5",[]],["title/182-6",[1255,32.348,1457,33.624]],["name/182-6",[]],["text/182-6",[]],["component/182-6",[]],["title/182",[161,13.854,968,30.686,1431,19.421,1647,23.953,1759,20.09,3027,29.233,3234,29.828,3685,29.828]],["name/182",[1431,0.513,1759,0.531,3685,0.788]],["text/182",[5,3.419,8,1.404,13,1.166,32,3.334,46,2.504,64,5.193,76,2.159,77,2.002,84,3.348,91,2.023,93,2.002,118,1.17,124,2.625,128,2.012,130,2.118,136,1.48,161,4.581,167,2.883,168,1.818,169,2.023,214,1.351,242,2.561,253,2.322,263,1.706,271,3.378,272,1.952,275,1.763,277,1.749,311,3.798,349,1.873,386,1.971,402,1.608,406,3.042,451,1.79,502,2.548,608,2.946,647,2.159,665,1.833,679,1.419,686,1.385,754,1.534,786,3.831,873,2.304,903,4.038,910,3.46,963,1.833,968,4.376,972,1.818,998,2.504,1005,1.22,1200,2.782,1431,1.915,1461,3.119,1647,3.811,1672,3.171,2191,3.171,2493,3.008,2619,2.362,3027,5.846,3033,2.698,3234,5.965,3450,2.383,3459,2.942,3685,4.746,3686,3.587,3687,3.587,3688,3.587,3689,3.587,3690,3.277,3691,3.277,3692,3.083,3693,3.083,3694,3.083,3695,3.587,3696,3.587,3697,3.587]],["component/182",[7,0.401]],["title/183-1",[402,17.184,1456,33.432]],["name/183-1",[]],["text/183-1",[]],["component/183-1",[]],["title/183-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/183-2",[]],["text/183-2",[]],["component/183-2",[]],["title/183-3",[1145,45.341,1483,35.06]],["name/183-3",[]],["text/183-3",[]],["component/183-3",[]],["title/183-4",[1091,43.832,1145,45.341]],["name/183-4",[]],["text/183-4",[]],["component/183-4",[]],["title/183-5",[88,20.111,468,31.469,532,44.832]],["name/183-5",[]],["text/183-5",[]],["component/183-5",[]],["title/183-6",[8,18.856,150,32.262]],["name/183-6",[]],["text/183-6",[]],["component/183-6",[]],["title/183-7",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/183-7",[]],["text/183-7",[]],["component/183-7",[]],["title/183-8",[36,25.454,88,17.646,148,19.348,161,22.344]],["name/183-8",[]],["text/183-8",[]],["component/183-8",[]],["title/183-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/183-9",[]],["text/183-9",[]],["component/183-9",[]],["title/183-10",[8,16.222,746,27.183,1005,22.733]],["name/183-10",[]],["text/183-10",[]],["component/183-10",[]],["title/183-11",[1255,32.348,1457,33.624]],["name/183-11",[]],["text/183-11",[]],["component/183-11",[]],["title/183",[161,13.854,968,30.686,1759,20.09,3092,44.672,3093,44.672,3094,31.263]],["name/183",[1759,0.531,3092,0.734,3093,0.734]],["text/183",[3,0.681,8,0.731,10,2.76,12,0.856,13,0.544,15,0.856,29,1.574,34,0.716,40,0.993,56,0.791,84,3.83,88,0.906,97,1.95,99,1.443,101,0.796,104,2.831,110,0.76,117,0.676,118,2.45,120,2.381,135,0.684,136,1.05,154,0.814,161,3.885,171,0.783,172,2.116,188,0.971,191,0.633,194,1.059,196,1.25,239,0.78,252,1.835,270,1.299,271,0.778,272,0.911,275,0.823,279,0.753,280,0.748,296,0.681,315,1.084,316,1.432,319,0.688,333,0.971,352,2.126,386,0.92,402,1.109,406,1.001,451,0.835,460,0.706,465,0.699,468,1.418,502,1.326,514,1.76,525,0.739,532,2.02,538,1.259,539,1.225,553,2.439,630,2.454,656,0.916,686,1.163,688,6.471,728,4.753,730,4.129,746,0.681,752,0.839,754,0.716,968,1.579,1005,0.569,1087,2.126,1091,0.944,1106,0.863,1107,0.882,1141,1.21,1142,1.259,1143,1.259,1145,4.382,1150,0.882,1151,4.082,1154,2.204,1169,2.835,1195,0.983,1381,1.259,1402,1.225,1434,0.934,1456,0.72,1461,0.903,1488,3.239,1489,1.373,1490,1.043,1491,2.47,1492,1.195,1493,2.47,1494,1.373,1495,2.47,1496,1.373,1498,1.113,1499,1.156,1524,1.123,1735,0.89,1759,2.267,1780,1.373,1827,1.225,1889,1.48,2244,1.53,2356,2.299,2455,1.278,3092,3.133,3093,3.828,3094,3.528,3095,1.592,3096,1.592,3097,1.592,3098,1.592,3099,1.592,3100,1.592,3101,2.863,3102,1.592,3103,1.48,3104,2.863,3105,1.592,3106,1.592,3107,1.592,3108,1.592,3109,1.592,3110,1.592,3111,1.592,3112,1.592,3113,1.592,3114,1.592,3115,1.48,3116,1.592,3506,1.028,3511,1.182,3512,1.014]],["component/183",[7,0.401]],["title/184-1",[402,17.184,1456,33.432]],["name/184-1",[]],["text/184-1",[]],["component/184-1",[]],["title/184-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/184-2",[]],["text/184-2",[]],["component/184-2",[]],["title/184-3",[8,18.856,150,32.262]],["name/184-3",[]],["text/184-3",[]],["component/184-3",[]],["title/184-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/184-4",[]],["text/184-4",[]],["component/184-4",[]],["title/184-5",[2177,45.248]],["name/184-5",[]],["text/184-5",[]],["component/184-5",[]],["title/184-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/184-6",[]],["text/184-6",[]],["component/184-6",[]],["title/184-7",[8,16.222,746,27.183,1005,22.733]],["name/184-7",[]],["text/184-7",[]],["component/184-7",[]],["title/184-8",[1255,32.348,1457,33.624]],["name/184-8",[]],["text/184-8",[]],["component/184-8",[]],["title/184",[1128,32.569,1558,47.283,1786,33.829]],["name/184",[1558,0.776,1786,0.798]],["text/184",[3,0.652,5,2.799,6,0.768,8,1.178,10,1.911,14,0.662,15,0.82,17,2.276,18,0.712,26,1.16,29,2.62,30,1.243,32,0.641,33,0.806,40,1.307,49,1.107,56,0.757,63,1.804,84,3.606,88,2.205,99,0.768,101,1.884,105,0.662,110,0.728,113,0.677,117,0.647,118,2.228,121,0.881,129,0.737,130,0.947,135,1.984,136,1.013,138,1.749,155,1.036,161,1.849,168,0.813,169,0.904,172,0.677,181,1.145,183,1.151,191,0.607,196,0.666,203,0.936,211,0.813,214,1.492,228,1.984,239,0.747,251,2.707,252,0.717,264,0.536,271,1.84,277,0.782,278,0.941,279,0.721,280,0.717,301,0.645,311,1.512,316,0.763,319,0.659,320,0.909,331,0.83,350,2.145,361,1.319,395,0.999,402,1.241,406,2.27,408,0.834,420,1.107,421,0.86,459,0.978,461,1.265,465,0.669,470,1.272,486,3.423,514,2.865,525,0.708,531,0.771,552,0.644,558,1.086,593,0.755,608,0.816,615,0.877,618,1.132,665,1.481,670,0.845,679,1.146,684,0.8,686,1.119,695,0.779,726,2.384,740,1.244,746,0.652,752,0.803,754,0.686,774,1.056,779,0.971,788,0.93,865,0.841,893,1.03,896,3.521,903,0.89,931,1.145,968,0.841,1005,0.545,1008,0.868,1017,1.075,1075,0.904,1076,1.84,1106,1.493,1107,1.526,1128,1.608,1150,2.557,1279,0.965,1390,0.959,1400,0.845,1434,0.895,1453,1.418,1461,0.864,1465,1.224,1469,1.022,1477,0.877,1483,1.787,1517,2.068,1524,1.075,1528,1.047,1537,1.224,1538,1.925,1543,1.265,1544,1.086,1546,1.289,1551,1.056,1555,1.875,1556,1.767,1558,4.579,1565,1.224,1590,1.224,1620,1.065,1726,2.328,1735,0.852,1741,1.206,1770,1.315,1787,2.429,1788,1.418,1789,1.345,1790,1.189,1794,1.265,1795,2.429,1796,1.345,1797,1.418,1798,1.345,1799,1.345,1800,1.345,1801,1.265,1802,1.265,1803,1.224,1804,1.345,1805,1.265,1806,1.289,1807,1.189,1808,1.224,1809,1.265,1810,1.418,1811,1.265,1812,1.345,1813,1.265,1815,2.561,2177,1.932,2211,1.244,2352,2.12,2613,1.289,2629,1.378,2636,0.925,2642,0.947,2736,1.289,3087,1.006,3117,1.378,3118,1.378,3119,1.378,3120,1.378,3121,1.524,3382,1.086,3477,1.065,3506,0.985,3511,1.132,3512,0.971,3513,1.132,3514,1.159,3648,1.465,3650,2.646,3652,1.418,3653,2.646,3654,1.465,3698,1.724,3699,1.604]],["component/184",[7,0.401]],["title/185-1",[402,17.184,1456,33.432]],["name/185-1",[]],["text/185-1",[]],["component/185-1",[]],["title/185-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/185-2",[]],["text/185-2",[]],["component/185-2",[]],["title/185-3",[8,18.856,150,32.262]],["name/185-3",[]],["text/185-3",[]],["component/185-3",[]],["title/185-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/185-4",[]],["text/185-4",[]],["component/185-4",[]],["title/185-5",[2177,45.248]],["name/185-5",[]],["text/185-5",[]],["component/185-5",[]],["title/185-6",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/185-6",[]],["text/185-6",[]],["component/185-6",[]],["title/185-7",[8,16.222,746,27.183,1005,22.733]],["name/185-7",[]],["text/185-7",[]],["component/185-7",[]],["title/185-8",[1255,32.348,1457,33.624]],["name/185-8",[]],["text/185-8",[]],["component/185-8",[]],["title/185",[1128,32.569,1786,33.829,1819,55.503]],["name/185",[1786,0.798,1819,0.911]],["text/185",[3,0.938,5,2.923,6,0.599,8,1.136,10,2.294,14,1.934,17,2.145,18,0.555,26,1.286,29,2.586,30,1.378,32,1.871,36,0.542,40,1.318,42,0.545,56,0.59,79,1.781,84,3.7,88,2.146,99,0.599,101,0.594,105,0.953,112,0.564,117,0.931,118,1.901,125,0.569,129,0.575,134,0.821,135,1.914,136,1.023,138,1.419,144,0.53,146,0.652,148,0.412,150,0.958,154,0.607,155,0.825,158,1.199,161,2.015,169,0.705,172,0.973,183,1.589,191,0.473,196,1.659,199,0.729,203,0.729,205,0.954,211,0.634,214,0.869,221,0.823,228,1.155,234,0.694,239,0.582,251,0.603,254,1.533,264,0.418,267,0.705,271,1.492,277,0.609,279,0.562,280,0.559,301,0.928,311,1.204,320,1.308,331,0.647,361,0.569,388,0.729,391,0.628,401,0.56,402,1.036,406,2.24,408,0.65,414,0.927,420,0.863,431,0.721,455,0.614,458,0.767,465,0.522,470,1.013,486,3.554,502,2.062,508,0.717,514,2.366,520,0.863,531,0.601,549,0.621,552,0.502,557,0.717,558,0.846,577,1.863,593,0.588,615,1.757,618,0.882,647,1.388,656,0.683,665,0.639,670,0.658,679,0.494,682,0.644,684,0.624,686,1.241,695,0.607,726,2.406,746,0.508,752,0.626,754,0.535,772,0.743,779,0.757,788,0.725,835,0.661,893,1.481,896,3.319,903,0.694,933,0.803,964,0.94,1005,0.425,1008,0.677,1075,0.705,1076,0.58,1106,1.189,1107,1.215,1125,1.481,1128,0.694,1139,0.816,1150,2.105,1168,0.914,1214,0.83,1287,0.79,1301,1.82,1352,1.048,1390,1.379,1434,0.697,1461,0.674,1469,0.796,1477,0.683,1483,0.564,1528,0.816,1538,0.83,1543,0.986,1544,1.562,1551,0.823,1555,1.493,1556,0.762,1558,1.294,1565,0.954,1585,2.08,1669,0.914,1726,1.854,1735,1.226,1741,0.94,1750,0.927,1759,0.69,1787,1.048,1790,0.927,1794,0.986,1798,1.048,1799,1.048,1800,1.048,1801,0.986,1802,0.986,1803,0.954,1804,1.048,1805,0.986,1807,0.927,1808,0.954,1809,0.986,1811,0.986,1812,1.048,1813,0.986,1819,5.69,1820,2.039,1821,2.535,1822,2.84,1823,2.694,1824,1.105,1825,1.105,1827,1.688,1831,1.105,1832,1.105,1838,1.105,1843,1.854,1844,1.105,1845,1.048,1846,0.903,1847,1.105,1848,1.105,1849,0.954,1851,1.934,1852,0.846,1853,1.105,2076,0.83,2177,1.567,2211,0.969,2613,1.004,2636,0.721,2642,0.738,2736,1.004,3087,0.784,3117,1.074,3118,1.074,3119,1.074,3120,1.074,3477,0.83,3506,0.767,3511,0.882,3512,0.757,3700,3.213,3701,2.307,3702,1.25,3703,1.25,3704,1.25,3705,1.25,3706,1.25,3707,1.25,3708,1.25,3709,1.25,3710,1.25,3711,1.25,3712,1.25,3713,1.25,3714,1.25,3715,1.25]],["component/185",[7,0.401]],["title/186-1",[343,64.077]],["name/186-1",[]],["text/186-1",[]],["component/186-1",[]],["title/186-2",[192,33.622,402,14.783,690,40.238]],["name/186-2",[]],["text/186-2",[]],["component/186-2",[]],["title/186-3",[402,17.184,1129,38.042]],["name/186-3",[]],["text/186-3",[]],["component/186-3",[]],["title/186-4",[402,17.184,1128,43.146]],["name/186-4",[]],["text/186-4",[]],["component/186-4",[]],["title/186-5",[311,34.906,402,14.783,1609,39.979]],["name/186-5",[]],["text/186-5",[]],["component/186-5",[]],["title/186-6",[161,25.466,402,14.783,1759,36.93]],["name/186-6",[]],["text/186-6",[]],["component/186-6",[]],["title/186-7",[2,38.123,402,14.783,3450,44.422]],["name/186-7",[]],["text/186-7",[]],["component/186-7",[]],["title/186-8",[264,22.343,402,14.783,1936,41.347]],["name/186-8",[]],["text/186-8",[]],["component/186-8",[]],["title/186-9",[402,17.184,1040,44.562]],["name/186-9",[]],["text/186-9",[]],["component/186-9",[]],["title/186",[7,19.043,402,17.184]],["name/186",[631,1.45]],["text/186",[2,1.421,3,1.738,5,1.021,8,1.037,12,2.184,13,1.389,14,1.765,15,1.274,17,1.733,18,1.899,20,1.384,23,1.114,26,2.662,29,1.639,34,2.4,40,0.822,52,1.965,56,2.018,64,1.78,71,1.29,77,1.391,84,1.54,88,0.75,98,1.564,104,1.22,105,1.765,110,1.132,117,1.006,118,0.813,125,1.946,128,1.399,134,1.997,135,1.747,136,1.093,144,1.058,146,2.929,148,1.85,150,1.035,151,2.84,155,0.891,158,1.296,160,1.325,161,2.849,162,1.74,163,2.116,178,1.274,183,1.699,185,1.672,192,2.149,196,1.035,221,1.642,224,1.22,248,1.234,252,1.114,255,2.437,264,2.222,275,2.1,282,1.454,286,1.414,296,1.014,297,1.363,308,2.269,311,3.471,343,1.722,391,1.254,401,1.118,402,2.695,465,1.784,514,1.969,531,1.198,547,1.063,548,1.601,620,1.438,643,1.967,647,1.5,665,1.274,678,1.421,679,0.986,680,1.244,686,0.963,690,2.572,698,1.302,719,2.361,728,2.337,729,1.542,865,2.241,906,2.204,931,1.78,972,1.264,1040,2.451,1128,2.373,1129,4.272,1306,1.967,1431,1.331,1468,1.531,1477,1.363,1484,3.088,1555,2.767,1558,1.399,1609,3.976,1610,1.553,1692,2.004,1755,1.849,1758,1.542,1759,3.672,1779,1.78,1819,1.642,1821,1.967,1936,1.542,1937,2.204,1940,2.204,1942,1.52,1943,2.004,1944,3.778,1945,1.588,1946,1.967,2234,3.214,2477,1.801,2673,1.875,2934,1.934,3092,1.903,3093,1.903,3122,2.37,3123,2.37,3124,2.37,3125,2.37,3126,2.37,3228,1.903,3450,3.727,3571,3.505,3623,2.044,3685,2.044]],["component/186",[7,0.401]],["title/187-1",[402,17.184,1456,33.432]],["name/187-1",[]],["text/187-1",[]],["component/187-1",[]],["title/187-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/187-2",[]],["text/187-2",[]],["component/187-2",[]],["title/187-3",[8,18.856,150,32.262]],["name/187-3",[]],["text/187-3",[]],["component/187-3",[]],["title/187-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/187-4",[]],["text/187-4",[]],["component/187-4",[]],["title/187-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/187-5",[]],["text/187-5",[]],["component/187-5",[]],["title/187-6",[8,16.222,746,27.183,1005,22.733]],["name/187-6",[]],["text/187-6",[]],["component/187-6",[]],["title/187-7",[1255,32.348,1457,33.624]],["name/187-7",[]],["text/187-7",[]],["component/187-7",[]],["title/187",[2,24.457,64,47.596,402,9.484,3416,32.742,3450,44.297]],["name/187",[64,0.686,3416,0.734,3450,0.639]],["text/187",[5,3.4,8,1.393,10,1.398,12,1.815,13,1.154,15,1.815,32,3.315,40,1.171,64,6.503,84,3.42,104,1.739,112,1.602,118,1.158,136,1.469,154,1.726,155,1.27,161,3.906,169,2.003,185,2.382,196,1.474,239,1.655,242,2.536,271,3.355,272,1.933,308,2.923,402,1.598,406,2.757,414,2.634,464,2.181,465,2.396,502,1.564,531,2.759,608,1.808,647,2.138,656,1.942,672,2.319,679,1.405,686,2.79,752,1.779,754,2.456,758,2.599,786,3.806,903,4.011,993,1.982,1005,1.208,1066,1.896,1195,2.085,1287,2.245,1461,1.914,1483,1.602,1526,2.453,1527,2.453,1596,2.855,1735,1.888,2103,2.802,3033,2.671,3450,6.474,3451,3.053,3459,5.925,3460,4.934,3461,4.934,3506,2.181,3511,2.507,3512,2.152,3571,2.913,3690,3.245,3691,3.245,3692,3.053,3693,3.053,3694,3.053,3716,3.552,3717,3.245,3718,5.245,3719,3.245,3720,3.245,3721,3.245,3722,3.245,3723,3.245,3724,3.245]],["component/187",[7,0.401]],["title/188-1",[402,17.184,1456,33.432]],["name/188-1",[]],["text/188-1",[]],["component/188-1",[]],["title/188-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/188-2",[]],["text/188-2",[]],["component/188-2",[]],["title/188-3",[8,18.856,150,32.262]],["name/188-3",[]],["text/188-3",[]],["component/188-3",[]],["title/188-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/188-4",[]],["text/188-4",[]],["component/188-4",[]],["title/188-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/188-5",[]],["text/188-5",[]],["component/188-5",[]],["title/188-6",[8,16.222,746,27.183,1005,22.733]],["name/188-6",[]],["text/188-6",[]],["component/188-6",[]],["title/188-7",[1255,32.348,1457,33.624]],["name/188-7",[]],["text/188-7",[]],["component/188-7",[]],["title/188",[2,24.457,402,9.484,2934,51.712,3416,32.742,3450,44.297]],["name/188",[2934,0.745,3416,0.734,3450,0.639]],["text/188",[5,2.808,8,0.633,10,1.028,12,1.334,13,0.848,15,1.334,32,3.566,40,0.861,84,3.513,104,1.278,111,1.407,112,1.178,118,0.851,122,1.704,136,1.967,154,1.268,155,0.933,161,3.735,166,3.428,169,2.507,185,1.751,196,1.084,239,1.216,242,1.864,248,1.292,271,2.696,272,1.421,277,2.831,301,2.337,308,2.348,402,1.516,406,3.375,414,1.936,426,5.304,464,1.603,465,1.855,478,1.936,502,1.957,525,1.153,531,2.137,608,1.329,647,1.571,656,1.428,670,1.375,672,1.704,679,1.033,686,2.242,712,3.616,752,1.308,754,1.902,758,1.91,786,5.165,903,5.445,993,1.457,1005,0.888,1066,1.394,1129,2.842,1195,1.532,1287,1.65,1461,1.407,1483,1.178,1596,2.098,1735,1.388,2103,2.06,2109,1.936,2934,5.317,3033,1.963,3450,6.516,3451,2.244,3459,4.761,3460,3.821,3461,3.821,3506,1.603,3511,1.842,3512,1.582,3571,2.141,3692,2.244,3693,2.244,3694,2.244,3717,2.385,3718,4.061,3719,2.385,3720,2.385,3721,4.061,3722,2.385,3723,2.385,3724,2.385,3725,2.611,3726,2.611,3727,2.611,3728,2.611,3729,2.611,3730,5.806,3731,2.611,3732,2.611]],["component/188",[7,0.401]],["title/189-1",[343,64.077]],["name/189-1",[]],["text/189-1",[]],["component/189-1",[]],["title/189-2",[331,40.225,341,44.313]],["name/189-2",[]],["text/189-2",[]],["component/189-2",[]],["title/189-3",[301,37.342]],["name/189-3",[]],["text/189-3",[]],["component/189-3",[]],["title/189-4",[331,48.023]],["name/189-4",[]],["text/189-4",[]],["component/189-4",[]],["title/189-5",[3087,58.217]],["name/189-5",[]],["text/189-5",[]],["component/189-5",[]],["title/189-6",[191,35.099]],["name/189-6",[]],["text/189-6",[]],["component/189-6",[]],["title/189-7",[361,42.254]],["name/189-7",[]],["text/189-7",[]],["component/189-7",[]],["title/189-8",[33,46.658]],["name/189-8",[]],["text/189-8",[]],["component/189-8",[]],["title/189-9",[3379,79.747]],["name/189-9",[]],["text/189-9",[]],["component/189-9",[]],["title/189-10",[1279,55.838]],["name/189-10",[]],["text/189-10",[]],["component/189-10",[]],["title/189-11",[3382,62.807]],["name/189-11",[]],["text/189-11",[]],["component/189-11",[]],["title/189",[26,31.122,2177,37.901]],["name/189",[2177,1.205]],["text/189",[4,3.12,7,0.612,8,2.18,15,0.697,17,2.026,23,1.117,26,4.233,29,1.327,33,1.74,34,0.583,40,0.824,71,1.294,76,3.007,77,0.761,84,1.542,92,0.81,104,1.223,105,2.321,111,0.735,113,1.054,117,0.55,118,0.445,121,0.749,125,1.95,129,1.591,133,0.81,138,1.528,139,1.227,143,1.341,150,0.566,155,1.237,161,0.519,163,0.675,172,1.807,183,0.542,189,3.12,191,2.685,194,0.862,196,0.566,199,0.795,206,0.952,214,0.941,215,6.206,224,0.667,248,0.675,262,0.777,264,2.225,277,4.695,293,0.832,301,2.68,308,2.694,311,0.712,322,5.847,331,2.217,341,0.777,348,0.876,351,3.465,357,1.402,361,2.81,375,0.869,391,1.257,396,1.172,402,0.301,403,0.962,405,1.172,406,1.423,441,0.821,442,0.952,446,0.678,465,1.043,470,1.097,475,2.974,492,2.342,502,0.6,514,0.479,523,0.8,547,2.131,557,0.782,597,0.757,621,0.973,675,0.89,698,0.712,768,0.985,769,1.296,779,0.826,784,1.118,786,0.718,859,0.821,861,0.769,862,0.973,865,0.715,867,1.618,890,3.068,910,0.815,943,0.89,968,0.715,972,0.691,993,0.761,1008,4.732,1011,1.011,1031,0.962,1053,1.66,1066,0.728,1128,0.757,1129,0.667,1132,1.142,1133,3.183,1139,1.632,1145,2.018,1219,0.898,1255,0.567,1279,4.917,1402,1.829,1456,1.488,1475,0.942,1477,0.746,1483,1.127,1551,0.898,1659,1.908,1942,0.832,2054,1.458,2076,0.906,2150,1.143,2177,4.129,2243,1.296,2249,2.209,2374,1.011,2419,0.998,2468,3.942,2485,1.205,2562,2.683,2619,2.278,2621,2.095,2636,0.786,2685,1.143,2847,1.143,2890,1.143,3043,1.784,3087,2.171,3129,0.862,3355,2.974,3357,2.148,3358,2.148,3359,2.148,3361,3.512,3364,1.172,3376,3.913,3378,2.283,3379,2.148,3380,3.161,3382,0.923,3385,1.246,3386,1.246,3387,2.283,3388,1.246,3389,1.246,3390,1.246,3391,1.172,3392,1.246,3393,2.283,3397,1.246,3398,2.283,3399,1.172,3400,1.172,3402,1.246,3405,1.246,3406,2.283,3407,1.246,3408,1.246,3409,1.246,3413,1.118,3527,1.172,3733,2.499,3734,2.499,3735,1.363,3736,1.363,3737,1.363,3738,1.296]],["component/189",[7,0.401]],["title/190-1",[402,17.184,1456,33.432]],["name/190-1",[]],["text/190-1",[]],["component/190-1",[]],["title/190-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/190-2",[]],["text/190-2",[]],["component/190-2",[]],["title/190-3",[8,18.856,150,32.262]],["name/190-3",[]],["text/190-3",[]],["component/190-3",[]],["title/190-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/190-4",[]],["text/190-4",[]],["component/190-4",[]],["title/190-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/190-5",[]],["text/190-5",[]],["component/190-5",[]],["title/190-6",[8,16.222,746,27.183,1005,22.733]],["name/190-6",[]],["text/190-6",[]],["component/190-6",[]],["title/190-7",[1255,32.348,1457,33.624]],["name/190-7",[]],["text/190-7",[]],["component/190-7",[]],["title/190",[23,26.157,40,11.996,264,19.556,547,15.516,1936,22.493,2073,27.766,2199,26.615]],["name/190",[23,0.329,264,0.246,2073,0.562,2199,0.539]],["text/190",[23,5.362,40,3.956,117,4.275,134,2.382,136,1.712,144,2.838,252,4.736,264,2.236,267,3.774,268,7.019,401,3,402,1.479,459,4.081,484,5.987,642,5.19,681,4.406,683,3.509,1456,2.878,1472,3.881,1490,4.168,1936,4.138,2199,8.778,2234,6.954,3127,5.751]],["component/190",[7,0.401]],["title/191-1",[402,17.184,1456,33.432]],["name/191-1",[]],["text/191-1",[]],["component/191-1",[]],["title/191-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/191-2",[]],["text/191-2",[]],["component/191-2",[]],["title/191-3",[8,18.856,150,32.262]],["name/191-3",[]],["text/191-3",[]],["component/191-3",[]],["title/191-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/191-4",[]],["text/191-4",[]],["component/191-4",[]],["title/191-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/191-5",[]],["text/191-5",[]],["component/191-5",[]],["title/191-6",[8,16.222,746,27.183,1005,22.733]],["name/191-6",[]],["text/191-6",[]],["component/191-6",[]],["title/191-7",[1255,32.348,1457,33.624]],["name/191-7",[]],["text/191-7",[]],["component/191-7",[]],["title/191",[13,21.665,14,17.712,105,17.712,264,22.28,1936,26.525]],["name/191",[13,0.312,14,0.397,264,0.321]],["text/191",[13,3.774,14,4.796,23,3.106,40,2.292,117,4.361,134,2.474,136,1.778,144,2.948,252,4.831,264,2.322,267,3.92,268,7.132,401,3.116,402,1.537,459,4.238,484,6.145,642,5.39,681,4.577,683,3.644,1456,2.99,1472,4.031,1490,4.329,1936,4.298,2199,5.085,2234,7.138,3127,5.973]],["component/191",[7,0.401]],["title/192-1",[406,25.824,694,45.892]],["name/192-1",[]],["text/192-1",[]],["component/192-1",[]],["title/192-2",[88,27.909]],["name/192-2",[]],["text/192-2",[]],["component/192-2",[]],["title/192-3",[30,28.681,466,37.709,2624,47.184]],["name/192-3",[]],["text/192-3",[]],["component/192-3",[]],["title/192-4",[134,23.806,264,22.343,361,30.449]],["name/192-4",[]],["text/192-4",[]],["component/192-4",[]],["title/192-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/192-5",[]],["text/192-5",[]],["component/192-5",[]],["title/192-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/192-6",[]],["text/192-6",[]],["component/192-6",[]],["title/192-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/192-7",[]],["text/192-7",[]],["component/192-7",[]],["title/192-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/192-8",[]],["text/192-8",[]],["component/192-8",[]],["title/192-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/192-9",[]],["text/192-9",[]],["component/192-9",[]],["title/192-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/192-10",[]],["text/192-10",[]],["component/192-10",[]],["title/192-11",[134,23.806,466,37.709,2627,51.038]],["name/192-11",[]],["text/192-11",[]],["component/192-11",[]],["title/192-12",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/192-12",[]],["text/192-12",[]],["component/192-12",[]],["title/192-13",[32,26.708,267,37.709,466,37.709]],["name/192-13",[]],["text/192-13",[]],["component/192-13",[]],["title/192",[129,35.736,470,34.116]],["name/192",[129,0.636,470,0.607]],["text/192",[0,0.667,3,0.537,4,1.348,7,0.595,8,0.32,15,0.675,17,0.984,18,0.587,23,1.867,26,1.673,29,1.292,30,2.094,31,0.709,32,1.669,34,2.088,36,0.573,40,0.801,45,0.587,52,1.116,54,3.537,79,1.082,84,2.496,88,0.73,91,0.745,93,0.737,101,0.628,105,1.002,111,0.712,117,0.979,118,2.623,125,0.602,127,0.829,129,3.548,134,3.677,143,5.38,148,0.801,153,0.967,154,0.642,155,0.472,161,1.591,163,0.654,166,2.467,170,1.442,171,2.57,172,1.762,180,2.001,183,0.525,188,0.766,196,1.398,199,0.771,206,0.922,214,2.459,224,0.647,239,0.615,248,1.202,249,0.684,255,1.384,264,2.328,271,0.613,277,2.037,279,0.594,280,1.085,288,2.657,289,1.8,292,1.296,301,3.566,308,0.534,311,2.181,316,0.628,348,0.848,350,0.715,351,1.845,355,0.842,361,3.173,374,0.943,377,1.743,378,1.643,386,0.726,401,0.592,402,0.745,428,1.915,446,0.656,455,2.701,466,1.369,468,0.622,470,3.66,482,0.785,502,0.582,513,1.042,514,0.464,517,0.762,531,0.635,545,0.878,547,2.082,553,0.785,593,0.622,597,0.733,637,1.024,649,1.008,668,0.675,670,0.696,673,0.644,679,1.332,684,2.743,686,0.51,694,1.433,719,1.341,734,0.912,752,0.662,760,0.886,786,2.2,788,0.766,790,0.719,850,0.912,853,1.042,862,0.943,865,1.766,900,3.851,943,0.862,967,1.48,972,0.67,984,0.811,1074,1.024,1076,0.613,1101,4.315,1128,0.733,1129,0.647,1135,1.024,1136,2.602,1211,1.559,1282,4.135,1461,0.712,1483,1.884,1609,0.79,1612,0.757,1625,0.943,1643,1.826,1647,0.87,1727,1.659,1735,0.702,1759,0.73,1784,1.062,1786,0.762,1852,0.894,1950,1.694,2018,2.302,2042,0.87,2103,1.042,2225,1.108,2257,1.108,2300,1.108,2379,1.062,2552,1.062,2619,0.87,2625,4.266,2626,3.057,2627,1.008,2630,2.571,2634,1.024,2635,2.895,2636,2.815,2637,5.613,2638,3.59,2639,2.895,2641,1.135,2642,0.78,2643,1.135,2644,1.135,2645,2.086,2647,1.083,2648,1.135,2649,1.135,2650,1.135,2651,1.135,2652,2.086,2653,1.135,2654,2.086,2655,1.135,2656,1.135,2657,1.135,2658,1.042,2663,2.762,2664,1.135,2665,2.086,2666,1.135,3128,1.256,3506,0.811,3511,0.932,3512,0.8]],["component/192",[7,0.401]],["title/193-1",[87,48.06,248,38.476]],["name/193-1",[]],["text/193-1",[]],["component/193-1",[]],["title/193-2",[91,29.474,96,24.349,155,18.684,465,21.81,1448,39.301]],["name/193-2",[]],["text/193-2",[]],["component/193-2",[]],["title/193-3",[10,23.093,93,32.738,96,27.333,773,37.375]],["name/193-3",[]],["text/193-3",[]],["component/193-3",[]],["title/193-4",[593,43.669]],["name/193-4",[]],["text/193-4",[]],["component/193-4",[]],["title/193",[86,33.757,1078,41.057,3129,42.269]],["name/193",[1078,0.85,3129,0.875]],["text/193",[0,3.285,6,1.463,7,0.748,8,2.2,10,1.997,12,1.561,23,1.365,26,1.223,37,1.782,45,1.357,56,1.442,84,0.838,86,5.271,93,1.704,94,1.782,95,4.145,96,1.423,104,1.495,125,1.391,148,1.007,152,2.088,154,1.484,155,3.597,160,2.696,163,3.221,169,1.722,172,2.14,189,2.816,192,1.536,195,3.073,196,2.106,208,2.561,214,1.15,248,4.162,249,2.626,264,1.021,268,1.875,282,1.782,308,2.052,316,1.452,319,2.084,332,2.369,349,2.648,357,1.713,386,1.678,398,2.207,403,3.58,415,2.011,446,1.518,451,1.524,465,4.198,470,2.227,502,1.345,503,2.625,517,1.761,518,2.067,531,1.468,547,1.303,556,1.815,567,2.088,597,1.696,659,2.235,682,2.614,697,1.761,698,1.594,726,1.838,745,1.484,773,1.946,834,2.067,903,2.816,963,2.593,968,1.601,970,2.048,972,1.548,976,2.331,1064,3.58,1078,3.995,1118,2.561,1400,1.609,1448,5.698,1492,3.621,1650,2.155,1669,2.235,1727,2.088,1852,2.067,2417,2.297,2443,2.561,2494,2.7,2495,2.505,2563,2.7,2586,2.265,2872,2.7,3129,7.277,3130,3.054,3131,3.054,3132,2.625,3133,3.054,3134,3.054,3135,2.331,3136,3.054,3137,3.054,3138,3.054]],["component/193",[7,0.401]],["title/194-1",[139,27.557,230,66.798]],["name/194-1",[]],["text/194-1",[]],["component/194-1",[]],["title/194-2",[8,12.679,139,18.53,264,17.464,673,25.486,743,29.164]],["name/194-2",[]],["text/194-2",[]],["component/194-2",[]],["title/194-3",[8,9.551,24,20.922,84,10.804,112,17.759,118,12.839,139,13.958,264,13.155,673,19.197]],["name/194-3",[]],["text/194-3",[]],["component/194-3",[]],["title/194-4",[8,11.431,105,19.455,139,16.706,161,17.945,670,24.816,673,22.977]],["name/194-4",[]],["text/194-4",[]],["component/194-4",[]],["title/194-5",[139,27.557,764,53.128]],["name/194-5",[]],["text/194-5",[]],["component/194-5",[]],["title/194",[139,27.557,3139,66.798]],["name/194",[139,0.491,3139,1.189]],["text/194",[0,1.664,5,2.436,8,2.125,10,1.297,12,0.658,13,0.418,15,0.658,18,0.572,19,1.958,23,1.06,24,2.871,26,0.516,29,1.837,30,1.017,31,0.691,34,1.014,40,0.425,68,0.747,84,0.905,88,0.387,102,0.694,105,2.655,112,2.161,113,1,117,0.957,118,1.335,121,0.708,125,1.501,127,0.808,134,0.459,135,0.969,136,1.225,139,4.472,146,1.238,147,0.808,148,0.425,154,0.626,161,0.49,165,0.834,168,0.653,170,0.765,190,1.4,191,0.487,195,0.78,196,0.984,205,1.81,214,2.585,224,0.63,230,3.519,238,1.693,241,1.016,248,0.638,249,0.667,253,2.134,262,1.352,263,1.947,264,3.321,275,0.633,277,0.628,278,1.934,280,0.576,282,0.751,289,0.955,293,0.785,296,2.95,308,2.185,313,3.251,316,1.128,319,1.682,341,0.734,351,0.569,353,1.988,354,0.756,377,1.227,391,1.193,402,0.729,431,0.743,434,1.138,439,1.849,441,0.775,445,0.791,451,1.183,460,0.543,465,0.99,466,0.726,468,1.116,487,1.029,514,2.086,519,0.872,531,1.14,547,0.549,552,2.169,556,0.765,583,1.317,597,0.715,603,2.448,613,0.93,617,0.704,620,0.743,665,3.709,670,0.678,673,4.016,674,0.834,679,0.509,680,1.183,682,1.222,684,1.644,695,2.625,697,0.743,698,0.672,723,2.259,741,2.497,742,0.88,743,3.015,744,0.863,764,4.961,786,0.678,788,0.747,865,1.728,871,0.856,873,0.827,909,0.88,930,1.674,933,0.827,966,0.834,967,1.446,972,0.653,976,0.983,1005,0.438,1012,0.942,1040,0.738,1066,2.884,1075,0.726,1076,1.101,1077,1.81,1099,0.955,1130,0.78,1196,1.016,1210,1.08,1398,1.988,1477,0.704,1621,1.035,1692,1.035,1749,2.914,1750,0.955,1783,0.955,1933,1.016,1942,2.497,1946,1.016,2018,0.88,2024,2.833,2042,0.848,2054,0.751,2058,1.138,2093,1.056,2097,0.968,2114,1.138,2116,0.999,2127,1.056,2131,1.138,2138,2.857,2220,1.138,2240,1.758,2293,1.138,2296,1.655,2336,1.783,2356,0.983,2409,1.138,2443,1.08,2448,2.444,2478,1.056,2566,0.814,2592,1.138,2647,1.056,2785,1.08,2817,1.08,3139,1.107,3140,1.288,3141,1.288,3142,1.288,3143,4.376,3144,1.288,3145,1.288,3146,1.288,3147,1.288,3148,1.288,3149,1.288,3150,1.288,3151,1.288,3152,1.288,3153,1.288,3154,1.107,3155,1.288,3156,1.288,3157,1.288,3158,1.288,3159,1.288,3160,1.288,3161,1.288]],["component/194",[7,0.401]],["title/195-1",[0,39.238,1,51.636]],["name/195-1",[]],["text/195-1",[]],["component/195-1",[]],["title/195-2",[9,44.029,33,33.622,552,26.841]],["name/195-2",[]],["text/195-2",[]],["component/195-2",[]],["title/195",[2,44.313,3,31.597]],["name/195",[2,0.789,3,0.563]],["text/195",[0,2.565,1,5.422,2,2.178,3,3.318,4,2.121,5,0.897,6,1.049,7,0.936,8,1.477,9,5.698,10,3.72,11,5.12,12,3.877,13,0.711,14,0.904,17,3.509,18,4.033,19,1.301,20,1.216,21,1.936,22,1.727,23,0.979,24,2.03,25,1.582,26,0.877,27,1.936,28,1.836,29,1.949,30,2.18,31,1.174,32,1.526,33,5.417,34,1.634,35,2.021,36,0.95,37,1.277,38,1.191,39,1.936,40,0.722,41,1.936,42,1.667,43,1.76,44,1.936,45,1.697,46,1.528,47,1.936,48,3.296,49,1.512,50,4.26,51,1.936,52,1.007,53,1.936,54,2.069,55,1.936,56,2.4,57,2.11,58,2.314,59,1.936,60,2.314,61,1.936,62,1.795,63,1.364,64,2.727,65,1.429,66,1.936,67,1.936,68,1.27,69,1.582,70,1.647,71,1.133,72,1.936,73,1.936,74,1.727,75,1.647,76,1.318,77,1.222,79,0.976,84,0.601,121,2.099,134,0.78,141,1.528,148,0.722,158,1.138,172,0.924,186,1.143,191,2.302,194,2.415,196,0.909,234,1.216,251,1.056,263,1.041,264,0.732,272,1.191,286,2.881,287,3.547,296,1.553,325,1.354,351,0.967,361,0.997,386,1.203,406,1.269,408,1.138,517,1.263,552,1.534,604,2.069,668,1.119,751,2.916,963,1.119,1076,1.017,1078,1.344,1249,1.698,1434,1.222,1468,1.344,1492,1.563,1498,1.455,1945,1.395,2007,1.882,2008,2.081,2009,1.836,2010,1.836,2011,6.564,2012,6.564,2013,5.785,2014,4.83,2015,2.081,2016,1.468,2017,2.081,2018,1.497,2019,2.081,2020,2.081,2021,2.081,2022,2.081,2023,2.081,2024,1.882,2025,2.081,2026,2.081,2027,2.081,2028,2.081,2029,1.882]],["component/195",[7,0.401]],["title/196-1",[211,39.397,2030,73.872]],["name/196-1",[]],["text/196-1",[]],["component/196-1",[]],["title/196-2",[3,31.597,42,33.917]],["name/196-2",[]],["text/196-2",[]],["component/196-2",[]],["title/196-3",[134,33.036]],["name/196-3",[]],["text/196-3",[]],["component/196-3",[]],["title/196-4",[88,27.909]],["name/196-4",[]],["text/196-4",[]],["component/196-4",[]],["title/196-5",[11,43.832,654,53.672]],["name/196-5",[]],["text/196-5",[]],["component/196-5",[]],["title/196-6",[52,35.736,134,27.671]],["name/196-6",[]],["text/196-6",[]],["component/196-6",[]],["title/196-7",[7,16.382,32,26.708,155,23.905]],["name/196-7",[]],["text/196-7",[]],["component/196-7",[]],["title/196-8",[86,46.845]],["name/196-8",[]],["text/196-8",[]],["component/196-8",[]],["title/196-9",[118,21.806,264,22.343,743,37.312]],["name/196-9",[]],["text/196-9",[]],["component/196-9",[]],["title/196-10",[468,43.669]],["name/196-10",[]],["text/196-10",[]],["component/196-10",[]],["title/196-11",[135,37.916]],["name/196-11",[]],["text/196-11",[]],["component/196-11",[]],["title/196-12",[136,23.734]],["name/196-12",[]],["text/196-12",[]],["component/196-12",[]],["title/196-13",[23,29.884,40,22.05,547,28.52]],["name/196-13",[]],["text/196-13",[]],["component/196-13",[]],["title/196-14",[13,25.254,105,32.092]],["name/196-14",[]],["text/196-14",[]],["component/196-14",[]],["title/196",[3,31.597,7,19.043]],["name/196",[10,0.973]],["text/196",[3,1.948,6,1.712,7,1.518,8,1.682,10,3.598,11,2.016,12,0.557,13,1.162,14,0.45,17,1.943,18,1.588,22,0.859,23,1.275,24,0.579,29,2.898,32,0.435,34,0.466,36,0.472,40,0.94,42,1.84,45,1.588,48,1.099,52,2.44,54,0.59,60,0.66,70,0.819,79,2.572,83,1.449,84,1.903,85,1.602,86,1.44,87,2.608,88,2.273,90,0.485,99,1.712,105,0.838,107,0.737,110,1.295,112,0.916,113,1.779,116,1.094,117,1.151,118,1.882,121,0.598,125,0.496,133,0.647,134,1.273,135,1.461,136,1.225,139,1.495,144,1.21,145,1.293,146,1.866,155,1.897,158,1.055,160,1.516,162,0.76,163,1.005,170,0.647,171,0.509,172,1.508,177,0.963,178,0.557,180,1.206,183,0.433,185,1.361,186,0.568,189,0.605,190,0.643,191,2.183,192,1.434,196,2.571,200,0.705,203,0.635,211,0.552,220,0.752,222,0.859,224,3.552,227,0.705,228,0.545,231,0.737,234,3.204,239,1.329,243,1.214,245,0.737,247,1.206,248,0.539,249,2.479,250,0.744,251,0.979,252,0.907,253,0.705,254,0.723,256,0.913,257,0.936,258,0.807,259,0.963,260,0.787,261,1.665,262,0.621,263,0.965,264,3.356,268,0.669,272,0.593,277,0.531,280,1.598,282,0.635,283,1.177,286,1.151,292,0.581,296,1.453,308,1.153,313,1.716,319,0.834,335,0.621,346,0.797,348,0.699,349,0.568,351,0.481,352,0.768,354,0.639,355,0.694,357,0.611,377,0.564,391,1.021,401,0.91,402,0.449,406,1.188,412,1.361,418,1.55,431,1.171,438,0.76,441,0.655,443,1.069,450,1.325,451,0.543,460,0.459,465,1.19,468,1.683,487,0.881,505,0.678,509,1.247,525,1.259,547,0.464,549,0.541,552,1.145,556,1.206,567,0.744,569,1.602,593,0.513,604,1.099,615,0.595,619,0.717,630,0.651,647,0.655,654,2.469,662,0.875,663,0.711,675,0.711,679,0.431,680,0.543,682,0.561,683,1.875,684,1.423,698,0.568,711,0.66,732,0.694,741,0.664,743,1.995,751,0.831,754,1.22,774,0.717,786,1.069,790,0.593,865,1.065,871,0.723,900,1.817,903,0.605,920,0.819,933,0.699,961,0.76,968,1.065,972,0.552,983,0.777,993,0.608,1005,0.97,1076,0.506,1091,0.614,1097,0.73,1110,0.717,1125,1.304,1130,0.66,1211,0.699,1253,0.673,1300,0.845,1413,0.859,1416,0.655,1455,1.795,1456,0.468,1477,0.595,1490,0.678,1498,1.349,1520,1.304,1561,0.787,1623,0.893,1640,0.737,1644,1.795,1647,0.717,1688,1.745,1942,0.664,1947,0.859,2010,0.913,2016,0.73,2018,1.388,2031,1.035,2032,1.035,2033,1.035,2034,1.035,2035,1.035,2036,1.035,2037,0.936,2038,1.035,2039,1.035,2040,1.035,2041,1.035,2042,0.717,2043,1.632,2045,0.807,2046,0.875,2047,0.875,2050,0.845,2051,2.354,2054,0.635,2055,2.729,2056,0.73,2057,1.035,2058,0.963,2059,1.035,2060,0.705,2061,0.936,2062,1.035,2063,0.777,2064,1.035,2066,0.936,2067,1.702,2068,0.936,2069,0.875,2070,0.963,2071,0.936,2072,0.831,2073,0.831,2074,1.035,2370,0.893,2785,0.913,3003,0.963,3154,0.936,3162,1.089,3163,1.089,3164,1.089,3165,0.893,3166,1.089,3167,1.089,3168,0.893,3169,1.089,3170,1.665,3171,0.893,3172,0.893,3173,1.089]],["component/196",[7,0.401]],["title/197-1",[684,38.775,869,56.867]],["name/197-1",[]],["text/197-1",[]],["component/197-1",[]],["title/197-2",[113,39.143]],["name/197-2",[]],["text/197-2",[]],["component/197-2",[]],["title/197-3",[7,19.043,869,56.867]],["name/197-3",[]],["text/197-3",[]],["component/197-3",[]],["title/197-4",[111,50.007]],["name/197-4",[]],["text/197-4",[]],["component/197-4",[]],["title/197-5",[113,39.143]],["name/197-5",[]],["text/197-5",[]],["component/197-5",[]],["title/197-6",[13,19.063,14,24.225,264,19.605,325,36.279]],["name/197-6",[]],["text/197-6",[]],["component/197-6",[]],["title/197",[1246,68.801]],["name/197",[1246,1.832]],["text/197",[3,2.362,7,2.951,8,1.41,10,1.419,11,3.277,12,1.843,13,2.983,14,3.79,23,1.611,26,1.444,33,2.922,38,1.962,42,1.573,48,3.147,49,2.49,62,2.957,77,2.012,80,2.44,84,2.003,88,1.748,96,1.68,102,3.132,111,4.947,113,4.529,115,2.033,125,2.646,128,2.023,129,1.658,148,1.189,158,1.874,164,2.156,186,1.882,221,2.374,236,1.525,243,3.474,252,1.611,264,2.439,301,1.451,313,4.392,314,3.187,320,2.044,325,3.593,333,2.091,344,2.844,356,3.047,384,2.957,421,1.934,443,1.899,451,1.799,509,2.214,517,2.079,520,2.49,553,3.452,593,1.697,684,2.899,869,7.179,889,2.129,963,1.843,972,3.7,1062,2.465,1221,2.957,1246,6.807,1250,2.574,1289,2.898,1421,2.465,1595,5.137,1945,2.297,2075,3.427,2076,2.395,2077,5.523,2078,5.523,2079,5.523]],["component/197",[7,0.401]],["title/198-1",[296,27.183,673,32.606,743,37.312]],["name/198-1",[]],["text/198-1",[]],["component/198-1",[]],["title/198-2",[7,16.382,134,23.806,552,26.841]],["name/198-2",[]],["text/198-2",[]],["component/198-2",[]],["title/198-3",[2080,70.826]],["name/198-3",[]],["text/198-3",[]],["component/198-3",[]],["title/198-4",[86,46.845]],["name/198-4",[]],["text/198-4",[]],["component/198-4",[]],["title/198-5",[88,27.909]],["name/198-5",[]],["text/198-5",[]],["component/198-5",[]],["title/198-6",[155,27.786,465,32.434]],["name/198-6",[]],["text/198-6",[]],["component/198-6",[]],["title/198-7",[13,21.726,14,27.609,319,27.465]],["name/198-7",[]],["text/198-7",[]],["component/198-7",[]],["title/198-8",[135,31.759,319,31.924]],["name/198-8",[]],["text/198-8",[]],["component/198-8",[]],["title/198-9",[439,37.508,708,35.536,1400,35.216]],["name/198-9",[]],["text/198-9",[]],["component/198-9",[]],["title/198",[]],["name/198",[93,0.536,94,0.561,552,0.386]],["text/198",[3,0.449,5,0.842,7,0.886,8,1.516,10,2.751,13,2.03,14,2.405,17,0.448,18,0.49,20,0.613,29,2.054,30,0.882,36,0.892,38,1.119,42,0.897,45,0.49,52,0.945,68,0.64,76,1.737,84,1.598,86,2.94,87,0.683,88,1.282,90,0.492,93,1.147,94,1.684,99,0.985,102,0.595,109,0.887,112,3.675,113,0.867,115,0.623,116,0.595,117,2.161,118,1.179,125,0.936,126,0.779,130,1.214,134,1.287,135,3.757,136,1.09,139,2.065,141,2.523,148,1.596,154,0.536,155,1.524,160,0.587,161,1.843,163,0.547,165,1.331,169,1.16,171,0.516,172,1.218,181,0.788,186,0.576,191,1.092,192,0.555,194,0.698,195,0.669,196,2.418,200,0.715,201,0.762,203,0.644,211,0.56,214,1.605,220,2.497,224,3.987,226,0.693,234,1.142,238,0.788,239,0.514,247,1.715,250,0.755,253,0.715,263,0.525,264,3.413,277,0.538,279,0.496,280,1.29,283,1.674,292,0.589,296,2.54,297,1.124,308,0.832,311,2.526,315,0.715,316,0.525,319,0.845,341,0.629,348,0.709,349,0.576,391,2.694,392,0.976,402,0.244,406,0.367,408,0.574,439,0.619,441,1.237,443,0.581,446,0.549,451,0.551,455,1.01,465,1.509,468,0.968,470,0.485,476,0.856,487,0.479,514,1.496,518,3.626,525,0.908,547,0.471,549,0.549,552,2.15,556,2.875,583,2.366,603,0.66,604,0.598,613,0.798,617,2.929,630,1.229,631,0.648,658,0.949,670,1.083,673,3.972,674,0.715,680,0.551,683,1.078,684,1.44,695,0.536,697,1.664,708,1.922,735,1.853,736,0.656,743,0.616,767,0.762,786,1.083,859,1.237,865,1.078,890,0.678,894,0.715,900,0.703,903,0.613,909,0.755,961,0.771,982,3.802,993,0.616,1005,0.699,1076,0.513,1090,0.727,1095,0.871,1139,0.721,1211,0.709,1253,1.272,1277,5.815,1400,1.083,1413,0.871,1449,0.976,1467,2.804,1490,0.688,1640,0.747,1727,0.755,1942,0.673,1945,0.703,1948,1.653,1952,1.595,2051,0.727,2054,1.2,2060,3.133,2061,0.949,2073,0.843,2076,0.733,2080,4.769,2081,0.949,2082,1.049,2083,0.843,2084,0.926,2085,1.049,2086,0.949,2087,0.949,2088,0.949,2089,0.949,2090,0.949,2091,0.949,2092,0.856,2093,1.686,2094,0.949,2095,1.049,2096,0.949,2097,0.83,2098,0.905,2099,0.976,2100,1.049,2101,1.049,2102,1.049,2103,0.871,2104,0.976,2105,1.049,2106,0.949,2107,0.949,2108,0.856,2109,0.819,2110,0.949,2111,1.954,2112,2.48,2113,1.049,2114,0.976,2115,1.049,2116,0.856,2117,1.954,2118,1.653,2119,2.551,2120,1.049,2121,1.878,2122,1.049,2123,1.049,2124,1.954,2125,2.743,2126,1.818,2127,0.905,2128,1.049,2129,1.049,2130,0.949,2131,0.976,2132,0.905,2133,1.049,2134,0.887,2135,0.843,2136,0.887]],["component/198",[7,0.401]],["title/199-1",[7,16.382,134,23.806,552,26.841]],["name/199-1",[]],["text/199-1",[]],["component/199-1",[]],["title/199-2",[7,16.382,10,26.319,552,26.841]],["name/199-2",[]],["text/199-2",[]],["component/199-2",[]],["title/199-3",[40,22.05,552,26.841,1952,51.858]],["name/199-3",[]],["text/199-3",[]],["component/199-3",[]],["title/199-4",[2080,70.826]],["name/199-4",[]],["text/199-4",[]],["component/199-4",[]],["title/199-5",[86,46.845]],["name/199-5",[]],["text/199-5",[]],["component/199-5",[]],["title/199-6",[88,27.909]],["name/199-6",[]],["text/199-6",[]],["component/199-6",[]],["title/199-7",[465,32.434,548,49.907]],["name/199-7",[]],["text/199-7",[]],["component/199-7",[]],["title/199-8",[139,32.899]],["name/199-8",[]],["text/199-8",[]],["component/199-8",[]],["title/199-9",[13,25.254,14,32.092]],["name/199-9",[]],["text/199-9",[]],["component/199-9",[]],["title/199-10",[1253,48.06,2063,55.481]],["name/199-10",[]],["text/199-10",[]],["component/199-10",[]],["title/199-11",[3,23.851,349,30.628,439,32.911,708,31.18]],["name/199-11",[]],["text/199-11",[]],["component/199-11",[]],["title/199-12",[112,26.465,113,24.75,118,19.133,972,29.739]],["name/199-12",[]],["text/199-12",[]],["component/199-12",[]],["title/199-13",[139,20.802,144,24.886,673,28.61,2137,40.104]],["name/199-13",[]],["text/199-13",[]],["component/199-13",[]],["title/199-14",[16,50.316,1400,40.934]],["name/199-14",[]],["text/199-14",[]],["component/199-14",[]],["title/199-15",[139,23.708,335,38.123,624,46.666]],["name/199-15",[]],["text/199-15",[]],["component/199-15",[]],["title/199-16",[296,21.247,391,26.28,487,22.675,680,26.073,2138,36.475]],["name/199-16",[]],["text/199-16",[]],["component/199-16",[]],["title/199-17",[13,21.726,14,27.609,88,20.111]],["name/199-17",[]],["text/199-17",[]],["component/199-17",[]],["title/199-18",[260,56.153,2063,55.481]],["name/199-18",[]],["text/199-18",[]],["component/199-18",[]],["title/199-19",[10,20.571,87,32.317,129,24.03,402,11.555,470,22.941]],["name/199-19",[]],["text/199-19",[]],["component/199-19",[]],["title/199-20",[258,57.629,260,56.153]],["name/199-20",[]],["text/199-20",[]],["component/199-20",[]],["title/199-21",[258,57.629,2139,73.872]],["name/199-21",[]],["text/199-21",[]],["component/199-21",[]],["title/199-22",[112,26.465,118,19.133,552,23.551,616,45.501]],["name/199-22",[]],["text/199-22",[]],["component/199-22",[]],["title/199-23",[26,20.927,113,22.047,264,17.464,357,29.317,552,20.98]],["name/199-23",[]],["text/199-23",[]],["component/199-23",[]],["title/199-24",[13,21.726,14,27.609,552,26.841]],["name/199-24",[]],["text/199-24",[]],["component/199-24",[]],["title/199-25",[136,15.007,603,35.079,684,29.269,1001,43.502]],["name/199-25",[]],["text/199-25",[]],["component/199-25",[]],["title/199-26",[136,10.972,514,15.054,528,23.936,603,25.648,841,26.913,1201,29.322,1621,34.473]],["name/199-26",[]],["text/199-26",[]],["component/199-26",[]],["title/199",[7,14.374,102,31.619,158,30.495,552,23.551]],["name/199",[552,0.556,1608,1.189]],["text/199",[3,0.946,4,1.008,5,0.27,6,0.315,7,0.686,8,1.063,10,0.715,13,1.185,14,1.337,16,0.426,17,0.736,23,0.811,24,2.14,26,0.727,29,1.398,30,0.541,32,0.263,33,0.634,35,0.667,36,0.547,37,1.059,38,0.358,40,1.202,42,0.792,45,2.234,52,1.489,58,0.399,63,0.41,68,0.382,79,2.101,84,2.197,86,3.085,88,1.097,90,1.037,92,0.391,96,0.307,97,0.816,104,0.322,105,0.272,110,1.828,111,0.68,112,3.058,113,1.989,115,0.371,116,0.978,117,1.903,118,1.736,125,0.3,128,0.369,134,1.679,136,1.206,138,0.557,139,2.404,141,1.624,144,0.987,148,0.599,154,0.882,155,0.649,160,0.965,161,0.691,162,0.88,163,0.899,168,0.334,169,1.024,170,1.079,171,0.308,172,0.981,178,0.645,183,0.262,185,0.441,189,1.554,190,1.374,191,1.658,192,0.331,195,0.399,196,1.671,203,0.384,208,0.552,211,0.334,214,0.475,224,0.889,226,0.413,234,0.365,239,0.307,241,0.519,243,0.394,247,2.604,248,0.624,249,0.94,250,0.45,252,1.447,253,0.426,258,2.076,260,0.476,261,0.54,262,0.719,263,0.863,264,1.681,265,0.434,267,0.711,268,1.719,271,0.586,273,0.519,275,0.62,278,0.74,279,0.296,280,1.251,282,0.384,283,0.382,296,1.917,297,0.993,301,1.467,304,0.89,317,0.446,319,0.956,324,0.465,330,0.81,331,0.341,335,0.375,337,0.54,340,0.391,346,0.482,349,0.658,354,1.065,355,1.156,356,0.345,361,1.275,374,0.47,377,0.653,378,0.446,388,0.384,391,0.913,401,0.295,402,0.716,408,0.656,424,0.88,429,0.437,430,0.446,431,0.727,439,0.707,440,0.413,443,1.225,445,0.404,446,0.327,450,0.43,451,0.629,452,0.862,455,1.978,458,0.404,465,1.168,468,0.31,470,0.554,476,0.978,483,0.566,487,2.046,506,0.47,509,0.404,514,1.765,517,0.38,518,3.404,519,0.446,523,0.386,525,0.557,528,0.704,547,0.774,548,1.494,549,1.391,552,3.328,556,2.802,575,0.45,580,1.326,583,1.008,586,0.382,593,0.594,603,0.754,604,0.357,616,0.511,619,0.83,620,0.38,622,0.47,623,1.034,624,0.459,665,0.928,668,0.645,670,1.705,673,2.452,675,0.823,676,0.43,678,1.326,679,0.718,680,2.509,681,0.434,682,0.936,683,1.468,684,1.615,686,0.701,695,0.32,697,1.341,706,0.407,708,0.67,712,0.786,723,0.69,724,1.014,732,0.803,734,0.455,735,1.166,736,1.079,738,0.519,740,0.511,741,1.707,742,0.862,745,0.32,780,1.034,781,1.489,786,0.664,788,0.731,834,0.446,841,1.46,865,0.952,889,0.745,894,0.816,903,0.7,918,0.482,930,0.465,962,0.511,963,0.336,972,1.179,973,0.923,982,0.823,985,0.399,993,0.367,1001,0.488,1008,0.983,1066,1.242,1068,0.862,1076,1.08,1090,0.434,1091,0.371,1096,0.47,1097,0.846,1108,0.871,1122,0.482,1138,0.45,1150,0.347,1155,0.47,1157,0.511,1201,0.45,1211,0.423,1253,2.49,1256,0.519,1277,4.185,1279,0.396,1400,1.474,1416,0.396,1431,0.352,1447,1.034,1461,0.355,1490,0.41,1498,0.437,1515,2.401,1516,0.511,1556,1.107,1621,0.529,1650,0.89,1661,0.482,1708,0.441,1782,1.084,1924,1.56,1950,0.459,1952,2.511,1962,0.511,1978,0.552,2018,0.862,2051,1.843,2052,0.582,2053,0.54,2054,0.384,2056,0.846,2060,0.426,2063,0.9,2080,1.386,2083,0.503,2084,1.057,2086,0.566,2087,0.566,2088,0.566,2089,0.566,2090,0.566,2091,0.566,2092,0.511,2106,0.566,2107,1.56,2108,0.511,2109,0.488,2110,0.566,2134,0.529,2135,0.503,2136,0.529,2140,0.626,2141,1.152,2142,1.199,2143,0.626,2144,0.626,2145,0.566,2146,0.626,2147,0.626,2148,0.566,2149,1.199,2150,0.552,2151,0.626,2152,0.566,2153,0.626,2154,0.626,2155,0.626,2156,0.626,2157,0.626,2158,0.626,2159,0.626,2160,1.199,2161,0.566,2162,0.626,2163,0.626,2164,0.54,2165,0.626,2166,0.582,2167,0.626,2168,0.626,2169,0.529,2170,3.465,2171,0.626,2172,0.626,2173,2.295,2174,1.199,2175,2.66,2176,1.199,2177,0.885,2178,1.199,2179,1.199,2180,1.199,2181,1.199,2182,0.626,2183,0.626,2184,0.626,2185,0.626,2186,0.626,2187,0.626,2188,0.626,2189,1.199,2190,0.626,2191,1.605,2192,0.626,2193,0.626,2194,0.47,2195,0.626,2196,0.626,2197,0.626,2198,0.626,2199,0.482,2200,0.626,2201,0.626,2202,0.626,2203,0.626,2204,0.626,2205,0.626,2206,0.626,2207,0.626,2208,0.626,2209,0.626,2210,0.626,2211,0.511,2212,0.626,2213,0.626,2214,0.626,2215,0.626,2216,0.626,2217,0.626,2218,1.199,2219,0.626,2220,0.582,2221,0.626,2222,0.626,3174,1.261,3175,0.658]],["component/199",[7,0.401]],["title/200",[158,40.398,502,34.217]],["name/200",[502,1.088]],["text/200",[134,3.739,158,5.459,251,5.065,967,6.404,1936,6.494,3176,10.501]],["component/200",[7,0.401]],["title/201-1",[2258,66.798,2259,66.798]],["name/201-1",[]],["text/201-1",[]],["component/201-1",[]],["title/201-2",[23,34.737,1619,60.278]],["name/201-2",[]],["text/201-2",[]],["component/201-2",[]],["title/201-3",[42,29.179,436,54.829,514,23.467]],["name/201-3",[]],["text/201-3",[]],["component/201-3",[]],["title/201-4",[23,34.737,1936,48.06]],["name/201-4",[]],["text/201-4",[]],["component/201-4",[]],["title/201-5",[23,29.884,521,43.287,723,25.408]],["name/201-5",[]],["text/201-5",[]],["component/201-5",[]],["title/201",[7,19.043,23,34.737]],["name/201",[23,1.104]],["text/201",[1,2.249,5,3.304,7,1.713,8,0.821,19,3.28,23,5.375,24,2.934,26,3.23,34,1.448,36,1.469,40,1.116,42,1.477,58,2.05,84,0.929,88,1.661,110,2.506,118,1.8,125,2.514,128,3.097,129,1.556,130,1.999,133,2.011,134,3.579,144,1.436,158,1.759,172,2.329,183,2.194,188,1.963,191,2.645,203,1.975,234,1.879,252,1.513,264,3.185,270,2.625,271,2.564,296,2.244,301,2.222,319,1.39,337,2.776,377,1.752,406,1.125,436,4.527,458,2.078,470,2.423,514,2.454,525,1.495,552,1.359,583,1.879,586,1.963,604,1.833,659,2.477,668,2.822,682,1.744,683,1.775,694,1.999,697,1.952,698,1.767,736,2.011,772,2.011,830,2.05,833,2.477,895,2.477,984,2.078,1004,2.27,1013,2.51,1017,2.27,1139,3.604,1168,2.477,1204,2.776,1211,4.489,1402,2.477,1499,2.338,1561,2.446,1641,2.72,1669,2.477,1727,2.314,1747,2.625,1877,2.838,2054,1.975,2056,2.27,2081,2.909,2259,4.745,2260,2.909,2261,3.217,2262,3.217,2263,3.217,2264,3.217,2265,3.217,2266,3.217,2267,3.217,2268,3.217,2269,3.217,2270,3.217,2271,3.217,2272,3.217]],["component/201",[7,0.401]],["title/202-1",[7,22.734]],["name/202-1",[]],["text/202-1",[]],["component/202-1",[]],["title/202-2",[264,25.971,522,71]],["name/202-2",[]],["text/202-2",[]],["component/202-2",[]],["title/202-3",[264,19.605,343,40.515,1750,43.502,2619,38.632]],["name/202-3",[]],["text/202-3",[]],["component/202-3",[]],["title/202-4",[4,43.146,7,19.043]],["name/202-4",[]],["text/202-4",[]],["component/202-4",[]],["title/202-5",[239,31.151,308,27.045,629,59.109]],["name/202-5",[]],["text/202-5",[]],["component/202-5",[]],["title/202-6",[191,35.099]],["name/202-6",[]],["text/202-6",[]],["component/202-6",[]],["title/202-7",[2273,88.192]],["name/202-7",[]],["text/202-7",[]],["component/202-7",[]],["title/202-8",[209,31.893,790,25.639,968,24.706,3177,47.115,3178,47.115,3179,47.115]],["name/202-8",[]],["text/202-8",[]],["component/202-8",[]],["title/202-9",[95,42.597,2282,59.109,3180,57.467]],["name/202-9",[]],["text/202-9",[]],["component/202-9",[]],["title/202-10",[94,39.007,2275,61.082,2276,63.552]],["name/202-10",[]],["text/202-10",[]],["component/202-10",[]],["title/202-11",[93,37.312,1715,51.038,2274,61.082]],["name/202-11",[]],["text/202-11",[]],["component/202-11",[]],["title/202-12",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2277,40.77,2278,40.77]],["name/202-12",[]],["text/202-12",[]],["component/202-12",[]],["title/202-13",[8,10.407,191,16.226,854,27.77,1715,32.742,2119,30.27,2279,40.77,2280,40.77]],["name/202-13",[]],["text/202-13",[]],["component/202-13",[]],["title/202-14",[8,10.407,191,16.226,854,27.77,2119,30.27,2281,37.92,2282,37.92,2283,40.77]],["name/202-14",[]],["text/202-14",[]],["component/202-14",[]],["title/202",[7,19.043,78,47.724]],["name/202",[631,1.45]],["text/202",[0,0.515,3,0.776,4,0.566,5,1.103,7,0.468,8,1.34,10,2.174,11,0.575,12,1.376,13,1.646,14,1.111,15,0.521,16,0.66,17,0.774,18,0.453,23,1.513,24,2.425,26,2.211,29,2.118,31,0.547,32,1.352,34,1.448,36,1.168,40,1.321,42,0.833,45,0.848,52,1.557,54,0.552,56,0.481,57,0.563,58,2.427,60,0.618,64,0.728,71,0.988,84,1.252,88,1.018,90,0.851,93,0.569,94,1.114,95,1.715,96,1.254,97,0.66,102,1.029,104,2.479,105,1.398,110,0.463,113,2.137,117,0.77,118,2.061,125,0.869,129,0.878,133,0.606,134,0.68,135,1.637,136,1.617,139,2.241,144,1.436,146,2.091,148,0.63,150,1.117,153,0.746,154,0.495,155,1.631,158,0.992,160,1.015,163,0.505,168,1.364,172,1.428,178,0.521,183,0.405,186,0.997,191,2.246,194,1.207,195,1.156,196,1.117,200,0.66,214,0.384,215,4.101,221,0.671,224,1.317,226,0.64,234,1.06,235,0.901,247,0.606,248,0.505,249,0.988,252,0.456,254,0.677,263,1.61,264,2.969,275,0.501,278,0.598,280,0.456,296,1.376,297,0.557,308,1.62,313,2.038,319,1.874,320,0.578,322,0.704,330,0.655,333,1.107,341,1.088,349,0.997,351,0.45,354,0.598,375,0.649,377,0.528,382,0.901,391,1.353,401,1.207,402,1.397,406,0.339,415,2.638,438,0.712,439,0.572,446,0.507,450,0.666,455,1.322,458,0.626,460,1.136,464,0.626,465,0.425,466,0.575,468,1.594,470,1.486,502,1.491,514,1.188,517,0.588,519,0.69,521,0.66,525,0.45,547,1.444,552,2.807,567,0.697,583,0.566,593,0.898,597,1.06,603,0.61,633,0.901,634,1.688,635,0.876,637,0.791,638,0.901,643,1.506,644,0.819,645,0.836,646,0.876,647,0.614,648,0.901,649,0.778,650,0.901,651,0.901,654,0.704,656,1.851,663,1.246,673,0.497,678,1.088,679,2.184,684,1.343,686,0.737,690,0.614,705,1.788,723,0.725,728,0.557,736,0.606,743,2.546,745,1.308,774,0.671,788,0.591,790,1.465,794,0.969,835,0.539,841,1.198,848,0.969,859,0.614,865,2.896,873,0.655,890,0.626,895,1.397,896,1.198,898,0.778,900,0.649,910,3.029,921,0.778,925,0.767,943,0.666,962,0.791,967,0.622,970,0.684,972,2.031,984,0.626,1005,0.649,1053,0.677,1064,0.719,1066,1.019,1073,0.778,1078,1.172,1130,1.156,1133,0.649,1134,0.737,1136,0.635,1187,0.719,1213,0.69,1253,1.18,1310,0.756,1343,0.836,1367,0.901,1394,4.033,1400,0.537,1417,0.855,1424,0.931,1431,0.544,1448,1.436,1457,0.441,1477,0.557,1483,1.527,1508,0.737,1520,0.655,1523,0.855,1533,0.728,1558,0.572,1559,0.684,1591,0.649,1610,0.635,1671,0.901,1708,0.684,1735,0.542,1754,0.719,1772,1.945,1783,0.756,1819,0.671,1843,0.819,1908,0.901,1942,1.164,1945,0.649,1947,0.804,2053,0.836,2054,1.57,2060,2.593,2076,0.677,2126,0.901,2145,0.876,2253,0.969,2289,3.218,2291,0.969,2292,0.791,2293,1.688,2294,0.876,2295,0.969,2296,1.332,2297,0.969,2298,0.969,2299,1.641,2301,0.756,2304,0.855,2305,0.969,2306,0.737,2307,1.688,2308,0.876,2309,0.704,2310,0.756,2311,0.876,2312,0.901,2545,0.901,2548,0.901,2673,0.767,3043,0.728,3129,0.644,3181,1.019,3182,1.019,3183,1.019,3184,1.019,3185,1.019,3186,1.019,3187,1.019,3188,1.019,3189,3.386,3190,1.019,3191,1.019,3192,1.019,3193,0.931,3194,0.931,3195,1.019,3196,1.019,3197,1.019,3198,1.019]],["component/202",[7,0.401]],["title/203-1",[136,15.007,191,22.192,296,23.851,552,23.551]],["name/203-1",[]],["text/203-1",[]],["component/203-1",[]],["title/203",[102,41.887,136,19.88]],["name/203",[102,1.332]],["text/203",[6,1.778,8,2.169,10,1.461,18,0.941,24,1.126,25,1.531,30,1.592,31,1.136,34,1.588,36,0.919,42,0.925,52,1.707,79,0.944,84,1.019,88,2.239,90,2.207,99,1.015,112,1.674,117,0.855,118,1.21,134,2.855,136,2.821,139,3.702,146,1.106,147,1.329,148,0.699,152,1.448,154,1.029,158,1.101,163,1.837,172,1.566,190,1.251,191,2.25,192,1.065,196,2.807,203,1.236,209,1.434,214,1.865,224,2.424,227,1.372,234,2.061,239,0.987,264,3.561,279,1.669,280,0.947,286,1.201,292,1.131,296,3.26,297,2.03,308,3.01,319,2.443,377,1.097,402,1.315,431,1.222,443,1.955,446,1.053,460,0.894,465,1.549,466,1.195,514,1.738,552,2.715,593,0.997,620,1.222,647,1.275,665,1.083,668,1.083,673,3.298,681,1.395,682,1.092,683,1.111,684,3.713,690,1.275,697,2.14,723,2.57,733,1.408,741,2.264,743,3.319,772,1.259,774,1.395,788,1.229,790,2.695,889,1.251,903,1.176,909,2.537,933,2.383,972,1.074,982,1.383,1005,2.53,1053,1.408,1066,3.176,1092,1.339,1099,1.571,1110,1.395,1150,1.116,1772,2.682,1942,1.292,2016,1.421,2043,3.981,2045,1.571,2046,1.703,2047,1.703,2050,1.643,2051,1.395,2055,1.617,2069,1.703,2072,1.617,2098,4.062,2099,1.873,2104,1.873,2138,1.479,2223,3.391,2296,1.479,2634,1.643,3154,1.821,3165,1.737,3168,1.737,3170,3.044,3171,1.737,3172,1.737,3199,1.821,3200,1.821,3201,1.821,3202,1.821,3203,1.821,3204,2.118,3205,1.821,3206,1.671]],["component/203",[7,0.401]],["title/204",[136,15.007,214,22.092,264,19.605,1005,19.947]],["name/204",[214,0.521,1005,0.471]],["text/204",[0,2.012,4,2.212,5,2.579,8,2.341,10,2.477,12,2.037,17,2.552,18,1.77,30,1.709,36,2.731,40,1.314,42,1.739,68,2.311,69,2.879,86,2.012,88,2.346,110,1.809,118,1.3,133,3.739,135,2.572,136,1.995,139,3.421,142,2.09,155,2.25,160,2.118,172,1.681,211,2.02,214,3.862,215,2.752,249,2.062,264,1.332,377,2.062,402,0.881,412,2.672,487,3.384,536,6.57,556,2.368,557,2.285,608,2.028,612,3.144,674,2.58,716,3.144,717,5.568,718,3.523,719,3.476,722,6.896,723,1.514,724,3.203,725,3.523,726,3.788,727,3.341,728,2.179,746,1.62,752,3.907,757,3.523,762,2.879,763,2.916,764,2.724,765,2.752,766,2.58,1005,3.28,1137,2.845,1166,3.091,1483,1.798,1877,3.341,2169,5.058,2304,5.277,2313,3.203,2314,3.788,2315,3.788,3129,2.519,3207,3.985,3208,3.64,3209,3.985,3210,3.64]],["component/204",[7,0.401]],["title/205",[136,23.734]],["name/205",[631,1.45]],["text/205",[5,4.01,7,2.398,34,4.186,36,4.246,136,2.503,139,4.196,155,3.499,179,6.562,214,3.686,690,5.89]],["component/205",[7,0.401]],["title/206-1",[88,23.377,142,40.753]],["name/206-1",[]],["text/206-1",[]],["component/206-1",[]],["title/206-2",[6,37.221,687,52.112]],["name/206-2",[]],["text/206-2",[]],["component/206-2",[]],["title/206-3",[123,52.609,124,56.867]],["name/206-3",[]],["text/206-3",[]],["component/206-3",[]],["title/206",[136,19.88,684,38.775]],["name/206",[684,1.233]],["text/206",[6,3.164,15,1.595,17,2.094,26,1.25,32,2.063,35,2.732,36,1.354,38,2.81,40,1.029,57,1.724,75,2.347,77,2.882,84,3.179,88,2.559,91,1.76,96,2.406,121,1.715,123,4.472,124,4.834,129,2.374,130,3.901,135,3.138,136,2.963,142,1.636,144,2.191,155,1.846,166,1.843,171,1.459,172,2.178,192,1.569,196,2.742,202,2.314,211,3.349,214,2.488,264,1.726,308,2.672,313,1.878,316,3.651,321,4.565,331,1.615,377,1.615,388,3.013,401,2.315,411,3.883,509,4.056,570,1.82,663,3.371,668,3.376,682,1.608,686,1.205,697,1.799,698,1.629,699,2.759,700,2.759,702,2.759,703,2.759,704,2.759,705,2.073,706,3.193,707,2.759,708,1.658,709,2.759,711,3.128,713,2.759,714,2.759,786,2.72,889,1.843,917,3.731,949,3.128,1092,1.973,1138,2.133,1187,2.202,1467,2.42,1661,2.283,2316,2.966,2317,2.966,2318,2.966,2319,2.966,2320,2.966,2321,2.966,2322,2.966,2323,2.966,2324,2.966,2325,4.908,2326,2.966,2327,2.966,2328,4.438,2329,3.942,2330,2.966,2331,2.966]],["component/206",[7,0.401]],["title/207-1",[729,57.377]],["name/207-1",[]],["text/207-1",[]],["component/207-1",[]],["title/207-2",[84,21.33,706,48.06]],["name/207-2",[]],["text/207-2",[]],["component/207-2",[]],["title/207-3",[514,27.277,706,48.06]],["name/207-3",[]],["text/207-3",[]],["component/207-3",[]],["title/207-4",[786,48.87]],["name/207-4",[]],["text/207-4",[]],["component/207-4",[]],["title/207-5",[1967,66.236]],["name/207-5",[]],["text/207-5",[]],["component/207-5",[]],["title/207-6",[52,30.744,350,36.208,680,33.358]],["name/207-6",[]],["text/207-6",[]],["component/207-6",[]],["title/207-7",[36,25.454,487,25.454,680,29.269,767,40.515]],["name/207-7",[]],["text/207-7",[]],["component/207-7",[]],["title/207-8",[502,40.851]],["name/207-8",[]],["text/207-8",[]],["component/207-8",[]],["title/207",[136,17.103,487,29.01,680,33.358]],["name/207",[487,0.6,680,0.69]],["text/207",[4,0.88,7,0.703,8,0.385,13,0.515,14,0.655,17,2.258,18,0.705,20,0.88,26,2.23,29,0.608,32,0.634,35,2.946,36,0.688,38,2.136,46,1.107,52,2.86,71,0.821,84,2.412,96,0.739,101,3.673,108,1.074,110,0.72,112,1.771,117,3.275,118,2.213,121,0.872,125,1.788,134,2.593,136,1.736,142,0.832,148,0.523,155,2.224,157,2.224,161,0.604,163,0.785,164,0.948,165,1.027,170,0.942,171,1.341,172,2.349,178,0.811,180,0.942,195,0.961,196,1.998,214,1.08,226,1.799,239,0.739,245,1.074,247,0.942,248,1.42,250,1.084,252,1.755,255,2.744,263,2.648,275,1.409,277,1.914,279,0.713,280,1.282,297,2.147,301,2.731,315,1.027,319,1.178,327,1.211,331,2.032,340,0.942,346,1.16,347,1.211,351,0.7,375,1.01,377,1.484,378,1.074,386,0.872,391,1.974,395,0.988,398,1.146,418,1.211,430,1.074,439,0.89,446,0.788,451,0.791,452,1.084,455,3.795,458,1.761,465,0.662,487,3.522,505,0.988,508,1.644,514,1.378,525,2.125,547,0.677,583,1.592,596,0.988,597,0.88,604,2.126,608,0.807,622,2.802,665,0.811,673,1.399,679,3.693,680,4.99,682,0.817,683,1.504,686,1.516,689,1.063,698,0.828,705,1.054,708,0.843,712,2.998,729,0.981,730,2.802,731,2.189,732,2.501,733,1.054,734,1.095,735,2.521,736,2.333,737,1.33,738,1.251,741,1.749,744,2.632,745,0.771,770,1.402,771,3.733,772,2.86,774,1.044,775,1.176,776,1.402,777,1.402,778,1.402,779,2.378,780,1.301,781,2.352,782,1.33,783,1.176,785,2.405,786,2.068,787,1.402,788,0.92,789,1.363,790,0.863,889,1.693,973,1.16,985,0.961,993,0.885,1010,1.074,1033,2.684,1066,0.847,1076,0.736,1097,1.923,1219,1.044,1400,0.835,1416,0.954,1478,1.275,1551,1.044,1640,1.074,1659,1.211,1730,1.211,1733,1.193,1933,1.251,1943,1.275,1967,1.132,1968,1.449,1969,1.301,1970,1.33,1971,2.62,1972,1.449,1973,2.405,1974,1.363,1975,1.449,1976,1.449,1977,1.449,1978,1.33,1979,1.449,1980,1.449,2051,1.044,2054,0.925,2332,1.507,2333,1.507,2334,1.507,2335,1.507,2336,1.193]],["component/207",[7,0.401]],["title/208-1",[191,22.192,296,23.851,468,27.611,552,23.551]],["name/208-1",[]],["text/208-1",[]],["component/208-1",[]],["title/208",[102,41.887,468,36.578]],["name/208",[102,1.332]],["text/208",[3,0.951,4,1.299,5,0.958,6,1.937,8,2.168,10,2.104,18,1.039,23,1.045,25,1.69,30,1.735,31,1.255,42,1.021,52,1.86,79,1.042,84,0.642,86,2.043,88,2.688,90,1.803,99,1.12,112,1.055,117,0.944,118,1.319,134,3.008,139,3.446,146,1.221,147,1.468,148,0.771,154,1.966,158,1.216,163,2.003,172,2.255,188,1.357,190,1.381,191,3.196,192,1.176,196,2.644,200,1.514,203,2.36,209,1.583,214,0.881,224,1.98,227,1.514,234,2.968,239,1.09,264,3.449,279,2.404,280,1.045,286,1.326,292,1.249,296,3.435,297,1.279,308,2.576,317,1.583,319,2.616,391,1.176,431,1.349,443,2.131,446,1.162,460,0.987,465,0.976,468,5.179,514,1.876,552,2.889,593,1.101,597,1.299,604,1.267,620,1.349,665,1.195,668,1.195,673,1.973,681,1.54,682,1.205,683,1.226,684,1.167,690,1.408,697,1.349,723,2.42,733,1.554,741,2.467,743,2.983,790,2.909,889,1.381,901,1.961,902,1.961,903,2.246,909,2.766,933,1.502,1053,1.554,1066,2.854,1078,1.436,1099,1.734,1110,1.54,1123,1.633,1174,1.514,2016,1.568,2043,4.296,2045,1.734,2046,1.88,2047,1.88,2050,1.814,2051,1.54,2054,1.365,2055,1.785,2069,1.88,2070,2.068,2072,1.785,2138,1.633,2296,1.633,2353,1.961,3129,1.479,3135,1.785,3143,3.696,3165,1.918,3168,1.918,3170,3.318,3171,1.918,3172,1.918,3199,2.01,3200,2.01,3201,2.01,3202,2.01,3203,2.01,3205,2.01,3206,1.845,3211,2.137,3212,2.137,3213,2.339,3214,2.339]],["component/208",[7,0.401]],["title/209",[468,43.669]],["name/209",[631,1.45]],["text/209",[]],["component/209",[7,0.401]],["title/210",[32,26.708,45,29.703,130,39.481]],["name/210",[45,0.615,559,1.223]],["text/210",[11,7.224,26,3.255,45,3.611,48,4.402,52,3.737,54,4.402,60,4.924,77,5.878,91,4.584,155,4.178,191,3.075,232,6.413,560,7.185,561,7.185,562,7.185,563,7.185,566,7.185,567,5.556,568,7.185]],["component/210",[7,0.401]],["title/211-1",[8,11.431,80,31.893,83,33.634,119,31.893,348,30.256,569,37.173]],["name/211-1",[]],["text/211-1",[]],["component/211-1",[]],["title/211-2",[33,23.693,84,19.668,528,26.293,570,27.488,571,41.653]],["name/211-2",[]],["text/211-2",[]],["component/211-2",[]],["title/211-3",[20,12.558,84,6.208,116,12.192,119,15.312,164,13.526,319,9.292,525,9.989,572,19.998,573,19.998,574,34.743,575,15.464,576,19.998,577,13.12,578,19.442,579,19.998,580,12.898]],["name/211-3",[]],["text/211-3",[]],["component/211-3",[]],["title/211-4",[1,34.721,9,34.414,278,30.672,279,23.503,581,38.752]],["name/211-4",[]],["text/211-4",[]],["component/211-4",[]],["title/211-5",[148,25.631,582,61.318]],["name/211-5",[]],["text/211-5",[]],["component/211-5",[]],["title/211-6",[84,9.983,136,9.304,139,12.897,459,22.183,528,20.298,583,20.193,584,32.156,585,32.156,1005,12.367]],["name/211-6",[]],["text/211-6",[]],["component/211-6",[]],["title/211-7",[586,53.814]],["name/211-7",[]],["text/211-7",[]],["component/211-7",[]],["title/211",[587,73.205]],["name/211",[587,1.949]],["text/211",[1,4.967,7,0.916,8,2.073,9,3.938,10,1.471,18,1.66,32,2.389,33,1.879,71,1.934,80,4.048,83,4.269,84,2.052,99,1.789,101,1.777,111,2.014,112,1.686,113,1.576,116,2.014,118,1.219,119,5.06,136,0.956,139,1.325,144,1.585,145,2.38,147,2.344,148,1.232,151,2.482,152,2.554,164,2.234,187,3.133,188,2.167,203,2.18,222,5.898,233,3.133,252,1.67,271,2.777,279,3.362,319,1.535,320,2.119,325,3.698,328,4.434,335,3.409,340,2.22,345,2.948,349,1.951,350,3.238,406,1.987,429,2.482,514,1.311,528,4.172,531,1.796,549,1.857,577,2.167,582,5.898,588,3.303,589,3.303,590,2.81,591,3.064,592,3.303,593,1.759,594,3.303,595,3.303,596,3.724,597,2.074,598,5.014,599,3.064,600,5.286,601,2.771,602,4.32,603,2.234,604,2.023,605,3.303,606,5.286,607,3.303,608,1.902,609,3.133,610,3.303,611,3.303,612,4.718,613,2.7,614,3.303,615,2.043,616,2.898,617,3.27,618,2.637,619,2.46,620,2.155,621,2.667,622,2.667,623,3.064,624,2.608,625,2.898,626,3.303,627,3.303,628,3.303,1005,1.27]],["component/211",[7,0.401]],["title/212-1",[88,17.646,142,30.762,604,31.77,910,35.079]],["name/212-1",[]],["text/212-1",[]],["component/212-1",[]],["title/212-2",[135,23.974,191,22.192,296,23.851,552,23.551]],["name/212-2",[]],["text/212-2",[]],["component/212-2",[]],["title/212",[102,41.887,135,31.759]],["name/212",[102,1.332]],["text/212",[3,0.967,5,0.974,6,2.592,8,2.067,10,2.131,11,1.341,14,0.982,17,0.964,18,1.056,23,1.063,25,1.718,29,0.912,30,1.02,31,2.201,34,1.755,42,1.038,48,1.288,52,1.887,79,1.059,84,0.653,86,2.072,88,2.563,90,1.828,99,1.139,112,1.851,113,1.731,117,0.959,118,1.765,134,3.034,135,3.998,136,0.608,139,2.577,142,1.247,146,1.241,147,1.492,148,0.784,154,1.994,155,0.85,158,1.236,163,1.177,172,2.283,190,1.404,191,3.007,192,1.196,196,2.247,203,1.387,209,1.609,214,0.895,224,2.008,227,1.539,234,3.005,239,1.108,243,1.422,264,3.376,268,1.46,275,1.168,279,1.845,280,1.063,286,1.348,296,3.464,297,1.3,308,2.189,313,1.431,317,2.778,319,2.223,356,2.152,386,1.307,391,2.063,431,1.371,443,2.161,446,1.182,460,1.003,465,0.992,514,1.9,552,2.173,553,1.413,593,1.119,620,1.371,665,1.215,668,2.097,673,2.001,681,1.566,682,1.225,683,1.247,684,1.186,689,1.594,695,1.155,697,1.371,712,1.481,719,1.313,723,2.057,741,2.502,743,3.021,790,2.233,889,1.404,901,1.994,902,1.994,903,2.278,909,2.805,910,1.422,933,1.527,1053,1.58,1078,2.52,1106,1.225,1110,1.566,1134,1.718,2016,1.594,2043,4.35,2045,1.763,2046,1.911,2047,1.911,2050,1.844,2051,1.566,2055,1.815,2069,1.911,2072,1.815,2138,1.66,2296,1.66,2353,1.994,3129,1.503,3135,1.815,3165,1.95,3168,1.95,3170,3.365,3171,1.95,3172,1.95,3199,2.044,3200,2.044,3201,2.044,3202,2.044,3203,2.044,3205,2.044,3206,1.876,3211,2.172,3212,2.172,3215,2.378,3216,2.378,3217,2.378,3218,2.378,3219,2.378]],["component/212",[7,0.401]],["title/213-1",[406,22.217,1106,34.459,1107,35.216]],["name/213-1",[]],["text/213-1",[]],["component/213-1",[]],["title/213-2",[136,17.103,679,26.447,752,33.489]],["name/213-2",[]],["text/213-2",[]],["component/213-2",[]],["title/213-3",[42,22.807,142,27.403,143,28.034,752,26.176,2337,44.917]],["name/213-3",[]],["text/213-3",[]],["component/213-3",[]],["title/213-4",[5,21.411,42,22.807,135,21.356,138,23.078,752,26.176]],["name/213-4",[]],["text/213-4",[]],["component/213-4",[]],["title/213",[135,37.916]],["name/213",[631,1.45]],["text/213",[8,0.699,17,3.573,20,1.6,23,1.288,29,2.394,31,1.546,40,0.951,42,2.11,45,2.148,76,1.735,84,2.418,92,1.713,96,2.909,99,1.381,101,1.371,104,1.411,106,1.796,118,2.036,125,1.313,134,1.026,135,4.428,138,2.135,142,2.535,143,1.546,144,1.223,152,1.971,155,1.031,161,1.098,164,2.891,170,1.713,171,1.348,183,3.236,189,1.6,192,1.45,195,1.746,196,2.007,211,4.127,251,2.332,252,2.79,254,1.915,255,1.644,280,1.288,301,1.946,308,1.166,320,1.635,341,1.644,351,1.273,357,1.617,374,2.058,377,1.492,391,1.45,406,1.606,415,1.898,439,1.617,451,1.438,455,1.416,502,1.269,531,1.386,583,1.6,593,3.439,608,1.467,668,1.473,719,2.67,752,2.421,754,1.233,756,1.915,764,1.971,771,2.236,772,1.713,786,1.518,859,1.735,890,2.968,891,2.549,892,2.549,893,1.851,894,1.866,895,2.109,896,1.809,897,2.417,898,2.201,899,2.549,904,2.138,913,2.236,972,1.461,1075,1.626,1076,1.339,1109,1.971,1133,3.08,1150,1.518,1151,2.034,1284,2.201,1348,2.274,1389,2.274,1647,1.898,1747,2.236,2016,3.241,2130,2.478,2337,2.478,2338,2.74,2339,2.74,2340,2.74,2341,2.74,2342,2.317,2343,2.74,2344,2.74,2345,2.74,2346,2.74,2347,2.74,2348,2.201,2351,2.74,2352,2.109,2353,2.417,2356,2.201,2357,2.74,2358,2.74,2359,2.74,2360,2.74,2361,2.74,2362,2.74,2363,4.155,2364,2.74,2365,2.478,2366,2.74,2367,2.74,2368,2.74,2369,2.417,2370,2.364,2371,2.478,3220,2.883,3221,2.883,3222,2.883,3223,2.883,3224,2.883]],["component/213",[7,0.401]],["title/214-1",[45,34.526,90,34.631]],["name/214-1",[]],["text/214-1",[]],["component/214-1",[]],["title/214-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/214-2",[]],["text/214-2",[]],["component/214-2",[]],["title/214-3",[79,26.141,134,20.888,552,23.551,686,22.657]],["name/214-3",[]],["text/214-3",[]],["component/214-3",[]],["title/214-4",[84,11.772,112,19.35,139,15.209,335,24.457,429,28.498,624,29.938,673,20.918]],["name/214-4",[]],["text/214-4",[]],["component/214-4",[]],["title/214-5",[26,26.774,465,27.903,2372,48.923]],["name/214-5",[]],["text/214-5",[]],["component/214-5",[]],["title/214-6",[319,31.924,2373,60.278]],["name/214-6",[]],["text/214-6",[]],["component/214-6",[]],["title/214-7",[26,26.774,308,27.045,767,46.175]],["name/214-7",[]],["text/214-7",[]],["component/214-7",[]],["title/214-8",[106,36.54,136,15.007,137,27.802,2374,43.502]],["name/214-8",[]],["text/214-8",[]],["component/214-8",[]],["title/214-9",[86,33.757,191,25.292,296,27.183]],["name/214-9",[]],["text/214-9",[]],["component/214-9",[]],["title/214-10",[144,24.886,547,25.024,673,28.61,2137,40.104]],["name/214-10",[]],["text/214-10",[]],["component/214-10",[]],["title/214-11",[296,31.597,745,37.762]],["name/214-11",[]],["text/214-11",[]],["component/214-11",[]],["title/214-12",[135,27.323,893,42.936,2375,53.736]],["name/214-12",[]],["text/214-12",[]],["component/214-12",[]],["title/214-13",[2313,74.57]],["name/214-13",[]],["text/214-13",[]],["component/214-13",[]],["title/214-14",[84,16.101,586,34.025,672,38.3,1255,24.418]],["name/214-14",[]],["text/214-14",[]],["component/214-14",[]],["title/214",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,1253,29.136]],["name/214",[2376,2.348]],["text/214",[0,0.824,3,0.664,4,0.906,5,0.669,7,0.4,8,1.676,10,1.159,13,0.957,14,0.674,17,0.662,26,2.965,29,1.542,31,0.876,33,1.481,45,1.308,57,2.221,71,0.845,77,0.911,79,0.728,84,2.032,86,1.486,88,0.886,90,1.312,101,1.4,102,0.88,106,1.017,110,1.337,111,1.587,112,2.859,113,0.689,117,1.622,118,1.605,126,1.152,128,0.916,134,0.581,135,1.643,136,1.621,137,3.004,139,3.045,143,0.876,144,2.411,155,1.438,160,0.868,161,0.622,163,1.991,172,0.689,178,0.834,180,0.97,186,0.852,189,1.635,191,1.114,196,0.678,214,2.14,224,0.799,231,1.105,236,0.691,247,3.377,249,0.845,251,0.788,252,3.31,263,1.912,264,3.071,268,1.003,277,0.796,292,1.572,296,3.011,300,1.075,301,1.618,308,1.99,313,0.983,316,0.776,319,1.652,335,1.679,340,0.97,349,0.852,354,2.36,355,1.04,356,0.856,357,2.76,361,1.341,375,1.04,386,0.897,401,1.803,402,0.889,429,1.085,440,2.523,446,0.811,465,1.229,476,2.284,487,1.277,514,1.033,517,0.942,518,1.993,520,1.128,525,0.721,545,1.085,547,1.256,552,2.545,556,1.749,577,2.332,580,0.931,586,0.947,624,2.806,665,2.055,670,0.86,672,2.625,673,3.091,679,0.646,680,0.815,681,1.075,686,1.137,698,2.569,723,0.62,744,1.095,745,0.793,752,0.818,767,1.128,841,1.024,867,1.057,889,0.964,893,1.891,938,2.183,939,1.443,943,1.066,945,1.443,946,1.443,947,1.246,948,1.339,951,2.414,967,0.996,1066,1.572,1076,0.758,1077,1.246,1150,0.86,1174,1.057,1253,3.514,1255,0.68,1289,1.312,1291,1.18,1400,0.86,1403,1.105,1416,0.983,1421,1.116,1533,1.166,1557,1.339,1558,1.652,1610,1.017,1611,1.085,1612,1.688,1650,1.152,1708,1.095,1754,1.152,1786,1.698,1818,1.14,1855,3.119,1942,1.796,1962,3.119,2042,1.075,2063,1.166,2066,1.403,2097,1.228,2137,1.116,2138,1.14,2152,1.403,2161,2.531,2310,1.211,2311,2.531,2313,2.366,2372,2.154,2373,1.266,2374,1.211,2375,2.366,2377,1.403,2378,1.552,2379,1.312,2380,2.799,2381,1.552,2382,1.552,2383,1.552,2384,1.552,2385,1.552,2386,1.552,2387,2.154,2388,1.552,2389,1.552,2390,1.552,2391,1.312,2392,1.552,2393,1.552,2394,1.552,2395,1.552,2396,1.552,2397,1.552]],["component/214",[7,0.401]],["title/215-1",[264,19.605,296,23.851,673,28.61,743,32.738]],["name/215-1",[]],["text/215-1",[]],["component/215-1",[]],["title/215-2",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/215-2",[]],["text/215-2",[]],["component/215-2",[]],["title/215-3",[136,15.007,144,24.886,319,24.098,401,26.302]],["name/215-3",[]],["text/215-3",[]],["component/215-3",[]],["title/215-4",[679,26.447,754,28.6,2306,48.309]],["name/215-4",[]],["text/215-4",[]],["component/215-4",[]],["title/215-5",[678,44.313,1291,56.153]],["name/215-5",[]],["text/215-5",[]],["component/215-5",[]],["title/215-6",[139,23.708,319,27.465,1005,22.733]],["name/215-6",[]],["text/215-6",[]],["component/215-6",[]],["title/215-7",[120,38.779,319,27.465,949,40.503]],["name/215-7",[]],["text/215-7",[]],["component/215-7",[]],["title/215-8",[0,33.757,139,23.708,1066,35.699]],["name/215-8",[]],["text/215-8",[]],["component/215-8",[]],["title/215-9",[136,15.007,139,20.802,319,24.098,1005,19.947]],["name/215-9",[]],["text/215-9",[]],["component/215-9",[]],["title/215-10",[40,19.348,871,38.977,1431,31.324,2398,43.502]],["name/215-10",[]],["text/215-10",[]],["component/215-10",[]],["title/215-11",[136,12.052,249,24.386,452,32.208,1005,16.019,1403,31.893,1483,21.255]],["name/215-11",[]],["text/215-11",[]],["component/215-11",[]],["title/215",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2060,30.503]],["name/215",[2399,2.348]],["text/215",[0,0.405,5,0.329,7,0.197,8,1.727,10,0.856,13,1.382,14,0.898,15,1.414,17,1.724,18,0.677,20,1.208,23,0.681,26,0.322,29,0.834,30,0.345,32,1.699,34,0.344,35,2.471,36,0.661,37,0.469,40,0.265,45,0.357,52,0.369,54,0.435,56,0.379,63,0.5,68,0.466,77,0.448,79,0.679,84,2.075,88,0.242,93,0.448,94,0.469,95,0.971,96,1.014,101,0.725,102,0.822,103,0.588,112,1.918,113,0.918,115,0.86,118,0.497,120,1.605,125,1.506,126,0.567,128,0.451,129,0.369,134,0.543,135,0.889,136,2.125,137,2.396,139,3.111,143,0.431,144,1.174,146,0.796,154,0.39,155,0.989,160,0.81,161,0.306,163,0.398,166,0.474,171,0.375,178,0.41,180,0.477,189,0.846,190,0.474,192,1.094,195,0.923,196,1.765,214,0.819,224,1.354,228,0.402,239,0.71,243,0.48,247,4.23,248,0.398,249,1.126,251,1.335,252,1.237,255,0.458,263,1.316,264,2.526,272,0.437,275,0.395,278,0.471,282,0.469,283,1.262,286,0.455,292,0.429,296,2.582,297,0.439,301,0.876,308,1.119,317,0.544,319,2.72,324,0.567,333,0.466,340,0.477,341,0.458,351,0.355,354,0.471,374,0.573,375,0.512,377,0.416,391,0.404,398,1.101,401,0.683,402,1.197,421,0.431,424,1.931,431,0.463,440,0.957,441,0.483,443,0.803,446,1.081,451,0.761,452,1.042,455,0.395,459,0.49,465,0.335,468,1.302,470,0.353,487,0.944,492,1.473,505,0.5,508,0.461,514,1.639,517,1.255,520,0.555,523,0.471,525,0.355,531,0.733,547,0.65,549,1.081,552,1.111,577,0.466,586,0.466,597,0.446,603,0.48,604,0.435,615,0.834,617,0.439,620,1.255,665,1.112,668,0.41,670,1.146,673,2.278,678,0.869,679,1.503,680,1.086,684,1.381,686,1.804,690,0.483,705,0.534,743,1.544,744,0.539,754,2.459,755,0.613,773,0.512,783,0.596,841,0.504,854,1.409,865,1.141,871,1.838,873,0.516,894,0.52,909,0.549,910,0.48,918,1.115,931,1.088,932,1.806,933,1.397,934,2.564,936,2.081,938,0.596,940,1.31,942,0.69,947,2.112,948,0.659,949,3.063,951,0.659,958,0.673,959,0.71,963,0.41,966,0.52,967,0.93,970,1.022,974,0.659,975,1.25,982,0.995,984,0.493,993,0.448,998,1.064,1005,2.824,1010,1.032,1017,1.022,1025,0.659,1033,0.549,1040,0.874,1056,1.182,1066,1.765,1076,1.285,1078,0.493,1086,0.673,1096,0.573,1112,1.146,1125,0.516,1126,0.549,1136,0.5,1138,1.042,1146,1.182,1252,0.659,1253,1.711,1277,1.553,1290,0.71,1291,1.101,1400,2.001,1403,1.032,1416,0.483,1431,2.7,1456,0.345,1473,0.995,1483,0.688,1499,1.053,1518,0.659,1520,0.516,1521,0.659,1531,0.659,1558,1.221,1559,1.022,1561,0.58,1578,0.588,1591,1.386,1597,0.71,1610,0.95,1611,1.013,1612,1.587,1631,1.203,1708,0.539,1772,0.58,1786,0.463,1818,1.519,1819,0.529,1849,0.613,1942,1.688,1945,1.763,1955,0.71,1969,0.659,1973,0.673,2054,0.469,2056,0.539,2060,4.111,2083,0.613,2109,0.596,2116,0.623,2118,0.645,2119,0.567,2137,0.549,2169,0.645,2194,1.088,2230,0.645,2258,0.69,2286,0.734,2296,0.561,2299,1.31,2301,1.13,2306,1.999,2309,0.555,2329,1.164,2352,0.588,2365,0.69,2372,0.588,2373,1.182,2377,0.69,2387,2.78,2391,0.645,2398,1.13,2400,0.763,2401,1.348,2402,0.763,2403,0.69,2404,0.763,2405,1.449,2406,0.645,2407,0.645,2408,1.25,2409,0.71,2410,0.763,2411,0.645,2412,1.182,2413,0.623,2414,0.69,2415,1.225,2416,0.763,2417,1.636,2418,1.182,2419,1.115,2420,0.763,2421,0.645,2422,2.543,2423,0.623,2424,0.69,2425,0.69,2426,0.69,2427,0.763,2428,0.763,2429,0.71,2430,0.763,2431,0.645,2432,0.645,2433,0.69,2434,0.69,2435,0.763,2436,0.763,2437,0.763,2438,0.69,2439,0.71,2440,1.449,2441,0.763,2442,0.763,2443,0.673,2444,0.69,2445,0.673,2446,0.763,2447,0.69,2448,0.596,2449,0.763,2450,0.763,2451,0.763,2452,1.278,2453,0.763,2454,0.763,2455,0.613,2456,0.763,2457,0.659,2458,0.763,2459,0.763,2460,0.763]],["component/215",[7,0.401]],["title/216-1",[136,13.368,139,18.53,308,21.139,552,20.98,1066,27.903]],["name/216-1",[]],["text/216-1",[]],["component/216-1",[]],["title/216-2",[136,17.103,144,28.362,401,29.976]],["name/216-2",[]],["text/216-2",[]],["component/216-2",[]],["title/216-3",[296,31.597,3225,71]],["name/216-3",[]],["text/216-3",[]],["component/216-3",[]],["title/216-4",[308,31.436,465,32.434]],["name/216-4",[]],["text/216-4",[]],["component/216-4",[]],["title/216-5",[3129,58.657]],["name/216-5",[]],["text/216-5",[]],["component/216-5",[]],["title/216-6",[96,31.151,754,28.6,3226,61.082]],["name/216-6",[]],["text/216-6",[]],["component/216-6",[]],["title/216-7",[1483,35.06,3227,71]],["name/216-7",[]],["text/216-7",[]],["component/216-7",[]],["title/216-8",[45,26.062,319,24.098,1448,44.118,2292,45.501]],["name/216-8",[]],["text/216-8",[]],["component/216-8",[]],["title/216-9",[402,17.184,1076,36.09]],["name/216-9",[]],["text/216-9",[]],["component/216-9",[]],["title/216-10",[402,10.417,452,32.208,547,20.098,1483,21.255,1612,27.015,1631,37.173]],["name/216-10",[]],["text/216-10",[]],["component/216-10",[]],["title/216-11",[1610,41.527,1611,28.498,1612,38.229,2306,30.991,3228,32.742]],["name/216-11",[]],["text/216-11",[]],["component/216-11",[]],["title/216",[7,11.544,113,19.877,158,24.491,191,17.823,552,18.915,2292,36.543]],["name/216",[3229,2.471]],["text/216",[5,0.505,7,0.302,8,1.271,13,0.401,17,0.5,19,1.886,24,0.655,26,2.098,29,1.218,31,0.661,32,0.91,45,0.548,54,0.668,68,0.715,71,1.643,77,0.688,79,0.549,84,1.585,86,1.996,88,0.685,92,0.732,94,1.329,95,0.785,96,2.16,105,0.94,112,1.783,117,1.281,118,1.512,121,0.677,122,0.805,125,0.561,128,0.691,134,1.65,136,1.6,139,1.857,142,0.646,144,1.966,146,2.064,148,0.407,155,2.391,158,0.641,161,0.469,163,1.128,165,0.798,178,1.164,180,0.732,189,1.264,191,1.201,195,0.747,196,0.512,214,1.196,224,0.603,247,4.417,248,1.572,251,1.531,252,1.419,263,1.88,264,2.09,267,0.695,268,1.399,275,1.119,277,0.601,279,0.554,280,0.551,282,0.719,286,1.292,292,0.658,296,1.607,301,1.278,308,2.863,316,1.083,319,2.152,349,1.189,350,0.668,354,1.863,357,1.278,361,1.037,377,1.643,401,0.553,402,1.478,404,0.972,406,0.41,421,0.661,440,1.429,443,0.649,446,1.132,447,1.126,452,2.703,455,2.278,465,3.103,470,0.541,487,0.535,502,1.741,505,0.768,513,0.972,517,0.711,520,0.851,523,0.723,525,0.544,547,1.354,549,0.613,552,1.861,567,1.557,580,0.703,586,0.715,644,0.991,665,0.63,670,0.649,673,2.554,675,3.42,677,0.752,679,2.8,680,0.615,682,0.635,684,1.136,690,0.742,697,1.313,698,1.189,712,0.768,723,0.865,727,1.033,731,1.739,735,0.792,740,2.462,741,1.936,742,0.843,744,2.129,745,1.107,754,1.691,772,0.732,774,0.812,775,0.914,790,0.671,850,0.851,859,0.742,865,1.194,867,0.798,889,0.728,900,0.785,918,0.902,919,1.033,936,0.927,963,0.63,966,0.798,967,0.752,970,2.129,972,1.155,982,1.487,984,1.95,985,1.38,1005,1.079,1008,0.668,1040,1.306,1064,2.24,1066,1.695,1076,1.474,1078,1.399,1089,0.86,1125,0.792,1136,0.768,1144,0.902,1174,0.798,1255,0.513,1287,0.779,1400,1.2,1448,0.927,1457,0.533,1483,2.605,1610,2.887,1611,2.109,1612,3.834,1622,0.914,1631,2.505,1682,0.927,1708,0.826,1730,2.423,1752,1.09,1754,0.87,1783,0.914,1786,0.711,1843,0.991,1942,1.389,1945,0.785,1974,1.059,2042,0.812,2054,0.719,2056,0.826,2060,1.475,2108,0.956,2132,1.011,2137,1.557,2194,1.626,2230,0.991,2292,3.595,2296,0.86,2306,0.891,2401,1.09,2412,0.956,2413,1.766,2417,1.713,2418,1.766,2419,1.667,2421,0.991,2422,1.362,2423,0.956,2445,1.91,2457,1.011,2469,1.172,2493,1.033,2512,1.09,2586,0.914,2713,1.09,3129,3.954,3225,1.126,3226,1.126,3227,1.126,3228,1.739,3230,1.233,3231,1.233,3232,1.233,3233,1.233,3234,1.011,3235,1.233,3236,1.233,3237,2.278,3238,1.126,3239,1.233,3240,1.233,3241,1.233,3242,1.233,3243,1.233,3244,1.126,3245,1.233,3246,1.126,3247,1.126,3248,1.233,3249,1.233,3250,1.233,3251,1.233,3252,1.233,3253,1.233,3254,1.233,3255,1.233,3256,1.233,3257,0.972,3258,1.059,3259,1.233,3260,1.126]],["component/216",[7,0.401]],["title/217-1",[236,39.251]],["name/217-1",[]],["text/217-1",[]],["component/217-1",[]],["title/217-2",[96,36.21,679,30.741]],["name/217-2",[]],["text/217-2",[]],["component/217-2",[]],["title/217-3",[679,30.741,949,47.08]],["name/217-3",[]],["text/217-3",[]],["component/217-3",[]],["title/217-4",[32,18.821,79,20.995,84,12.931,421,25.274,455,23.149,917,34.042]],["name/217-4",[]],["text/217-4",[]],["component/217-4",[]],["title/217-5",[351,40.973]],["name/217-5",[]],["text/217-5",[]],["component/217-5",[]],["title/217-6",[980,68.801]],["name/217-6",[]],["text/217-6",[]],["component/217-6",[]],["title/217-7",[36,33.721,1005,26.424]],["name/217-7",[]],["text/217-7",[]],["component/217-7",[]],["title/217-8",[79,29.71,406,14.253,478,31.806,920,32.257,921,32.742,922,34.473]],["name/217-8",[]],["text/217-8",[]],["component/217-8",[]],["title/217-9",[155,18.684,183,20.773,308,21.139,465,21.81,593,24.597]],["name/217-9",[]],["text/217-9",[]],["component/217-9",[]],["title/217-10",[52,35.736,1137,55.481]],["name/217-10",[]],["text/217-10",[]],["component/217-10",[]],["title/217-11",[29,25.643,287,46.666,679,26.447]],["name/217-11",[]],["text/217-11",[]],["component/217-11",[]],["title/217-12",[754,39.689]],["name/217-12",[]],["text/217-12",[]],["component/217-12",[]],["title/217-13",[3244,84.764]],["name/217-13",[]],["text/217-13",[]],["component/217-13",[]],["title/217-14",[2352,67.892]],["name/217-14",[]],["text/217-14",[]],["component/217-14",[]],["title/217-15",[96,43.229]],["name/217-15",[]],["text/217-15",[]],["component/217-15",[]],["title/217-16",[3261,92.783]],["name/217-16",[]],["text/217-16",[]],["component/217-16",[]],["title/217-17",[3262,92.783]],["name/217-17",[]],["text/217-17",[]],["component/217-17",[]],["title/217-18",[96,43.229]],["name/217-18",[]],["text/217-18",[]],["component/217-18",[]],["title/217-19",[2411,74.57]],["name/217-19",[]],["text/217-19",[]],["component/217-19",[]],["title/217-20",[96,43.229]],["name/217-20",[]],["text/217-20",[]],["component/217-20",[]],["title/217-21",[2412,71.964]],["name/217-21",[]],["text/217-21",[]],["component/217-21",[]],["title/217-22",[96,43.229]],["name/217-22",[]],["text/217-22",[]],["component/217-22",[]],["title/217-23",[2461,84.764]],["name/217-23",[]],["text/217-23",[]],["component/217-23",[]],["title/217-24",[96,43.229]],["name/217-24",[]],["text/217-24",[]],["component/217-24",[]],["title/217-25",[2413,71.964]],["name/217-25",[]],["text/217-25",[]],["component/217-25",[]],["title/217-26",[3129,58.657]],["name/217-26",[]],["text/217-26",[]],["component/217-26",[]],["title/217-27",[86,46.845]],["name/217-27",[]],["text/217-27",[]],["component/217-27",[]],["title/217-28",[96,43.229]],["name/217-28",[]],["text/217-28",[]],["component/217-28",[]],["title/217-29",[0,23.788,86,23.788,308,19.058,597,26.157,2373,36.543,3129,29.786]],["name/217-29",[]],["text/217-29",[]],["component/217-29",[]],["title/217-30",[2414,79.747]],["name/217-30",[]],["text/217-30",[]],["component/217-30",[]],["title/217-31",[96,43.229]],["name/217-31",[]],["text/217-31",[]],["component/217-31",[]],["title/217-32",[3263,92.783]],["name/217-32",[]],["text/217-32",[]],["component/217-32",[]],["title/217-33",[96,43.229]],["name/217-33",[]],["text/217-33",[]],["component/217-33",[]],["title/217",[26,31.122,679,30.741]],["name/217",[26,0.554,679,0.547]],["text/217",[0,0.1,2,0.113,3,0.08,4,0.217,5,1.673,7,0.048,8,1.718,10,0.505,14,0.082,15,0.48,17,1.781,18,0.257,19,0.344,20,0.11,22,0.308,23,0.175,24,0.592,26,0.947,29,1.566,30,0.248,31,0.597,32,1.055,34,0.326,35,0.403,36,0.899,37,0.337,38,0.315,40,0.251,42,0.17,45,0.257,52,1.215,54,0.107,56,0.184,57,0.977,63,0.585,68,0.335,71,0.915,76,0.348,79,1.866,82,0.257,84,2.699,86,1.72,88,0.875,90,0.419,91,0.112,92,1.142,96,1.902,97,0.374,98,0.124,99,1.904,101,3.637,104,0.097,105,0.314,106,0.243,108,0.134,110,0.803,111,0.211,112,0.502,113,0.47,115,0.22,117,0.836,118,1.032,120,0.744,121,0.318,122,0.497,123,0.515,124,0.286,125,0.876,127,0.124,128,0.111,129,0.18,130,0.117,133,0.452,134,1.035,135,0.524,136,0.53,138,0.567,139,2.179,141,0.138,142,0.205,143,0.949,144,0.399,145,0.249,146,0.204,148,0.478,154,0.096,155,1.302,160,0.499,161,0.29,162,0.138,163,2.021,165,0.938,166,0.856,168,0.198,169,0.22,170,0.558,171,0.753,172,0.746,179,0.262,180,0.344,183,0.94,186,0.302,188,0.115,189,0.321,190,0.658,191,0.421,192,0.196,194,0.125,196,0.922,199,0.228,200,0.253,201,0.399,203,0.228,206,0.138,209,0.134,211,0.198,214,0.354,224,0.46,225,0.279,226,0.363,228,0.099,231,0.134,238,0.413,239,2.182,243,0.346,245,0.134,246,0.162,248,0.465,249,0.299,250,0.135,251,0.619,252,0.574,254,0.624,255,2.504,262,0.33,263,2.483,264,0.429,266,0.145,267,0.326,272,0.414,275,0.869,277,1.831,278,0.229,279,0.342,280,0.859,282,0.115,283,0.545,285,0.29,286,0.533,287,1.124,289,0.29,292,0.502,293,0.238,296,0.382,297,1.445,301,2.067,304,0.276,308,0.956,309,0.166,311,0.204,313,0.119,315,0.253,316,0.447,317,0.134,319,1.141,320,0.328,322,0.769,330,0.127,331,0.995,332,0.153,333,0.115,335,0.113,340,0.118,341,0.223,347,0.581,348,0.489,349,0.302,350,0.603,351,1.658,352,0.663,353,0.166,355,0.126,356,0.205,357,0.219,361,0.178,377,0.486,386,0.109,391,0.291,394,0.124,395,0.585,398,0.55,401,0.421,403,0.276,404,0.156,406,0.785,408,0.103,411,0.149,415,0.13,420,0.137,421,1.112,424,0.138,430,0.264,431,0.114,432,5.091,434,0.175,439,0.427,440,0.805,441,0.969,442,0.138,443,0.305,445,0.122,446,0.378,450,0.129,451,0.195,455,3.915,458,1.865,465,1.045,467,0.175,468,0.976,470,0.844,474,0.754,481,0.175,482,0.344,484,0.253,487,0.086,502,0.846,505,0.123,508,1.273,509,0.468,514,1.61,517,0.334,518,0.754,521,0.374,523,0.552,525,0.415,528,0.218,531,0.617,536,0.29,547,0.247,549,0.879,552,0.447,553,0.118,556,0.232,557,0.113,570,0.548,575,0.395,577,0.646,580,1.008,581,0.565,583,1.233,586,0.442,593,0.682,596,0.243,597,0.321,598,0.166,599,0.162,601,0.147,603,0.118,604,0.212,615,0.214,617,0.881,619,0.501,621,0.671,624,0.138,625,0.153,630,0.866,652,0.771,663,0.129,665,1.135,668,0.296,670,1.462,672,0.129,673,0.371,675,1.899,676,0.255,679,1.201,682,0.102,683,0.104,684,1.929,686,0.683,689,0.388,690,0.458,696,0.153,697,0.642,698,0.302,708,0.105,711,0.35,712,1.101,717,0.413,719,0.615,723,0.672,726,0.67,730,0.141,731,0.151,732,0.249,733,0.506,735,0.127,736,1.319,741,0.121,742,0.135,744,0.388,745,1.537,752,1.707,754,2.044,760,0.133,762,1.164,763,0.145,764,1.101,766,0.253,767,0.137,771,0.303,772,0.344,773,0.249,774,1.915,775,2.252,779,0.35,783,0.147,786,0.401,788,0.115,790,0.962,827,0.106,833,0.286,834,0.134,835,0.207,841,0.124,844,0.162,854,0.253,859,0.566,861,0.112,865,0.493,867,0.493,871,0.74,873,0.371,889,0.117,893,0.127,894,0.608,896,0.699,897,0.328,900,1.026,904,0.147,907,0.663,908,0.175,909,0.267,910,0.118,913,0.303,917,0.55,918,1.294,920,0.573,921,0.441,924,0.149,925,0.149,926,0.153,927,0.147,928,0.303,929,0.143,930,0.14,931,0.141,932,0.613,933,0.127,934,0.303,936,0.435,938,0.147,943,0.497,949,1.345,950,0.308,955,0.345,956,0.175,960,0.175,961,1.234,962,0.59,963,0.296,964,0.573,965,0.831,966,0.253,967,0.783,968,0.104,969,0.175,970,0.262,971,0.175,972,0.198,973,0.557,974,0.32,975,0.771,976,0.581,977,0.175,978,0.166,979,0.175,981,0.153,982,0.129,983,0.141,984,0.577,985,0.237,987,0.985,988,0.175,989,0.32,990,0.151,991,0.153,993,0.11,994,0.162,995,0.162,996,0.162,997,0.162,998,0.404,999,0.162,1000,0.162,1001,0.147,1002,0.162,1003,0.162,1004,0.133,1005,0.548,1006,1.45,1007,0.162,1008,1.041,1009,0.162,1010,0.515,1011,0.147,1012,0.145,1013,0.147,1014,0.32,1015,0.435,1017,0.51,1018,0.162,1019,0.153,1020,0.345,1021,0.32,1022,0.707,1023,0.345,1024,0.294,1025,0.162,1026,0.175,1027,0.175,1028,0.175,1029,0.175,1031,0.14,1032,0.175,1033,1.101,1034,0.511,1035,0.175,1036,0.175,1037,0.175,1038,0.175,1039,0.175,1040,0.113,1041,0.175,1042,0.175,1043,0.175,1044,0.175,1045,0.162,1046,0.166,1047,0.995,1048,1.106,1049,0.156,1051,0.175,1052,0.175,1053,0.506,1054,0.175,1055,0.175,1056,0.153,1059,0.175,1061,0.162,1062,0.135,1063,0.32,1064,0.14,1066,1.262,1068,0.267,1069,0.175,1070,0.17,1071,0.175,1072,0.175,1073,0.151,1074,0.153,1075,0.112,1076,0.181,1077,0.298,1078,0.24,1079,0.717,1080,0.175,1082,0.153,1083,0.282,1087,0.14,1088,0.32,1089,0.273,1090,0.381,1091,0.112,1092,0.125,1093,0.328,1094,0.328,1095,0.308,1098,0.166,1103,0.328,1105,0.166,1106,0.298,1107,0.206,1108,0.27,1109,0.135,1110,0.13,1111,0.166,1112,0.149,1113,0.181,1126,0.135,1127,0.14,1134,0.282,1137,0.141,1141,0.282,1146,0.153,1150,0.206,1155,0.279,1158,0.14,1166,0.153,1168,0.145,1195,0.116,1196,0.308,1211,0.251,1219,0.619,1249,0.153,1250,0.141,1253,0.122,1258,0.166,1280,0.159,1285,0.282,1288,0.345,1291,0.143,1293,0.17,1295,0.147,1308,0.145,1312,0.181,1361,0.456,1389,0.456,1400,0.305,1416,0.458,1417,0.166,1447,0.32,1451,0.153,1477,0.108,1483,1.253,1508,0.418,1513,0.138,1515,0.147,1519,0.298,1520,0.251,1529,0.151,1533,0.279,1647,0.13,1650,0.408,1682,0.149,1730,0.85,1750,0.147,1783,0.29,1880,0.303,1946,0.308,1947,0.156,1948,0.159,1950,0.273,1961,0.159,1970,0.166,1981,0.166,1982,0.166,1983,0.166,1984,0.166,1986,0.166,1987,0.485,1988,0.166,1989,0.485,1990,0.166,1991,0.485,1992,0.159,1993,0.485,1994,0.166,1995,0.456,1996,0.151,1997,0.181,1998,0.181,1999,0.166,2003,0.159,2007,0.17,2016,0.133,2042,0.381,2045,0.147,2054,0.115,2056,0.51,2060,0.374,2071,0.17,2093,1.052,2094,0.17,2108,0.449,2112,0.336,2119,0.14,2137,0.395,2138,1.234,2164,0.162,2173,0.32,2177,0.19,2194,0.543,2229,0.181,2230,0.159,2237,2.271,2240,0.147,2256,1.031,2296,0.273,2304,1.612,2308,0.336,2309,0.27,2310,0.29,2328,0.17,2329,0.98,2348,0.151,2352,0.423,2372,0.145,2375,0.159,2387,0.145,2391,0.159,2403,0.17,2411,0.159,2412,0.303,2413,0.303,2415,0.314,2417,0.294,2418,0.153,2419,0.145,2421,0.159,2422,0.234,2423,0.303,2424,0.336,2425,0.336,2426,0.17,2431,0.465,2432,0.314,2433,0.17,2434,0.336,2438,0.17,2439,0.175,2448,0.147,2452,0.166,2457,0.32,2463,0.724,2464,0.336,2465,0.336,2468,0.156,2472,0.371,2473,0.371,2474,0.188,2475,0.371,2476,0.188,2477,0.143,2478,0.32,2479,0.159,2480,0.371,2481,0.188,2482,0.188,2483,0.188,2484,0.17,2485,0.175,2486,0.188,2487,0.188,2488,0.336,2489,0.17,2491,0.188,2492,0.188,2493,0.166,2494,0.345,2495,0.32,2496,0.371,2497,0.188,2498,0.188,2499,0.188,2500,0.188,2501,0.17,2502,0.17,2503,0.159,2504,0.188,2505,0.188,2506,0.188,2507,0.17,2508,0.371,2509,0.371,2510,0.371,2511,1.52,2512,1.281,2513,0.371,2514,0.336,2515,0.371,2516,0.188,2517,0.371,2518,0.17,2519,0.188,2520,0.188,2521,0.188,2522,0.188,2523,0.55,2524,0.724,2525,0.188,2526,0.188,2527,0.188,2528,0.336,2529,0.188,2530,0.188,2531,0.55,2532,0.188,2533,0.55,2534,0.371,2535,0.188,2536,0.188,2537,0.188,2538,0.188,2539,0.371,2540,1.22,2541,0.188,2542,0.188,2543,0.188,2544,0.188,2545,0.345,2546,0.188,2547,0.188,2548,0.175,2549,0.188,2550,0.188,2551,0.188,2552,0.159,2553,0.188,2554,0.188,2555,0.188,2556,0.188,2557,0.188,2558,0.17,2559,0.175,2560,0.188,2561,0.371,2562,0.153,2563,0.345,2564,0.188,2565,0.724,2566,1.755,2567,1.531,2568,0.55,2569,0.893,2570,0.188,2571,0.188,2572,0.345,2573,0.188,2574,0.957,2575,0.188,2577,0.188,2578,0.188,2579,0.188,2580,0.17,2583,0.371,2584,0.371,2585,0.188,2587,0.156,2588,0.166,2589,0.17,2590,0.188,2591,0.371,2592,0.345,2593,0.175,2594,0.371,2595,0.17,2596,0.175,2597,0.188,2598,0.17,2599,0.188,2600,0.188,2601,0.188,2602,0.188,2603,0.188,2604,0.188,2605,0.188,2606,0.188,2607,0.188,2608,0.188,2609,0.188,2610,0.328,2611,0.371,2612,0.188,2613,0.159,2614,0.188,2615,0.188,2616,0.188,2617,0.188,2619,0.257,2621,0.166,2622,0.188,2663,0.162,2673,0.149,2788,0.175,2803,0.175,2874,0.175,3043,0.279,3129,1.755,3135,1.229,3206,0.156,3208,1.172,3210,0.181,3246,0.181,3264,0.391,3265,0.181,3266,0.181,3267,0.198,3268,0.198,3269,0.198,3270,0.198,3271,0.391,3272,0.391,3273,0.198,3274,0.198,3275,0.198,3276,0.198,3277,0.198,3278,0.391,3279,0.391,3280,1.114,3281,0.578,3282,0.578,3283,0.578,3284,0.198,3285,0.391,3286,0.391,3287,0.162,3288,0.391,3289,0.198,3290,0.391,3291,0.198,3292,0.761,3293,0.391,3294,0.198,3295,0.198,3296,0.198,3297,0.198,3298,0.198,3299,0.198,3300,0.198,3302,0.198,3303,0.198,3304,0.198,3305,0.761,3306,0.198,3307,0.198,3308,0.198,3309,1.768,3310,0.198,3311,0.357,3312,0.391,3313,0.391,3314,0.198,3315,0.391,3316,0.198,3317,0.198,3318,0.198,3319,0.391,3320,0.391,3321,0.198,3322,0.198,3323,0.198,3324,0.198,3325,0.198,3326,0.198,3327,0.391,3328,0.198,3329,0.198,3330,0.198,3331,0.198,3332,0.198,3333,0.198,3334,0.391,3335,0.198,3336,0.198,3337,0.198,3338,0.198,3339,0.198,3340,0.198,3341,0.198,3342,0.198,3343,0.578,3344,0.198,3345,0.198,3346,0.198,3347,0.198,3348,0.198,3349,0.391,3350,0.198,3351,0.198,3352,0.198,3353,0.198,3354,0.391,3739,0.213,3740,0.213,3741,0.213]],["component/217",[7,0.401]],["title/218-1",[923,82.026]],["name/218-1",[]],["text/218-1",[]],["component/218-1",[]],["title/218",[136,17.103,144,28.362,401,29.976]],["name/218",[631,1.45]],["text/218",[6,3.272,7,1.085,8,2.024,13,1.438,18,1.966,24,2.352,26,2.736,34,2.922,71,2.291,105,1.828,113,1.867,118,1.444,129,2.035,134,2.97,136,1.748,144,3.539,145,2.82,168,2.244,214,1.667,252,1.978,263,2.105,275,2.175,300,2.915,401,3.063,402,1.845,415,2.915,470,2.999,514,2.398,523,2.598,552,1.777,597,2.457,676,2.89,679,4.866,686,1.709,688,3.433,705,2.941,790,2.409,835,2.342,924,3.329,925,3.329,926,3.433,927,3.282,928,3.433,929,3.198,930,3.124,931,3.16,966,2.866,968,2.321,984,4.195,1031,3.124,1040,2.538,1116,3.913,1117,3.913,1118,5.728,1119,3.63,1120,3.913,1121,3.913,1122,3.239,1123,3.089,1124,3.913,1125,2.842,1126,3.026,1127,3.124,1136,4.255,1310,3.282,1483,1.997,1950,3.089,2018,3.026,2329,3.379,2406,3.557,2407,3.557,2623,4.207]],["component/218",[7,0.401]],["title/219-1",[86,33.757,343,46.175,1008,36.208]],["name/219-1",[]],["text/219-1",[]],["component/219-1",[]],["title/219-2",[236,39.251]],["name/219-2",[]],["text/219-2",[]],["component/219-2",[]],["title/219-3",[331,40.225,341,44.313]],["name/219-3",[]],["text/219-3",[]],["component/219-3",[]],["title/219-4",[3355,79.747]],["name/219-4",[]],["text/219-4",[]],["component/219-4",[]],["title/219-5",[3356,84.764]],["name/219-5",[]],["text/219-5",[]],["component/219-5",[]],["title/219-6",[3357,79.747]],["name/219-6",[]],["text/219-6",[]],["component/219-6",[]],["title/219-7",[3358,79.747]],["name/219-7",[]],["text/219-7",[]],["component/219-7",[]],["title/219-8",[3359,79.747]],["name/219-8",[]],["text/219-8",[]],["component/219-8",[]],["title/219-9",[3360,84.764]],["name/219-9",[]],["text/219-9",[]],["component/219-9",[]],["title/219-10",[3361,76.088]],["name/219-10",[]],["text/219-10",[]],["component/219-10",[]],["title/219-11",[191,29.399,3361,63.732]],["name/219-11",[]],["text/219-11",[]],["component/219-11",[]],["title/219-12",[3362,84.764]],["name/219-12",[]],["text/219-12",[]],["component/219-12",[]],["title/219-13",[3363,79.747]],["name/219-13",[]],["text/219-13",[]],["component/219-13",[]],["title/219-14",[3364,79.747]],["name/219-14",[]],["text/219-14",[]],["component/219-14",[]],["title/219-15",[301,31.278,3365,71]],["name/219-15",[]],["text/219-15",[]],["component/219-15",[]],["title/219-16",[191,29.399,3363,66.798]],["name/219-16",[]],["text/219-16",[]],["component/219-16",[]],["title/219-17",[1554,62.461,3366,71]],["name/219-17",[]],["text/219-17",[]],["component/219-17",[]],["title/219",[86,29.619,155,20.975,465,24.483,1008,31.77]],["name/219",[1008,1.338]],["text/219",[0,0.365,4,1.939,7,0.742,8,1.138,12,1.01,13,0.235,15,0.369,17,3.841,23,0.323,24,0.733,26,3.408,29,0.529,31,1.624,33,0.994,34,0.309,40,0.238,63,0.45,71,0.713,76,1.189,84,1.84,86,1.274,90,0.322,101,3.396,104,0.675,105,2.67,110,0.328,111,0.389,113,1.065,117,0.797,118,1.642,121,1.086,125,1.967,129,2.464,130,0.814,133,0.429,134,0.257,138,0.873,139,0.701,143,2.702,144,0.306,145,0.46,148,0.652,150,0.3,154,0.351,155,1.402,160,0.733,161,0.275,167,0.581,168,0.699,172,0.582,183,0.287,189,1.401,191,2.702,192,0.693,195,0.438,199,0.421,206,1.762,214,0.519,215,2.091,224,0.675,248,1.25,249,0.374,251,0.348,255,0.412,262,1.127,263,0.344,264,1.31,265,1.302,272,0.393,277,5.234,278,0.424,283,0.799,286,2.66,292,0.386,296,0.294,301,2.956,308,1.412,311,0.72,317,0.489,319,1.434,322,2.708,331,0.374,335,0.412,341,0.412,348,0.464,350,0.746,351,2.626,357,1.416,361,1.59,375,0.46,377,1.306,386,0.758,391,1.522,396,0.621,401,0.618,402,0.772,403,0.51,405,0.621,406,1.559,420,0.499,441,0.435,442,0.504,443,0.726,445,0.444,460,0.305,465,1.264,470,1.533,475,1.699,484,0.468,492,1.338,510,1.259,514,0.484,523,0.809,525,0.319,528,0.769,531,0.662,547,1.077,549,0.685,577,0.799,580,0.412,596,0.45,597,0.401,617,0.395,621,1.411,640,0.57,665,0.704,672,0.472,675,0.472,679,1.551,697,0.795,698,0.72,733,0.916,735,3.012,744,1.325,754,0.309,768,0.996,779,0.438,785,0.606,786,2.47,841,0.865,859,1.189,861,0.407,862,0.516,865,0.379,867,0.892,890,1.859,910,0.824,943,1.648,961,1.38,963,0.369,968,0.379,970,0.924,972,1.535,978,1.156,984,0.444,985,0.438,993,1.103,1008,5.778,1010,0.933,1011,0.536,1017,0.924,1031,0.51,1047,0.56,1053,0.916,1064,0.51,1066,0.386,1076,1.406,1099,5.138,1128,0.765,1129,0.675,1132,0.903,1133,1.929,1136,0.859,1139,0.9,1145,1.153,1195,0.424,1200,0.56,1219,1.994,1279,3.408,1280,0.581,1400,1.33,1456,0.311,1477,0.395,1483,0.326,1551,0.476,1554,1.589,1609,0.432,1612,0.414,1659,0.551,1786,0.795,1796,0.606,1852,0.933,1945,1.259,1948,1.108,2054,0.804,2067,0.606,2076,0.48,2096,1.185,2097,0.543,2138,1.762,2150,0.606,2177,2.287,2249,2.232,2281,0.639,2374,0.536,2419,1.446,2452,0.606,2468,3.094,2562,1.533,2619,1.302,2621,1.156,2636,2.491,2662,0.639,2684,0.606,2685,0.606,2756,1.219,2847,0.606,2890,0.606,3043,0.516,3129,3.184,3132,1.185,3135,1.509,3206,0.57,3247,0.66,3287,0.592,3355,2.17,3356,0.66,3357,0.621,3358,0.621,3359,1.185,3360,0.66,3361,1.621,3362,0.66,3363,1.185,3364,0.621,3365,0.66,3366,0.66,3367,0.722,3368,0.722,3369,1.378,3370,2.863,3371,1.378,3372,1.378,3373,0.722,3374,0.722,3375,0.722,3376,1.259,3377,1.31,3378,1.259,3379,1.185,3380,1.806,3381,4.32,3382,0.933,3383,1.378,3384,0.722,3385,0.66,3386,0.66,3387,1.259,3388,0.66,3389,0.66,3390,0.66,3391,0.621,3392,2.766,3393,1.259,3394,0.66,3395,1.378,3396,0.66,3397,0.66,3398,1.259,3399,0.621,3400,0.621,3401,0.722,3402,1.259,3403,0.722,3404,0.722,3405,0.66,3406,1.259,3407,0.66,3408,0.66,3409,0.66,3410,0.722,3411,0.722,3412,0.722,3413,0.592]],["component/219",[7,0.401]],["title/220-1",[236,39.251]],["name/220-1",[]],["text/220-1",[]],["component/220-1",[]],["title/220-2",[88,27.909]],["name/220-2",[]],["text/220-2",[]],["component/220-2",[]],["title/220-3",[30,28.681,466,37.709,2624,47.184]],["name/220-3",[]],["text/220-3",[]],["component/220-3",[]],["title/220-4",[134,23.806,264,22.343,361,30.449]],["name/220-4",[]],["text/220-4",[]],["component/220-4",[]],["title/220-5",[134,20.888,264,19.605,361,26.717,3413,48.109]],["name/220-5",[]],["text/220-5",[]],["component/220-5",[]],["title/220-6",[134,18.607,264,17.464,361,23.8,547,22.292,3258,44.917]],["name/220-6",[]],["text/220-6",[]],["component/220-6",[]],["title/220-7",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/220-7",[]],["text/220-7",[]],["component/220-7",[]],["title/220-8",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/220-8",[]],["text/220-8",[]],["component/220-8",[]],["title/220-9",[134,16.775,264,15.745,361,21.457,401,21.124,745,22.893,2817,39.504]],["name/220-9",[]],["text/220-9",[]],["component/220-9",[]],["title/220-10",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/220-10",[]],["text/220-10",[]],["component/220-10",[]],["title/220-11",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/220-11",[]],["text/220-11",[]],["component/220-11",[]],["title/220-12",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/220-12",[]],["text/220-12",[]],["component/220-12",[]],["title/220-13",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/220-13",[]],["text/220-13",[]],["component/220-13",[]],["title/220-14",[134,23.806,466,37.709,2627,51.038]],["name/220-14",[]],["text/220-14",[]],["component/220-14",[]],["title/220-15",[26,26.774,1772,48.309,2628,57.467]],["name/220-15",[]],["text/220-15",[]],["component/220-15",[]],["title/220-16",[859,40.238,1279,40.238,2629,57.467]],["name/220-16",[]],["text/220-16",[]],["component/220-16",[]],["title/220-17",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/220-17",[]],["text/220-17",[]],["component/220-17",[]],["title/220-18",[63,48.407,1513,54.244]],["name/220-18",[]],["text/220-18",[]],["component/220-18",[]],["title/220-19",[54,42.087,2631,66.798]],["name/220-19",[]],["text/220-19",[]],["component/220-19",[]],["title/220-20",[32,31.045,2309,53.672]],["name/220-20",[]],["text/220-20",[]],["component/220-20",[]],["title/220-21",[32,26.708,745,32.486,2309,46.175]],["name/220-21",[]],["text/220-21",[]],["component/220-21",[]],["title/220-22",[183,26.577,593,31.469,1079,51.038]],["name/220-22",[]],["text/220-22",[]],["component/220-22",[]],["title/220-23",[470,34.116,1846,56.153]],["name/220-23",[]],["text/220-23",[]],["component/220-23",[]],["title/220-24",[32,37.063]],["name/220-24",[]],["text/220-24",[]],["component/220-24",[]],["title/220-25",[36,25.454,88,17.646,129,26.976,470,25.753]],["name/220-25",[]],["text/220-25",[]],["component/220-25",[]],["title/220-26",[581,57.629,2610,65.163]],["name/220-26",[]],["text/220-26",[]],["component/220-26",[]],["title/220-27",[2632,88.192]],["name/220-27",[]],["text/220-27",[]],["component/220-27",[]],["title/220-28",[36,25.454,338,42.927,470,25.753,1846,42.387]],["name/220-28",[]],["text/220-28",[]],["component/220-28",[]],["title/220-29",[88,20.111,155,23.905,1040,38.337]],["name/220-29",[]],["text/220-29",[]],["component/220-29",[]],["title/220-30",[1255,32.348,1457,33.624]],["name/220-30",[]],["text/220-30",[]],["component/220-30",[]],["title/220",[679,30.741,1136,48.407]],["name/220",[679,0.547,1136,0.862]],["text/220",[0,0.954,2,0.173,3,0.671,4,0.634,5,0.574,6,0.284,7,0.214,8,0.768,10,0.744,13,0.098,15,0.155,17,0.86,18,0.507,19,0.18,23,0.626,24,1.579,26,2.292,29,1.14,30,0.811,31,0.318,32,2.811,34,0.599,35,0.16,36,0.379,38,0.165,40,0.288,45,0.135,52,0.401,54,1.5,57,0.631,65,0.198,68,0.344,71,0.854,79,0.842,84,1.398,86,0.3,88,1.532,91,0.335,92,1.123,93,0.169,94,0.509,96,0.141,98,0.19,101,1.218,102,0.163,105,0.125,110,0.137,111,0.163,112,0.853,113,0.696,115,0.492,117,1.765,118,1.617,120,0.176,121,0.166,122,0.198,125,1.528,127,0.548,129,2.011,133,1.261,134,2.68,135,0.243,136,0.709,138,0.134,139,0.752,141,3.053,143,2.66,144,0.484,146,0.31,147,0.19,148,0.623,153,0.222,154,0.555,155,1.618,158,0.157,160,0.744,161,1.206,163,0.565,165,0.196,166,1.385,167,0.243,168,0.153,169,0.644,170,0.519,171,0.771,172,0.797,178,0.155,180,1.393,183,0.843,186,0.31,188,0.506,190,0.179,191,1.876,192,0.152,195,0.529,196,1.543,199,0.509,200,0.384,201,0.41,205,0.231,206,0.211,214,1.119,215,1.465,221,0.199,224,0.559,228,0.152,231,0.205,238,0.623,239,0.407,240,0.216,242,0.216,243,0.181,246,0.716,247,0.353,248,2.088,249,1.214,250,0.597,251,0.421,252,0.39,253,0.196,255,0.498,262,0.173,263,1.506,264,1.355,265,0.391,267,0.171,268,0.364,271,0.878,272,0.165,275,0.688,277,1.544,278,0.178,279,0.742,280,0.626,282,0.346,283,0.176,286,0.337,287,0.211,288,0.468,289,0.225,292,0.748,293,0.185,296,0.953,297,0.477,301,1.822,308,0.667,311,0.731,313,0.525,316,0.785,319,1.379,328,0.225,330,0.194,333,0.506,335,0.941,340,0.832,345,0.468,347,0.453,348,0.194,350,0.164,351,1.036,354,0.512,355,0.378,357,0.333,360,1.012,361,1.92,374,0.216,375,0.193,377,1.214,378,0.402,379,0.239,386,0.77,393,0.277,394,0.19,395,0.37,397,0.228,401,1.42,402,0.365,406,1.553,412,0.398,413,0.248,421,0.162,428,0.689,429,0.201,430,0.205,431,0.175,432,0.666,440,0.19,441,1.411,443,0.738,446,0.15,451,0.436,452,0.207,455,2.568,460,0.368,461,0.239,464,0.364,465,0.789,466,0.492,468,0.142,470,3.493,480,0.487,482,0.18,502,1.033,505,0.544,508,0.174,509,0.536,513,0.239,514,0.745,516,0.248,517,0.342,523,0.968,525,0.134,528,0.169,531,0.549,542,0.268,547,1,549,0.434,553,0.18,557,0.174,577,0.344,580,1.21,581,0.647,583,0.329,586,0.344,590,0.228,591,0.936,593,0.776,596,0.37,597,0.634,603,0.181,604,0.164,608,0.154,615,0.166,617,0.477,619,1.397,620,0.658,630,1.13,636,0.248,637,0.46,640,0.239,641,0.487,649,0.231,660,0.26,662,0.243,665,0.446,668,0.716,670,2.952,673,1.544,674,0.384,675,0.387,679,2.64,682,0.85,683,0.159,684,1.674,686,0.989,694,0.35,696,0.46,697,1.09,698,0.31,708,0.315,711,0.183,712,1.177,716,0.689,719,0.631,723,0.226,732,0.378,734,0.209,745,0.68,752,0.297,754,0.373,760,0.203,768,0.219,772,0.519,774,0.199,779,0.36,786,1.565,788,0.506,790,1.028,827,0.162,834,0.205,841,0.716,850,0.209,853,0.239,859,0.182,861,0.335,865,1.343,889,0.515,893,0.381,894,0.196,900,1.352,903,0.168,910,0.522,913,0.235,929,0.219,930,0.214,932,0.198,937,0.196,938,0.44,943,1.234,963,0.584,964,3.931,966,0.739,967,0.532,968,0.458,972,0.71,982,0.57,983,0.216,984,0.364,985,0.692,990,0.231,991,0.235,993,0.331,998,0.797,1005,0.202,1008,0.618,1017,0.939,1019,0.886,1022,1.053,1033,3.662,1040,0.803,1045,0.248,1053,0.58,1066,1.792,1074,0.235,1076,0.276,1077,0.231,1079,0.453,1082,0.235,1091,0.171,1097,1.573,1101,1.674,1108,0.41,1109,0.406,1110,0.752,1112,0.228,1125,0.194,1126,0.207,1128,0.168,1129,0.148,1130,0.529,1135,0.235,1136,3.491,1155,0.216,1169,0.41,1211,0.194,1213,0.205,1219,0.391,1255,0.247,1282,2.524,1284,0.231,1285,0.219,1287,0.191,1294,0.248,1295,0.225,1308,0.222,1310,0.225,1311,0.268,1321,0.248,1348,1.302,1356,0.254,1398,0.254,1399,1.624,1403,0.205,1416,0.182,1451,0.886,1457,0.257,1463,0.487,1477,0.477,1483,0.744,1499,0.209,1508,0.429,1513,0.797,1520,0.194,1554,0.477,1556,0.185,1609,0.181,1612,0.174,1620,0.394,1625,0.216,1640,0.205,1643,0.656,1647,0.391,1650,0.214,1681,0.26,1682,0.228,1727,0.207,1759,0.167,1772,0.825,1779,0.216,1784,0.243,1786,0.175,1846,3.27,1852,0.402,1942,0.696,1945,0.193,1950,0.414,1963,1.55,1992,0.477,1995,0.239,2003,0.243,2009,0.254,2016,0.398,2018,0.597,2042,0.752,2054,0.962,2056,0.203,2076,0.201,2092,0.235,2109,0.225,2116,0.46,2118,0.243,2132,0.248,2148,0.26,2225,0.254,2238,1.043,2240,0.225,2256,0.918,2257,0.254,2260,0.26,2292,0.235,2294,0.26,2300,0.254,2306,0.219,2307,0.268,2309,2.444,2310,0.44,2336,0.446,2363,0.26,2370,0.248,2371,0.26,2379,0.477,2407,0.477,2417,0.228,2418,0.235,2419,0.222,2447,0.26,2448,0.647,2484,0.26,2495,0.248,2501,0.26,2502,0.26,2503,0.243,2507,0.26,2528,0.26,2552,0.243,2572,0.525,2580,0.26,2586,0.44,2587,0.239,2589,0.26,2595,0.26,2598,0.26,2610,0.498,2619,0.575,2625,1.334,2626,0.835,2627,0.231,2628,0.75,2630,0.453,2631,0.75,2633,0.51,2634,0.235,2635,1.624,2636,2.041,2637,2.201,2638,0.981,2639,0.75,2641,0.26,2642,0.179,2643,0.26,2644,0.26,2645,0.981,2646,0.453,2647,0.248,2648,0.26,2649,0.26,2650,0.26,2651,0.26,2652,0.51,2653,0.26,2654,0.51,2655,0.26,2656,0.26,2657,0.26,2658,0.239,2659,0.288,2660,0.288,2661,0.564,2662,0.268,2663,0.487,2664,0.26,2665,0.26,2666,0.26,2667,0.26,2668,4.969,2669,0.288,2670,0.288,2671,0.288,2672,0.564,2673,1.421,2674,0.564,2675,0.288,2676,0.288,2677,0.288,2678,0.288,2679,0.542,2680,0.288,2681,0.288,2682,0.268,2683,1.085,2684,0.254,2685,0.254,2686,0.288,2687,0.26,2688,0.83,2689,0.83,2690,0.288,2691,0.288,2692,2.017,2693,0.564,2694,0.772,2695,0.288,2696,0.288,2697,0.564,2698,0.564,2699,0.564,2700,0.564,2701,0.288,2702,0.288,2703,0.288,2704,0.288,2705,0.288,2706,0.564,2707,0.288,2708,0.288,2709,0.288,2710,0.288,2713,0.525,2714,0.288,2715,0.288,2716,0.26,2717,0.288,2718,0.288,2719,0.288,2720,0.288,2721,0.288,2722,0.83,2723,1.085,2724,0.83,2725,1.796,2726,0.564,2727,0.564,2728,0.288,2729,0.83,2730,0.83,2731,1.085,2732,0.288,2733,0.83,2734,0.26,2735,0.288,2736,0.243,2737,0.288,2738,0.288,2739,0.26,2740,0.288,2741,0.288,2742,0.288,2743,0.288,2744,0.288,2745,0.288,2746,0.288,2747,0.288,2748,0.564,2749,0.288,2750,0.564,2751,0.288,2752,0.288,2753,0.288,2754,0.288,2755,0.288,2756,0.268,3238,0.277,3257,0.239,3258,0.51,3413,0.248,3414,0.303,3415,0.594,3416,0.231,3417,0.288,3418,0.303,3419,0.303,3420,0.303,3421,0.303,3422,0.303,3423,0.303,3424,0.303,3425,0.873,3426,0.303,3427,0.873,3428,0.303,3429,0.873,3430,0.303]],["component/220",[7,0.401]],["title/221-1",[236,39.251]],["name/221-1",[]],["text/221-1",[]],["component/221-1",[]],["title/221-2",[96,36.21,679,30.741]],["name/221-2",[]],["text/221-2",[]],["component/221-2",[]],["title/221-3",[679,30.741,949,47.08]],["name/221-3",[]],["text/221-3",[]],["component/221-3",[]],["title/221-4",[980,68.801]],["name/221-4",[]],["text/221-4",[]],["component/221-4",[]],["title/221-5",[36,33.721,1005,26.424]],["name/221-5",[]],["text/221-5",[]],["component/221-5",[]],["title/221-6",[754,39.689]],["name/221-6",[]],["text/221-6",[]],["component/221-6",[]],["title/221-7",[2757,79.747]],["name/221-7",[]],["text/221-7",[]],["component/221-7",[]],["title/221-8",[2758,79.747]],["name/221-8",[]],["text/221-8",[]],["component/221-8",[]],["title/221-9",[2759,79.747]],["name/221-9",[]],["text/221-9",[]],["component/221-9",[]],["title/221-10",[2760,79.747]],["name/221-10",[]],["text/221-10",[]],["component/221-10",[]],["title/221-11",[2761,88.192]],["name/221-11",[]],["text/221-11",[]],["component/221-11",[]],["title/221",[402,17.184,679,30.741]],["name/221",[402,0.306,679,0.547]],["text/221",[5,3.213,8,2.229,13,0.28,14,0.356,17,3.002,19,0.513,23,0.386,24,1.234,26,2.275,29,0.626,31,0.463,34,0.369,36,1.947,45,0.383,52,0.397,68,0.5,71,0.845,76,0.519,79,1.034,84,2.849,86,0.824,88,1.209,96,3.217,99,3.175,101,4.083,105,0.356,111,1.251,115,0.487,117,1.187,118,0.532,120,1.346,127,0.541,129,0.397,134,0.826,136,0.897,139,2.135,142,0.856,143,0.875,144,0.985,146,0.852,148,0.285,154,0.793,155,1.253,161,0.329,163,0.427,166,0.963,168,0.437,171,1.085,172,0.364,178,0.441,186,0.852,190,0.963,192,2.021,196,0.358,199,0.503,214,0.325,224,0.422,228,0.432,241,1.287,245,1.105,248,2.222,249,0.447,251,0.787,252,1.567,263,1.399,264,1.172,266,0.631,275,0.802,277,3.367,280,0.386,282,0.503,283,0.5,292,0.461,296,0.663,301,1.184,319,0.953,331,2.08,341,0.93,351,0.381,357,1.302,375,2.859,377,1.201,394,0.541,395,0.537,401,0.732,402,0.992,406,1.491,408,0.449,415,0.568,421,0.875,424,0.602,442,0.602,445,1.807,451,0.431,465,1.228,508,2.01,509,1.807,514,2.598,521,0.559,525,0.381,531,0.415,547,0.368,549,0.811,552,0.346,553,0.513,570,0.952,580,1.323,583,0.479,586,0.5,593,1.891,597,0.479,608,0.831,615,0.472,617,2.689,630,0.516,668,0.834,670,0.454,673,0.796,679,1.775,683,0.452,684,1.158,686,2.052,687,0.579,697,0.941,698,0.45,711,0.523,723,0.62,733,1.084,736,0.969,742,0.59,743,0.482,754,1.259,768,0.623,786,2.799,790,2.187,827,0.461,830,0.523,841,1.846,865,0.856,924,0.649,925,0.649,926,0.669,927,0.64,928,0.669,929,0.623,932,1.515,934,1.8,936,0.649,943,0.563,949,2.979,961,1.139,963,0.441,967,0.995,976,1.246,981,0.669,984,0.53,989,0.708,990,0.659,991,0.669,993,0.482,994,0.708,995,0.708,996,0.708,997,0.708,998,0.602,999,0.708,1000,0.708,1001,0.64,1002,0.708,1003,0.708,1004,0.579,1005,1.807,1006,4.658,1007,0.708,1008,2.43,1009,0.708,1010,0.584,1011,0.64,1012,0.631,1013,0.64,1014,1.338,1015,1.745,1017,0.579,1018,0.708,1019,0.669,1033,0.59,1040,0.495,1053,0.573,1056,0.669,1061,0.708,1062,0.59,1063,1.338,1064,0.609,1066,1.239,1088,1.338,1099,0.64,1106,1.807,1107,1.55,1114,0.659,1195,0.506,1285,1.179,1479,0.708,1533,1.165,1852,0.584,1961,0.694,1962,1.266,1964,1.338,1965,1.338,1981,0.723,1982,0.723,1983,0.723,1984,0.723,1986,0.723,1987,1.946,1988,0.723,1989,1.946,1990,0.723,1991,1.946,1992,0.694,1993,1.946,1994,0.723,1995,1.831,1996,0.659,1999,0.723,2051,0.568,2056,0.579,2068,0.742,2177,0.421,2194,2.101,2234,1.227,2240,1.21,2310,1.21,2372,0.631,2387,0.631,2406,3.607,2415,0.694,2422,0.516,2423,0.669,2431,0.694,2432,1.311,2455,0.659,2464,1.402,2465,1.402,2468,0.681,2488,1.402,2489,0.742,2511,1.995,2514,0.742,2574,1.402,2586,0.64,2633,2.529,2757,0.742,2758,1.402,2762,1.551,2763,0.82,2764,1.551,2765,0.82,2766,0.82,2767,0.82,2768,0.82,2769,0.82,2770,0.82,2771,0.82,2772,0.82,2773,0.82,2774,0.82,2775,0.82,2776,0.82,2777,0.82,2778,0.82,2780,1.551,2781,1.551,2782,0.82,2783,0.82,2784,0.82,2785,1.368,2786,1.551,2787,0.82,2788,0.763,2789,0.82,2790,0.82,2791,0.82,2792,0.82,2793,0.82,2794,0.82,2795,0.82,2796,0.82,2797,0.82,2798,0.82,2799,0.82,2800,0.82,2801,0.82,2802,0.82,2803,1.442,2804,0.742,2805,0.82,3132,0.742,3265,0.788,3266,0.788,3370,0.708,3431,0.863,3432,1.632,3433,0.863,3434,1.632,3435,0.863,3436,0.863]],["component/221",[7,0.401]],["title/222-1",[29,25.643,42,29.179,502,29.437]],["name/222-1",[]],["text/222-1",[]],["component/222-1",[]],["title/222-2",[155,27.786,308,31.436]],["name/222-2",[]],["text/222-2",[]],["component/222-2",[]],["title/222-3",[183,30.892,1128,43.146]],["name/222-3",[]],["text/222-3",[]],["component/222-3",[]],["title/222-4",[183,30.892,1129,38.042]],["name/222-4",[]],["text/222-4",[]],["component/222-4",[]],["title/222-5",[356,40.753,835,41.118]],["name/222-5",[]],["text/222-5",[]],["component/222-5",[]],["title/222-6",[728,32.081,861,33.087,1130,35.539,1131,36.54]],["name/222-6",[]],["text/222-6",[]],["component/222-6",[]],["title/222-7",[227,33.834,525,23.078,861,29.474,1130,31.658,1131,32.55]],["name/222-7",[]],["text/222-7",[]],["component/222-7",[]],["title/222-8",[349,34.906,1735,35.536,2806,57.467]],["name/222-8",[]],["text/222-8",[]],["component/222-8",[]],["title/222-9",[351,34.319,1967,55.481]],["name/222-9",[]],["text/222-9",[]],["component/222-9",[]],["title/222-10",[96,36.21,2807,73.872]],["name/222-10",[]],["text/222-10",[]],["component/222-10",[]],["title/222-11",[293,47.398,1004,52.112]],["name/222-11",[]],["text/222-11",[]],["component/222-11",[]],["title/222",[13,15.31,14,19.455,84,12.931,98,29.562,502,20.744,1132,21.525]],["name/222",[1132,1.129]],["text/222",[0,0.577,3,0.465,5,0.677,6,1.017,7,0.146,8,1.597,10,0.45,11,1.198,12,0.584,13,2.471,14,2.049,17,1.508,18,0.734,19,0.353,29,1.288,30,0.255,31,0.319,32,0.848,34,0.706,35,0.874,37,0.347,38,0.323,40,0.7,42,1.298,45,0.508,46,0.798,48,1.819,52,1.544,54,1.15,56,1.405,57,0.328,60,1.286,77,0.332,79,0.509,84,3.259,88,1.317,91,1.198,92,0.353,93,0.332,96,0.277,98,0.373,99,0.285,101,0.544,104,0.291,105,0.877,110,0.27,112,0.516,117,1.887,118,2.618,120,1.725,125,0.752,127,0.373,128,1.438,130,0.351,134,0.212,136,0.292,138,0.262,139,0.753,146,0.862,147,0.373,148,0.7,151,0.395,154,0.555,155,0.759,161,0.629,163,0.818,164,0.987,166,0.351,168,0.301,171,0.278,172,1.081,179,0.398,180,0.353,183,1.613,185,0.766,186,1.338,188,0.345,189,0.33,192,0.299,194,0.376,196,0.247,202,0.441,203,0.347,206,0.415,211,1.077,214,0.965,220,0.41,224,1.039,225,0.424,227,0.74,228,1.064,236,0.251,239,0.277,240,0.816,247,0.353,251,0.287,252,0.949,262,0.339,264,1.122,265,0.753,267,0.645,268,0.365,271,0.276,275,0.562,277,0.29,279,0.514,280,0.511,282,0.347,283,0.663,285,0.441,293,1.295,296,2.127,300,1.398,301,0.239,308,1.037,311,0.31,315,0.74,316,0.283,319,0.469,324,0.419,325,1.021,327,0.454,330,1.06,331,0.855,333,0.345,338,0.836,346,0.435,349,2.442,350,0.322,351,1.313,354,0.349,356,1.761,360,0.429,361,0.52,386,0.628,402,0.822,406,0.852,412,0.398,421,0.319,438,0.415,439,0.333,445,0.365,446,0.295,450,0.388,457,0.415,459,1.007,464,0.365,465,0.248,468,0.777,474,0.402,478,0.441,482,0.353,502,1.129,508,0.947,514,0.9,517,0.343,518,0.402,521,0.385,523,0.349,525,0.938,528,1.431,531,0.794,532,0.766,539,0.435,541,0.454,547,0.704,548,0.382,549,0.568,552,0.239,556,0.353,558,0.402,570,0.667,577,0.663,580,1.696,593,0.28,596,1.029,597,0.635,602,0.429,608,0.302,618,0.419,647,0.358,666,0.675,668,0.844,670,0.602,673,1.25,677,0.362,682,0.306,689,0.766,698,0.31,706,2.51,711,1.286,728,1.402,729,1.313,730,1.179,735,1.364,736,2.411,742,0.406,743,1.185,745,0.555,758,0.435,773,0.379,786,1.119,790,0.323,827,1.986,833,0.435,835,0.874,846,3.707,861,2.95,868,0.511,890,1.014,910,0.355,963,0.584,967,0.362,972,0.579,993,0.332,1004,0.398,1010,0.402,1021,0.487,1022,0.447,1024,0.447,1040,0.655,1048,0.454,1066,0.882,1083,1.193,1087,0.419,1097,0.398,1102,0.498,1128,1.179,1129,0.808,1130,1.286,1131,1.323,1133,1.633,1134,0.429,1135,0.461,1136,0.37,1137,0.424,1138,0.781,1139,1.078,1140,0.525,1141,0.826,1142,0.86,1143,0.86,1144,0.435,1145,0.347,1146,0.461,1147,0.525,1148,0.525,1149,1.01,1150,3.467,1151,0.807,1152,1.01,1153,0.937,1154,0.435,1155,0.424,1156,0.525,1157,0.461,1158,0.419,1159,0.525,1160,1.01,1161,0.525,1162,0.902,1163,0.525,1164,0.902,1165,1.46,1166,0.461,1167,0.525,1168,0.435,1169,0.41,1170,1.01,1171,0.525,1172,1.208,1173,0.525,1174,0.385,1175,0.525,1176,0.525,1177,0.525,1178,0.525,1179,0.525,1180,1.01,1181,0.525,1182,0.525,1183,1.01,1184,1.01,1185,1.01,1186,0.525,1187,0.807,1188,1.01,1189,0.525,1190,0.525,1191,0.525,1192,0.525,1193,0.525,1194,0.525,1195,0.349,1196,0.469,1197,1.303,1198,0.525,1199,0.525,1200,0.461,1201,1.452,1202,0.525,1203,1.01,1204,0.487,1205,1.01,1206,0.525,1207,0.525,1208,0.525,1209,0.525,1210,0.498,1211,0.382,1212,0.525,1214,0.759,1219,0.391,1277,0.424,1294,0.487,1295,0.441,1296,0.487,1300,0.461,1347,1.01,1349,1.46,1356,1.781,1361,6.334,1362,2.969,1379,1.877,1382,0.525,1400,0.313,1483,0.268,1520,0.382,1556,0.362,1558,0.333,1647,0.391,1682,0.86,1733,1.242,1735,1.977,1964,0.487,1967,1.83,1996,0.454,2003,0.478,2029,0.982,2037,0.982,2055,0.454,2060,0.385,2072,0.454,2076,0.395,2134,0.478,2135,0.454,2173,2.102,2336,0.447,2342,0.478,2478,1.354,2558,1.825,2806,3.197,2808,0.487,2809,1.57,2810,0.565,2811,0.565,2812,0.565,2813,0.565,2814,0.565,2815,1.086,2816,0.565,2817,0.498,2818,0.565,2819,0.565,2820,0.565,2821,0.565,2822,1.086,2823,0.565,2824,0.565,2825,0.565,2826,0.565,2827,1.57,2828,1.57,2829,0.565,2830,1.086,2831,0.565,2832,1.086,2833,0.565,2834,1.086,2835,0.565,2836,2.827,2837,0.525,2838,3.193,2839,0.565,2840,1.086,2841,1.086,2842,1.086,2843,1.086,2844,1.01,2845,1.086,2846,0.565,2847,0.498,2848,0.565,2849,0.565,2850,0.982,2851,0.525,2852,0.565,2853,0.565,2854,1.57,2855,0.565,2856,0.565,2857,1.57,2858,0.565,2859,0.565,2860,0.565,2861,0.565,2862,0.565,2863,0.565,2864,0.565,2865,0.565,2866,0.565,2867,0.565,2868,0.565,2869,0.565,2870,0.565,2871,0.565,2872,0.525,2873,0.565,2874,0.525,2875,1.086,2876,1.086,2877,1.086,2878,0.565,2879,0.565,2880,0.565,2881,0.565,2882,0.565,2883,1.086,2884,0.565,2885,1.57,2886,0.565,2887,0.565,2888,0.565,2889,0.565,2890,0.498,2891,0.565,2892,0.565,2893,0.565,2894,0.565]],["component/222",[7,0.401]],["title/223-1",[402,20.515]],["name/223-1",[]],["text/223-1",[]],["component/223-1",[]],["title/223-2",[116,50.007]],["name/223-2",[]],["text/223-2",[]],["component/223-2",[]],["title/223-3",[52,35.736,116,41.887]],["name/223-3",[]],["text/223-3",[]],["component/223-3",[]],["title/223-4",[118,25.347,2619,51.178]],["name/223-4",[]],["text/223-4",[]],["component/223-4",[]],["title/223-5",[134,27.671,2619,51.178]],["name/223-5",[]],["text/223-5",[]],["component/223-5",[]],["title/223-6",[214,22.092,248,29.044,361,26.717,1303,46.286]],["name/223-6",[]],["text/223-6",[]],["component/223-6",[]],["title/223-7",[33,23.693,36,20.443,111,25.393,116,25.393,118,15.366,421,25.274]],["name/223-7",[]],["text/223-7",[]],["component/223-7",[]],["title/223-8",[36,18.611,88,12.902,116,23.118,118,13.989,143,23.009,361,19.534,854,27.77]],["name/223-8",[]],["text/223-8",[]],["component/223-8",[]],["title/223-9",[33,23.693,111,25.393,118,23.373,361,21.457,421,25.274]],["name/223-9",[]],["text/223-9",[]],["component/223-9",[]],["title/223-10",[33,14.895,36,12.852,111,15.964,116,15.964,118,9.66,143,15.889,186,15.464,421,15.889,854,19.177,861,16.706,985,17.944,1153,24.29]],["name/223-10",[]],["text/223-10",[]],["component/223-10",[]],["title/223-11",[54,18.307,110,15.346,118,17.986,120,19.606,171,15.803,214,12.73,361,15.395,487,14.667,680,16.866]],["name/223-11",[]],["text/223-11",[]],["component/223-11",[]],["title/223-12",[245,52.609,528,43.37]],["name/223-12",[]],["text/223-12",[]],["component/223-12",[]],["title/223-13",[88,23.377,356,40.753]],["name/223-13",[]],["text/223-13",[]],["component/223-13",[]],["title/223-14",[48,36.208,88,20.111,356,35.06]],["name/223-14",[]],["text/223-14",[]],["component/223-14",[]],["title/223-15",[88,20.111,356,35.06,1172,48.923]],["name/223-15",[]],["text/223-15",[]],["component/223-15",[]],["title/223-16",[56,31.577,356,35.06,711,40.503]],["name/223-16",[]],["text/223-16",[]],["component/223-16",[]],["title/223-17",[14,17.712,113,18.095,356,22.492,525,18.941,765,29.622,766,27.77,1213,29.035]],["name/223-17",[]],["text/223-17",[]],["component/223-17",[]],["title/223-18",[88,27.909]],["name/223-18",[]],["text/223-18",[]],["component/223-18",[]],["title/223-19",[1276,68.801]],["name/223-19",[]],["text/223-19",[]],["component/223-19",[]],["title/223",[13,19.063,14,24.225,88,17.646,158,30.495]],["name/223",[88,0.743]],["text/223",[0,0.755,2,0.231,3,0.32,4,0.225,5,0.166,7,0.282,8,1.117,10,0.718,11,0.228,12,0.207,13,1.844,14,1.901,15,0.588,17,2.235,18,0.511,19,0.24,23,0.514,24,0.612,30,0.173,31,0.422,32,0.46,33,2.599,34,1.792,36,0.342,40,0.38,42,0.344,45,0.18,46,1.044,48,1.896,49,0.795,52,1.496,54,2.985,56,1.285,57,1.181,58,0.477,60,1.648,63,0.49,65,2.735,71,0.596,77,0.439,80,0.274,84,2.053,88,2.369,91,1.206,92,0.684,93,1.518,94,0.873,95,0.953,96,0.85,97,0.969,100,1.203,101,2.846,102,0.424,103,0.576,105,2.276,106,0.49,107,1.447,110,1.802,111,3.598,112,0.964,113,3.199,115,0.844,116,5.071,117,0.736,118,3.011,120,4.821,121,2.53,123,0.533,125,0.524,128,0.227,129,0.362,130,0.465,134,1.639,136,0.294,143,2.957,144,0.334,145,0.258,146,0.211,147,0.494,148,0.26,151,0.269,152,0.276,153,0.296,155,0.871,160,0.215,161,0.438,162,0.55,163,0.741,164,0.471,166,0.884,168,0.399,169,0.228,170,0.684,171,1.139,172,0.77,186,1.272,188,0.235,191,0.153,192,0.396,194,0.498,196,1.739,199,0.236,202,0.584,204,0.325,211,0.399,214,0.917,215,0.544,221,0.519,224,0.385,227,0.262,234,0.437,238,0.289,243,0.242,245,0.274,248,1.965,249,0.408,252,0.669,253,0.262,254,0.269,255,0.449,262,0.231,263,0.192,264,0.714,271,0.188,272,0.429,275,0.199,277,1.327,280,0.352,283,0.235,285,0.3,292,0.216,293,0.48,296,1.217,301,1.204,304,0.285,308,0.605,313,2.648,315,0.262,316,2.541,319,0.323,322,0.279,325,1.128,330,0.26,335,0.656,338,0.842,340,0.684,341,1.04,344,0.319,348,0.26,350,1.158,351,1.076,352,0.285,356,2.891,360,0.292,361,1.595,377,0.209,379,0.319,384,0.332,386,0.222,388,0.236,389,0.696,394,0.254,397,0.304,401,0.353,402,0.926,403,0.285,406,0.382,408,0.21,421,1.745,429,0.269,438,1.274,439,0.442,440,0.254,441,0.9,443,0.415,446,0.391,455,0.199,470,0.178,480,0.646,482,0.24,487,0.792,502,0.178,505,2.33,506,0.289,508,0.452,509,0.919,519,1.013,523,0.237,525,1.201,526,0.319,528,0.226,531,1.171,547,0.172,549,0.744,552,0.316,553,0.684,558,0.274,570,0.459,575,0.276,577,0.457,580,0.231,602,0.292,604,0.426,613,0.292,617,0.221,619,0.266,620,0.454,664,0.314,666,0.239,668,0.207,670,0.415,677,0.247,679,0.16,680,0.91,686,0.304,697,0.233,698,0.211,706,0.25,708,0.215,711,1.476,712,0.932,728,0.629,729,0.925,732,0.953,765,0.544,766,0.51,767,0.279,768,0.569,772,0.24,773,0.502,784,0.332,827,0.216,835,0.965,841,0.494,854,2.57,861,2.11,865,0.413,869,0.576,889,0.465,890,0.707,900,0.733,910,0.471,937,0.969,949,0.245,961,0.55,963,0.207,966,0.262,968,0.785,972,1.517,980,0.3,985,0.477,993,0.642,1013,0.3,1031,0.285,1040,0.232,1047,0.314,1049,0.319,1062,1.023,1075,0.228,1076,0.695,1083,1.081,1089,0.282,1092,0.256,1129,0.198,1130,0.245,1131,1.331,1133,0.953,1139,0.751,1144,0.296,1154,0.842,1155,0.562,1162,0.319,1164,0.621,1172,3.649,1197,0.621,1213,1.447,1214,1.212,1216,0.358,1217,0.358,1218,0.358,1219,0.985,1220,1.018,1221,0.944,1222,0.358,1223,0.358,1224,0.696,1225,0.696,1226,0.358,1227,0.358,1228,0.358,1229,0.358,1230,0.358,1231,0.358,1232,0.358,1233,0.358,1234,0.358,1235,0.358,1236,0.358,1237,0.358,1238,1.018,1239,0.358,1240,0.696,1241,1.018,1242,0.358,1243,0.358,1244,0.358,1245,0.358,1246,0.584,1247,0.696,1248,1.323,1249,0.611,1250,0.562,1251,0.696,1252,0.332,1253,0.25,1254,0.358,1255,0.168,1256,0.908,1257,0.358,1258,0.66,1261,0.358,1262,0.358,1265,0.358,1266,0.358,1267,0.358,1268,0.358,1269,0.358,1270,0.358,1271,0.358,1272,0.358,1273,0.358,1274,0.358,1275,0.358,1276,0.3,1277,1.303,1278,0.358,1295,0.3,1296,0.332,1297,0.358,1298,0.358,1299,0.358,1300,0.893,1301,0.319,1302,0.358,1303,0.319,1307,0.369,1308,0.296,1319,0.358,1320,0.696,1321,0.332,1322,0.358,1323,0.358,1324,0.358,1325,1.613,1326,0.358,1327,0.696,1328,0.358,1329,0.358,1331,0.358,1332,0.358,1333,0.358,1334,0.696,1335,0.358,1336,0.696,1337,0.358,1338,0.358,1339,0.696,1340,0.696,1341,0.358,1342,0.358,1343,0.332,1344,0.358,1345,0.358,1346,0.358,1383,0.358,1384,0.358,1385,0.358,1386,0.358,1387,0.358,1388,0.66,1389,0.319,1390,0.242,1391,0.339,1392,0.358,1393,0.358,1397,0.358,1416,0.474,1456,0.174,1483,0.519,1484,0.292,1498,0.269,1513,0.55,1641,0.925,1661,0.296,1733,1.607,1768,0.696,1770,1.227,1779,0.289,1849,0.309,1938,0.696,2042,0.519,2051,0.266,2054,0.236,2076,0.523,2083,0.309,2127,0.646,2166,0.696,2240,0.3,2444,0.348,2448,0.3,2518,0.348,2562,0.314,2619,1.791,2673,0.304,2895,0.384,2896,1.734,2897,0.348,2898,0.384,2899,0.384,2900,0.749,2901,0.384,2902,0.384,2903,0.384,2904,1.094,2905,0.384,2906,0.384,2907,0.384,2908,0.384,2909,0.384,2910,0.384,2911,0.384,2912,0.384,2913,0.384,2915,0.384,2916,1.734,2917,0.384,2918,0.384,2919,0.384,2921,1.094,2922,0.384,2923,0.384,2924,0.384,2925,0.384,2926,0.358,2927,0.384,2928,0.384,2929,0.749,2930,0.384,2931,0.749,2932,1.094,2933,0.384,2934,0.893,2935,1.094,2936,0.384,2937,0.384,2938,0.749,2939,0.384,2940,1.422,2941,0.384,2942,0.384,2943,0.384,2944,0.384,2945,0.369,2946,0.384,2947,0.384,2948,0.384,2949,0.384,2950,0.384,2951,0.384,2952,0.384,2953,0.384,2954,0.384,2955,0.384,2956,0.749,2957,0.384,2958,0.384,2959,0.749,2960,0.384,2961,0.384,2962,0.384,2963,0.384,2964,0.384,2965,0.384,2966,0.384,2967,0.384,2968,0.384,2969,0.384,2970,0.384,2971,0.749,2972,0.749,3370,2.667,3396,0.369,3400,0.989,3437,2.992,3438,0.404,3439,0.404,3440,1.825,3441,0.787,3442,0.787,3443,1.151,3444,0.404,3445,0.404,3446,0.404,3447,0.404]],["component/223",[7,0.401]],["title/224-1",[117,26.976,118,21.806,296,27.183]],["name/224-1",[]],["text/224-1",[]],["component/224-1",[]],["title/224-2",[8,10.407,26,17.177,117,17.306,118,13.989,168,21.743,296,17.438,402,9.484]],["name/224-2",[]],["text/224-2",[]],["component/224-2",[]],["title/224-3",[1276,68.801]],["name/224-3",[]],["text/224-3",[]],["component/224-3",[]],["title/224",[13,25.254,105,32.092]],["name/224",[631,1.45]],["text/224",[7,0.622,8,0.616,13,2.456,14,1.048,20,1.408,24,2.306,26,2.694,29,0.973,30,1.088,34,1.085,45,1.127,52,3.093,54,2.349,60,2.628,71,1.313,84,2.547,88,1.305,102,1.367,105,2.347,112,1.957,113,1.07,116,2.338,117,3.552,118,3.957,125,1.155,126,3.062,129,1.167,134,2.395,136,2.252,138,1.12,139,1.538,148,1.431,150,1.053,155,1.551,161,1.652,171,1.186,179,1.701,181,1.811,183,1.008,196,1.053,199,1.48,214,2.846,226,1.592,239,2.021,264,2.526,275,1.246,292,1.355,296,4.209,301,2.707,308,3.057,313,1.527,320,1.439,324,1.79,341,1.447,357,1.423,391,1.276,395,1.58,402,1.487,438,1.771,443,1.336,451,2.165,453,2.318,455,1.246,458,1.558,460,1.07,465,1.059,487,1.101,503,2.181,514,1.523,519,1.717,547,1.082,552,1.018,557,1.455,570,1.48,617,1.387,661,2.002,665,1.297,667,2.243,670,2.994,671,2.243,672,1.656,673,3.28,676,1.656,677,1.547,678,1.447,679,1.004,680,2.165,683,1.33,684,1.266,723,1.649,743,2.421,746,1.031,865,1.33,963,2.217,966,1.642,972,1.286,1005,0.863,1092,1.604,1125,1.629,1279,1.527,1280,2.039,1281,2.243,1282,1.908,1283,2.243,1284,1.937,1285,1.833,1286,2.002,1287,1.604,1305,1.937,1306,2.002,1477,1.387,1640,1.717,2054,1.48,3193,2.318,3370,3.558]],["component/224",[7,0.401]],["title/225-1",[78,56.976]],["name/225-1",[]],["text/225-1",[]],["component/225-1",[]],["title/225-2",[745,45.082]],["name/225-2",[]],["text/225-2",[]],["component/225-2",[]],["title/225-3",[1255,32.348,1457,33.624]],["name/225-3",[]],["text/225-3",[]],["component/225-3",[]],["title/225",[136,17.103,178,34.172,1005,22.733]],["name/225",[1473,1.613]],["text/225",[8,1.827,65,4.917,88,2.266,118,2.456,129,3.463,136,1.927,139,2.671,178,5.121,183,2.994,228,3.773,263,3.582,264,2.517,301,3.031,388,4.394,468,3.545,487,3.268,514,2.644,686,2.909,723,2.862,756,5.004,827,4.022,1005,3.828,1473,4.917,1585,4.876,2422,4.504,2566,4.762,2974,7.159,2976,7.159,3742,8.098,3743,8.098]],["component/225",[7,0.401]],["title/226-1",[78,56.976]],["name/226-1",[]],["text/226-1",[]],["component/226-1",[]],["title/226-2",[745,45.082]],["name/226-2",[]],["text/226-2",[]],["component/226-2",[]],["title/226-3",[1255,32.348,1457,33.624]],["name/226-3",[]],["text/226-3",[]],["component/226-3",[]],["title/226",[136,17.103,1005,22.733,3450,44.422]],["name/226",[3416,1.056,3450,0.919]],["text/226",[8,2.443,12,2.598,31,2.727,91,4.28,104,2.488,118,1.658,136,2.891,139,1.802,150,2.11,161,1.936,183,2.021,191,1.923,192,2.556,263,2.417,264,1.699,297,2.78,301,2.046,308,2.056,379,4.011,388,2.966,465,2.121,470,2.231,675,3.319,686,1.963,723,1.932,963,2.598,984,3.121,1005,4.259,1400,2.677,1472,2.948,1483,2.293,2063,3.629,2137,3.475,2422,4.537,2566,3.214,3257,4.011,3450,8.448,3451,6.522,3452,5.083,3453,7.588,3454,5.083,3455,5.083,3456,5.083,3457,5.083,3458,5.083,3459,4.168,3460,4.369,3461,4.369]],["component/226",[7,0.401]],["title/227-1",[78,56.976]],["name/227-1",[]],["text/227-1",[]],["component/227-1",[]],["title/227-2",[745,45.082]],["name/227-2",[]],["text/227-2",[]],["component/227-2",[]],["title/227-3",[191,25.292,728,36.562,1483,30.163]],["name/227-3",[]],["text/227-3",[]],["component/227-3",[]],["title/227-4",[10,30.592,228,38.927]],["name/227-4",[]],["text/227-4",[]],["component/227-4",[]],["title/227-5",[1255,32.348,1457,33.624]],["name/227-5",[]],["text/227-5",[]],["component/227-5",[]],["title/227",[136,17.103,538,50.281,1005,22.733]],["name/227",[538,1.858]],["text/227",[6,4.055,8,2.345,10,1.218,15,1.581,29,1.186,32,3.051,34,3.267,45,2.278,84,2.096,88,0.931,94,1.805,101,1.471,118,1.672,136,2.166,139,1.097,172,1.305,183,1.23,186,1.615,190,3.027,191,2.889,196,1.284,220,2.136,263,1.471,264,1.713,271,3.049,283,1.794,301,1.245,317,2.094,351,1.366,352,2.183,388,1.805,402,0.684,443,1.629,468,1.456,487,1.342,492,2.094,514,2.68,538,5.743,580,1.764,686,1.195,717,2.208,723,1.176,728,6.807,773,1.971,827,1.652,907,2.183,932,2.02,1005,2.879,1078,3.148,1106,1.594,1145,2.991,1150,1.629,1151,3.618,1174,5.481,1472,1.794,1483,1.396,1484,2.235,1488,2.441,1640,2.094,1727,2.115,1827,4.804,1945,3.266,2301,3.802,2408,2.537,2422,1.85,2566,1.956,2808,6.943,3462,7.485,3463,6.564,3464,4.873,3465,4.684,3466,2.594,3467,4.873,3468,2.826,3469,2.826,3470,4.873,3471,2.594,3472,2.94,3473,6.241,3474,6.241]],["component/227",[7,0.401]],["title/228-1",[78,56.976]],["name/228-1",[]],["text/228-1",[]],["component/228-1",[]],["title/228-2",[745,45.082]],["name/228-2",[]],["text/228-2",[]],["component/228-2",[]],["title/228-3",[1255,32.348,1457,33.624]],["name/228-3",[]],["text/228-3",[]],["component/228-3",[]],["title/228",[136,15.007,1005,19.947,1769,50.423,3477,38.977]],["name/228",[3478,2.257]],["text/228",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1769,5.173,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3478,7.843,3479,4.936,3480,6.019,3481,4.936]],["component/228",[7,0.401]],["title/229-1",[78,56.976]],["name/229-1",[]],["text/229-1",[]],["component/229-1",[]],["title/229-2",[745,45.082]],["name/229-2",[]],["text/229-2",[]],["component/229-2",[]],["title/229-3",[1255,32.348,1457,33.624]],["name/229-3",[]],["text/229-3",[]],["component/229-3",[]],["title/229",[136,15.007,1005,19.947,3477,38.977,3482,53.595]],["name/229",[3483,2.257]],["text/229",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3482,5.499,3483,7.843,3484,6.019]],["component/229",[7,0.401]],["title/230-1",[78,56.976]],["name/230-1",[]],["text/230-1",[]],["component/230-1",[]],["title/230-2",[745,45.082]],["name/230-2",[]],["text/230-2",[]],["component/230-2",[]],["title/230-3",[1255,32.348,1457,33.624]],["name/230-3",[]],["text/230-3",[]],["component/230-3",[]],["title/230",[136,15.007,1005,19.947,3477,38.977,3485,50.423]],["name/230",[3486,2.257]],["text/230",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3485,5.173,3486,7.843,3487,6.019]],["component/230",[7,0.401]],["title/231-1",[78,56.976]],["name/231-1",[]],["text/231-1",[]],["component/231-1",[]],["title/231-2",[745,45.082]],["name/231-2",[]],["text/231-2",[]],["component/231-2",[]],["title/231-3",[1255,32.348,1457,33.624]],["name/231-3",[]],["text/231-3",[]],["component/231-3",[]],["title/231",[136,15.007,1005,19.947,1741,44.118,3477,38.977]],["name/231",[3488,2.257]],["text/231",[8,1.46,10,2.369,30,2.582,84,1.652,88,1.811,118,2.8,136,1.54,139,2.134,191,3.785,192,3.027,207,4.749,209,4.074,214,2.267,251,2.903,264,2.011,301,2.422,388,3.512,460,2.539,468,2.833,470,2.642,486,3.671,487,2.612,511,4.749,514,2.113,686,2.325,723,2.287,756,3.999,827,3.214,872,4.838,968,3.156,1005,3.709,1158,4.248,1174,3.897,1400,3.17,1472,3.491,1483,2.715,1620,3.999,1735,3.199,1741,4.527,1758,3.722,1816,6.203,2422,3.599,2566,3.805,3477,5.704,3479,4.936,3481,4.936,3488,7.843,3489,6.019]],["component/231",[7,0.401]],["title/232-1",[78,56.976]],["name/232-1",[]],["text/232-1",[]],["component/232-1",[]],["title/232-2",[745,45.082]],["name/232-2",[]],["text/232-2",[]],["component/232-2",[]],["title/232-3",[1255,32.348,1457,33.624]],["name/232-3",[]],["text/232-3",[]],["component/232-3",[]],["title/232",[136,17.103,1005,22.733,1431,35.699]],["name/232",[1431,1.319]],["text/232",[8,1.538,65,4.137,84,1.739,88,1.906,101,3.014,118,2.067,136,1.621,139,2.247,183,2.519,191,3.368,252,2.833,264,2.118,279,2.85,301,2.551,357,3.555,388,3.697,451,3.162,487,2.75,514,3.125,567,4.332,686,2.448,723,2.408,827,3.384,1005,3.5,1076,2.943,1158,4.472,1431,6.689,1483,2.859,1578,4.637,1580,5.447,1617,7.653,2398,4.699,2422,3.789,2566,4.006,3180,5.447,3490,5.79,3491,6.337,3492,6.337,3493,6.337,3744,6.024]],["component/232",[7,0.401]],["title/233-1",[78,56.976]],["name/233-1",[]],["text/233-1",[]],["component/233-1",[]],["title/233-2",[745,45.082]],["name/233-2",[]],["text/233-2",[]],["component/233-2",[]],["title/233-3",[1255,32.348,1457,33.624]],["name/233-3",[]],["text/233-3",[]],["component/233-3",[]],["title/233",[136,17.103,1005,22.733,3494,51.038]],["name/233",[3494,1.886]],["text/233",[8,2.095,12,3.102,31,3.256,40,2.002,65,3.963,84,1.666,88,1.826,118,1.98,136,1.553,139,2.152,158,3.155,183,2.413,191,3.267,252,2.713,264,2.028,279,2.73,301,2.443,357,3.405,388,3.541,440,5.419,451,3.028,487,2.634,514,3.031,686,2.344,723,2.307,827,3.241,1005,3.418,1076,2.819,1483,2.738,1555,3.93,2422,3.629,2562,4.708,2566,3.837,3180,5.217,3494,9.654,3495,6.07,3496,6.07,3499,4.978,3500,5.545,3501,5.545,3502,5.545,3745,6.526,3746,6.526]],["component/233",[7,0.401]],["title/234-1",[78,56.976]],["name/234-1",[]],["text/234-1",[]],["component/234-1",[]],["title/234-2",[745,45.082]],["name/234-2",[]],["text/234-2",[]],["component/234-2",[]],["title/234-3",[191,25.292,728,36.562,1483,30.163]],["name/234-3",[]],["text/234-3",[]],["component/234-3",[]],["title/234-4",[10,30.592,228,38.927]],["name/234-4",[]],["text/234-4",[]],["component/234-4",[]],["title/234-5",[1255,32.348,1457,33.624]],["name/234-5",[]],["text/234-5",[]],["component/234-5",[]],["title/234",[136,17.103,1005,22.733,1591,42.597]],["name/234",[1591,1.574]],["text/234",[6,3.619,8,2.196,10,1.197,12,1.554,15,2.584,29,1.166,32,3.019,34,2.775,35,1.609,45,2.246,84,1.78,88,0.915,91,1.715,101,1.446,118,1.649,136,1.933,139,1.078,161,1.158,172,1.283,183,1.209,186,1.588,190,1.796,191,2.454,196,1.262,220,2.1,263,1.446,264,1.689,271,2.347,283,1.764,301,1.224,317,2.059,351,1.343,352,2.146,388,1.774,402,0.672,443,1.602,460,2.133,468,2.379,482,1.807,487,2.193,493,7.14,514,2.652,531,1.462,538,2.287,549,1.511,580,1.734,686,1.175,717,2.171,723,1.156,728,6.392,756,3.359,758,2.225,773,1.938,827,2.699,898,2.321,907,2.146,932,1.985,1005,2.852,1078,3.104,1106,1.567,1150,1.602,1174,4.892,1381,2.287,1483,1.372,1555,1.969,1591,5.766,1640,2.059,1727,2.079,1827,3.699,1945,1.938,2301,3.748,2408,2.494,2422,1.818,2566,1.923,2808,7.421,2979,2.891,3462,7.415,3464,4.805,3466,2.55,3467,4.805,3470,6.166,3471,2.55,3472,2.891,3473,4.805,3474,4.805,3503,3.041,3747,3.27,3748,3.27,3749,3.27,3750,3.27,3751,3.27,3752,3.27,3753,3.27]],["component/234",[7,0.401]],["title/235-1",[84,16.101,117,23.67,402,12.971,604,31.77]],["name/235-1",[]],["text/235-1",[]],["component/235-1",[]],["title/235-2",[84,12.931,117,19.01,136,12.052,139,16.706,604,25.515,1005,16.019]],["name/235-2",[]],["text/235-2",[]],["component/235-2",[]],["title/235",[402,17.184,1040,44.562]],["name/235",[402,0.306,1040,0.793]],["text/235",[0,0.862,3,0.694,6,0.817,7,0.418,8,1.422,13,1.653,14,1.265,17,0.692,18,1.361,23,1.863,26,1.227,29,1.599,30,1.314,34,1.31,36,0.74,37,0.996,40,0.563,42,0.745,45,1.852,84,0.841,86,1.547,88,0.513,101,1.457,108,1.155,110,0.775,112,1.382,115,0.962,117,1.682,118,0.557,125,0.777,133,1.014,134,2.703,135,0.697,136,2.154,139,3.412,144,1.299,145,1.952,148,1.01,150,0.708,151,1.134,155,1.49,158,0.887,160,0.907,161,1.588,163,2.518,172,2.145,178,0.872,180,1.014,183,1.218,189,1.701,196,2.944,202,1.265,203,0.996,214,2.206,224,2.04,225,2.187,236,0.722,248,2.064,252,1.863,262,0.973,263,1.982,267,0.962,268,1.881,270,1.323,271,1.423,272,0.929,277,1.494,280,0.763,292,1.636,296,1.245,301,0.687,319,1.712,333,0.99,354,1.001,357,0.957,386,0.938,394,1.922,395,1.063,397,1.283,401,0.765,402,2.311,406,2.167,408,1.592,418,1.303,420,1.178,441,1.027,443,0.899,445,1.881,450,1.114,455,1.505,460,0.72,465,1.278,468,0.803,474,1.155,487,0.74,514,1.075,518,1.155,523,2.446,525,1.841,548,1.096,549,0.848,552,0.685,557,0.978,583,0.947,593,1.442,617,0.933,630,3.041,665,0.872,668,2.599,674,1.105,675,1.114,678,0.973,679,3.176,683,1.606,686,1.61,695,0.829,696,1.323,719,1.692,723,0.648,733,1.134,735,1.096,741,1.041,745,0.829,754,0.73,756,1.134,779,1.034,827,0.911,835,0.903,865,2.186,903,0.947,949,1.034,967,1.041,968,0.895,970,1.144,993,0.952,1005,3.184,1008,0.924,1033,2.094,1040,1.756,1076,0.792,1082,1.323,1097,2.054,1106,1.579,1107,0.899,1125,1.096,1126,1.166,1131,1.063,1169,2.116,1213,2.074,1308,1.249,1400,0.899,1416,1.027,1456,0.734,1477,0.933,1483,0.77,1499,1.178,1516,1.323,1555,1.983,1852,2.074,1936,1.055,1965,2.512,2042,1.124,2097,1.283,2098,1.399,2135,1.303,2136,1.371,2177,0.832,2194,1.218,2348,1.303,2356,1.303,2387,1.249,2455,1.303,2479,1.371,2503,1.371,2586,1.265,2646,1.303,2687,1.467,2759,1.467,2760,1.467,2804,1.467,2980,1.622,2981,1.622,2982,1.622,2983,1.622,2984,1.622,2985,1.622,2986,1.622,2987,1.622,2988,1.622,3504,1.559,3505,1.706]],["component/235",[7,0.401]],["title/236-1",[402,17.184,1456,33.432]],["name/236-1",[]],["text/236-1",[]],["component/236-1",[]],["title/236-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/236-2",[]],["text/236-2",[]],["component/236-2",[]],["title/236-3",[8,18.856,150,32.262]],["name/236-3",[]],["text/236-3",[]],["component/236-3",[]],["title/236-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/236-4",[]],["text/236-4",[]],["component/236-4",[]],["title/236-5",[547,33.151,708,41.306]],["name/236-5",[]],["text/236-5",[]],["component/236-5",[]],["title/236-6",[350,31.77,546,42.927,830,35.539,2989,55.762]],["name/236-6",[]],["text/236-6",[]],["component/236-6",[]],["title/236-7",[8,16.222,546,48.923,830,40.503]],["name/236-7",[]],["text/236-7",[]],["component/236-7",[]],["title/236-8",[2177,45.248]],["name/236-8",[]],["text/236-8",[]],["component/236-8",[]],["title/236-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/236-9",[]],["text/236-9",[]],["component/236-9",[]],["title/236-10",[8,16.222,746,27.183,1005,22.733]],["name/236-10",[]],["text/236-10",[]],["component/236-10",[]],["title/236-11",[1255,32.348,1457,33.624]],["name/236-11",[]],["text/236-11",[]],["component/236-11",[]],["title/236",[545,55.999,862,41.88,1129,28.716]],["name/236",[545,0.919,862,0.988]],["text/236",[0,2,5,1.989,8,1.778,10,0.631,20,0.89,26,1.16,29,1.862,30,0.688,32,1.157,33,0.806,34,2.401,35,1.533,36,1.257,40,0.529,42,0.7,45,1.287,49,1.107,56,0.757,57,0.886,71,0.83,84,3.165,88,1.688,90,0.715,91,0.904,93,0.895,94,0.936,95,1.022,99,0.768,101,0.763,104,1.939,110,1.798,115,0.904,125,3.111,127,2.486,128,1.625,129,1.822,136,1.013,138,1.279,139,0.569,144,0.68,148,0.529,155,1.036,165,1.038,168,0.813,169,0.904,172,2.368,183,0.637,191,0.607,196,1.202,211,4.138,214,1.492,223,1.265,224,1.418,232,1.265,239,0.747,245,3.286,251,0.774,252,1.771,254,1.065,264,0.968,277,0.782,279,0.721,280,0.717,286,1.643,296,0.652,297,0.877,301,0.645,308,0.649,316,1.378,325,0.992,331,0.83,335,0.914,351,2.478,361,0.73,386,1.592,401,0.719,402,1.073,406,0.963,411,1.206,424,1.119,425,3.502,441,0.965,457,4.372,460,0.677,465,0.669,470,1.272,487,2.106,502,0.706,514,1.704,525,0.708,528,3.132,545,4.539,546,5.686,547,1.69,553,1.721,557,0.919,647,0.965,659,1.173,664,1.244,668,2.025,673,0.782,676,1.047,686,0.619,690,1.743,695,2.358,711,1.755,736,2.354,752,0.803,754,0.686,788,0.93,827,2.115,829,3.322,830,4.707,835,0.848,840,4.291,844,1.315,861,0.904,862,2.068,865,1.519,867,1.038,963,0.82,973,1.173,981,1.244,1005,0.545,1008,0.868,1076,0.745,1110,1.056,1122,2.12,1123,1.119,1127,1.132,1129,0.785,1132,0.733,1201,1.096,1279,0.965,1287,1.014,1421,1.096,1472,0.93,1477,0.877,1492,2.068,1519,1.224,1602,1.418,1639,1.378,1735,0.852,1963,2.376,1967,4.006,2177,1.932,2369,1.345,2636,0.925,2642,0.947,2667,1.378,2716,1.378,2734,2.49,2739,1.378,2850,2.49,2990,1.524,2991,2.753,2992,1.524,2993,1.524,2994,1.524,2995,1.524,2996,1.524,2997,2.753,2998,1.524,2999,1.524,3000,2.753,3001,2.753,3002,1.524,3003,1.418,3004,2.753,3005,1.524,3006,1.524,3007,1.524,3008,1.524,3009,1.524,3010,2.753,3011,1.524,3012,1.524,3013,1.524,3014,2.753,3015,2.753,3016,1.524,3017,1.524,3018,2.753,3019,1.524,3020,2.753,3021,1.524,3022,1.524,3087,1.006,3506,0.985,3507,1.604,3508,1.604,3510,1.604,3512,0.971,3754,3.114,3755,1.132]],["component/236",[7,0.401]],["title/237-1",[402,17.184,1456,33.432]],["name/237-1",[]],["text/237-1",[]],["component/237-1",[]],["title/237-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/237-2",[]],["text/237-2",[]],["component/237-2",[]],["title/237-3",[8,18.856,150,32.262]],["name/237-3",[]],["text/237-3",[]],["component/237-3",[]],["title/237-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/237-4",[]],["text/237-4",[]],["component/237-4",[]],["title/237-5",[2177,45.248]],["name/237-5",[]],["text/237-5",[]],["component/237-5",[]],["title/237-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/237-6",[]],["text/237-6",[]],["component/237-6",[]],["title/237-7",[8,16.222,746,27.183,1005,22.733]],["name/237-7",[]],["text/237-7",[]],["component/237-7",[]],["title/237-8",[1255,32.348,1457,33.624]],["name/237-8",[]],["text/237-8",[]],["component/237-8",[]],["title/237",[178,34.172,1129,32.728,1473,43.651]],["name/237",[677,0.844,1473,0.903]],["text/237",[5,2.98,8,2.221,12,1.833,26,2.317,29,2.219,33,1.804,84,3.118,88,2.188,90,1.599,99,1.718,129,1.65,135,2.365,136,1.48,138,2.556,139,1.272,144,1.522,148,1.183,155,1.283,161,1.366,172,1.513,178,5.003,183,1.426,191,1.357,214,2.179,228,1.797,231,2.428,239,1.671,263,1.706,264,1.934,277,1.749,280,2.587,301,1.444,308,1.451,331,1.857,349,1.873,351,1.584,361,1.634,394,2.251,395,2.234,401,1.608,402,1.608,406,2.417,445,2.203,446,1.783,451,1.79,459,2.188,465,1.497,470,2.54,484,2.322,514,2.929,654,2.477,686,1.385,687,2.405,695,2.812,726,2.159,746,1.458,752,1.797,788,2.081,830,2.173,835,1.898,873,2.304,896,2.251,983,2.561,1005,1.22,1008,1.943,1068,2.452,1076,1.666,1106,1.849,1107,1.889,1129,1.756,1187,2.532,1461,1.933,1472,2.081,1473,3.778,1474,3.171,1475,3.997,1476,5.116,1477,3.165,1478,2.883,1479,2.942,1480,3.171,1481,3.171,1482,3.083,1735,1.907,2177,3.547,2636,2.069,2642,2.118,3087,2.251,3506,2.203,3512,2.173,3513,2.532,3514,2.592,3755,2.532]],["component/237",[7,0.401]],["title/238-1",[402,17.184,1456,33.432]],["name/238-1",[]],["text/238-1",[]],["component/238-1",[]],["title/238-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/238-2",[]],["text/238-2",[]],["component/238-2",[]],["title/238-3",[118,25.347,694,45.892]],["name/238-3",[]],["text/238-3",[]],["component/238-3",[]],["title/238-4",[1145,45.341,1483,35.06]],["name/238-4",[]],["text/238-4",[]],["component/238-4",[]],["title/238-5",[1091,43.832,1145,45.341]],["name/238-5",[]],["text/238-5",[]],["component/238-5",[]],["title/238-6",[88,20.111,468,31.469,532,44.832]],["name/238-6",[]],["text/238-6",[]],["component/238-6",[]],["title/238-7",[525,25.906,1090,38.632,1091,33.087,1145,34.226]],["name/238-7",[]],["text/238-7",[]],["component/238-7",[]],["title/238-8",[8,16.222,30,28.681,150,27.755]],["name/238-8",[]],["text/238-8",[]],["component/238-8",[]],["title/238-9",[104,32.728,264,22.343,686,25.822]],["name/238-9",[]],["text/238-9",[]],["component/238-9",[]],["title/238-10",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/238-10",[]],["text/238-10",[]],["component/238-10",[]],["title/238-11",[2177,45.248]],["name/238-11",[]],["text/238-11",[]],["component/238-11",[]],["title/238-12",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/238-12",[]],["text/238-12",[]],["component/238-12",[]],["title/238-13",[8,16.222,746,27.183,1005,22.733]],["name/238-13",[]],["text/238-13",[]],["component/238-13",[]],["title/238-14",[728,36.562,1078,41.057,3463,57.467]],["name/238-14",[]],["text/238-14",[]],["component/238-14",[]],["title/238-15",[1255,32.348,1457,33.624]],["name/238-15",[]],["text/238-15",[]],["component/238-15",[]],["title/238",[402,11.555,728,28.578,890,32.091,1129,25.581,1133,33.294]],["name/238",[728,0.757,1484,1]],["text/238",[2,0.571,5,0.769,6,1.268,7,0.245,8,1.751,10,1.043,12,0.512,13,1.084,14,0.775,15,2.3,17,0.761,20,0.556,26,0.401,29,1.918,30,1.43,32,1.332,33,0.503,34,1.426,35,0.53,36,0.434,37,1.095,40,2.282,42,0.819,45,1.177,56,0.886,57,1.036,65,0.654,79,2.43,84,0.727,87,1.16,88,0.797,90,1.18,94,0.584,96,0.466,97,0.648,98,1.177,101,1.878,104,0.919,110,0.852,117,0.757,118,3.086,120,1.536,134,2.089,135,0.409,136,1.688,138,1.744,139,1.4,142,0.525,144,1.415,148,0.33,155,0.947,160,0.532,161,0.715,171,0.468,172,2.109,183,0.746,184,0.839,186,2.35,189,0.556,191,2.364,196,1.099,214,1.695,224,0.49,234,0.556,239,0.874,251,0.483,252,0.447,253,0.648,264,0.627,267,1.494,271,2.09,272,0.545,275,0.492,277,0.488,278,0.587,279,1.5,280,0.447,283,0.581,292,1.002,300,0.659,301,0.403,308,1.071,315,2.159,316,1.586,319,1.622,320,1.064,328,0.742,330,1.205,331,0.518,333,0.581,340,0.595,341,0.571,350,0.542,355,1.195,361,0.855,401,1.77,402,1.381,406,1.495,408,0.52,412,0.671,443,0.988,451,0.499,455,0.492,465,0.418,468,2.118,470,0.824,482,1.115,492,2.673,502,0.441,514,2.806,517,0.577,525,1.744,528,1.047,531,0.902,532,1.776,538,2.508,539,0.732,547,0.427,552,0.753,580,0.571,593,0.471,603,1.122,608,0.51,620,0.577,656,1.824,666,0.591,679,1.562,683,2.07,686,2.106,694,1.108,695,0.486,698,0.523,723,0.713,728,4.24,746,1.356,752,0.501,754,0.428,755,0.764,765,0.691,766,0.648,773,0.638,835,2.089,850,1.296,871,0.665,890,3.604,894,0.648,896,0.628,903,0.556,907,0.706,932,0.654,972,0.507,985,1.604,1005,1.53,1008,0.542,1024,1.411,1076,0.871,1078,0.615,1083,0.723,1087,1.869,1089,3.141,1090,1.236,1091,2.538,1092,0.633,1096,0.715,1129,0.49,1133,4.203,1141,0.723,1142,0.753,1143,0.753,1145,4.664,1150,0.988,1151,3.849,1279,1.594,1381,0.753,1390,0.599,1400,0.527,1402,2.44,1416,0.602,1434,0.559,1456,0.431,1475,0.691,1477,1.026,1485,1.659,1488,4.63,1489,1.539,1490,0.623,1491,2.172,1492,0.715,1493,1.539,1494,2.172,1495,1.539,1496,0.821,1497,0.885,1498,0.665,1499,0.691,1500,0.885,1501,2.948,1502,1.659,1503,1.659,1504,2.221,1505,0.885,1506,1.659,1507,0.885,1508,1.356,1509,0.79,1513,0.699,1514,2.889,1515,0.742,1516,0.776,1517,0.715,1518,1.539,1519,0.764,1520,0.643,1521,0.821,1522,0.885,1523,0.839,1524,0.671,1622,0.742,1647,0.659,2177,0.915,2301,1.391,2408,0.821,2808,0.821,3087,0.628,3103,0.885,3287,0.821,3382,0.678,3462,1.659,3463,4.297,3465,1.714,3466,0.839,3468,0.914,3469,0.914,3471,0.839,3512,0.606,3513,0.706,3514,0.723,3515,1.001,3518,1.001,3519,1.001,3520,1.001,3521,1.001,3522,1.001,3523,1.001,3524,1.001,3525,1.001,3755,0.706,3756,2.017,3757,2.848]],["component/238",[7,0.401]],["title/239-1",[402,17.184,1456,33.432]],["name/239-1",[]],["text/239-1",[]],["component/239-1",[]],["title/239-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/239-2",[]],["text/239-2",[]],["component/239-2",[]],["title/239-3",[8,18.856,150,32.262]],["name/239-3",[]],["text/239-3",[]],["component/239-3",[]],["title/239-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/239-4",[]],["text/239-4",[]],["component/239-4",[]],["title/239-5",[2177,45.248]],["name/239-5",[]],["text/239-5",[]],["component/239-5",[]],["title/239-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/239-6",[]],["text/239-6",[]],["component/239-6",[]],["title/239-7",[8,16.222,746,27.183,1005,22.733]],["name/239-7",[]],["text/239-7",[]],["component/239-7",[]],["title/239-8",[191,22.192,984,36.025,1431,31.324,1483,26.465]],["name/239-8",[]],["text/239-8",[]],["component/239-8",[]],["title/239-9",[1255,32.348,1457,33.624]],["name/239-9",[]],["text/239-9",[]],["component/239-9",[]],["title/239",[402,10.417,1129,23.063,1431,38.264,1559,48.053]],["name/239",[1431,0.739,1559,0.928]],["text/239",[0,0.792,3,0.638,5,2.53,6,0.751,8,1.635,10,1.879,13,0.51,15,0.802,17,1.578,26,1.137,29,2.585,32,2.467,33,0.789,34,0.671,40,0.936,45,2.121,56,0.741,84,3.12,87,1.756,88,1.857,90,0.699,101,0.746,104,1.39,105,1.606,112,0.708,113,0.662,116,0.845,117,0.633,118,2.361,125,0.714,129,0.721,135,1.16,136,1.221,138,1.718,143,0.841,148,0.517,150,1.179,154,0.762,155,1.707,161,2.352,169,0.885,172,0.662,183,1.129,189,0.871,191,2.55,196,0.651,211,0.795,214,1.069,220,1.083,228,1.422,234,0.871,239,0.731,242,1.12,252,0.701,255,0.894,264,0.949,271,2.217,272,0.854,275,0.771,277,0.765,279,0.705,288,1.238,292,0.838,297,1.553,301,0.631,308,0.635,319,0.644,322,1.083,331,0.812,349,0.819,351,1.718,354,0.921,357,0.88,361,0.714,402,0.86,406,2.24,408,0.815,431,0.905,451,0.783,464,0.963,465,0.655,470,1.247,502,0.691,514,1.939,567,1.072,586,0.91,593,0.738,654,1.961,656,0.858,663,1.024,668,0.802,678,0.894,679,0.62,682,1.463,686,1.844,695,1.38,719,2.149,746,1.154,752,0.786,754,0.671,772,0.932,779,0.95,830,2.892,834,1.062,835,0.83,861,0.885,863,3.766,864,1.348,893,1.007,1005,1.323,1008,0.849,1068,1.941,1075,0.885,1076,1.319,1106,0.808,1107,0.826,1123,1.095,1129,0.768,1174,1.016,1195,0.921,1279,0.944,1287,0.992,1390,0.938,1431,5.419,1434,2.664,1436,1.261,1441,2.777,1456,0.675,1461,0.845,1468,1.744,1469,0.999,1475,1.083,1477,0.858,1483,2.153,1490,0.977,1498,1.042,1520,1.007,1526,1.961,1527,1.083,1555,1.838,1559,3.705,1561,1.133,1562,1.238,1563,1.387,1578,2.078,1581,2.329,1585,1.838,1622,1.163,1735,0.834,1779,1.12,1880,2.202,2177,1.897,2398,1.163,2477,1.133,2587,1.238,2636,0.905,2642,0.926,2646,1.197,2844,2.51,3023,1.387,3024,1.491,3025,2.51,3027,3.127,3028,1.491,3029,1.491,3030,4.22,3031,2.699,3032,3.439,3033,2.135,3034,3.439,3035,1.387,3037,1.491,3038,1.491,3039,1.491,3040,2.51,3041,1.491,3087,0.984,3382,1.062,3490,1.433,3506,0.963,3512,0.95,3513,1.107,3514,1.133,3526,2.84,3527,1.348,3528,1.433,3529,1.433,3530,2.594,3531,1.569,3532,1.569,3533,1.569,3534,1.569,3536,1.569,3537,1.569,3539,2.84,3540,1.569,3744,4.537,3755,1.107,3758,3.053,3759,1.686]],["component/239",[7,0.401]],["title/240-1",[402,17.184,1456,33.432]],["name/240-1",[]],["text/240-1",[]],["component/240-1",[]],["title/240-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/240-2",[]],["text/240-2",[]],["component/240-2",[]],["title/240-3",[8,18.856,150,32.262]],["name/240-3",[]],["text/240-3",[]],["component/240-3",[]],["title/240-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/240-4",[]],["text/240-4",[]],["component/240-4",[]],["title/240-5",[2177,45.248]],["name/240-5",[]],["text/240-5",[]],["component/240-5",[]],["title/240-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/240-6",[]],["text/240-6",[]],["component/240-6",[]],["title/240-7",[8,16.222,746,27.183,1005,22.733]],["name/240-7",[]],["text/240-7",[]],["component/240-7",[]],["title/240-8",[8,18.856,647,46.771]],["name/240-8",[]],["text/240-8",[]],["component/240-8",[]],["title/240-9",[1255,32.348,1457,33.624]],["name/240-9",[]],["text/240-9",[]],["component/240-9",[]],["title/240-10",[8,12.679,514,18.342,1144,38.239,3550,43.818,3760,44.917]],["name/240-10",[]],["text/240-10",[]],["component/240-10",[]],["title/240-11",[189,37.119,262,38.123,1650,47.184]],["name/240-11",[]],["text/240-11",[]],["component/240-11",[]],["title/240-12",[30,22.418,333,30.31,3544,49.674,3550,43.818,3760,44.917]],["name/240-12",[]],["text/240-12",[]],["component/240-12",[]],["title/240-13",[30,22.418,333,30.31,3550,43.818,3760,44.917,3761,52.259]],["name/240-13",[]],["text/240-13",[]],["component/240-13",[]],["title/240-14",[8,16.222,3550,56.06,3760,57.467]],["name/240-14",[]],["text/240-14",[]],["component/240-14",[]],["title/240-15",[1144,48.923,3550,56.06,3760,57.467]],["name/240-15",[]],["text/240-15",[]],["component/240-15",[]],["title/240",[402,10.417,1129,23.063,3494,54.705,3499,58.768]],["name/240",[3494,1.056,3499,1.135]],["text/240",[0,0.315,3,0.486,5,0.707,8,1.174,10,1.784,12,0.882,13,0.202,14,0.712,17,0.7,23,0.771,24,0.636,26,0.691,29,1.738,30,2.532,32,0.249,33,0.313,34,0.512,40,0.731,42,1.35,45,1.714,56,0.294,57,1.475,58,0.377,79,0.533,82,0.788,84,3.627,87,0.385,88,0.931,101,1.835,104,1.084,105,0.494,118,1.846,125,1.409,129,0.286,133,0.37,134,0.222,135,0.705,136,0.893,138,1.366,143,0.334,144,0.264,146,0.325,150,0.92,154,1.076,155,0.955,161,1.953,163,0.308,164,0.372,168,1.123,169,0.351,172,0.505,174,0.476,181,0.445,183,0.881,188,0.694,189,0.664,190,0.368,191,1.17,192,0.313,199,1.007,211,0.606,214,0.834,224,0.844,227,0.403,228,0.864,239,0.804,242,0.445,248,1.322,251,0.3,252,2.025,255,0.984,257,0.535,262,0.355,264,0.577,271,1.62,272,0.339,275,0.306,277,0.583,286,0.678,287,0.835,293,1.052,296,0.486,301,0.251,308,0.698,316,0.296,320,0.353,325,0.385,331,0.322,349,2.366,351,1.541,361,0.545,394,0.391,401,1.387,402,0.381,403,0.44,406,2.588,415,0.41,439,0.349,451,0.597,464,0.383,465,0.72,470,1.989,474,1.499,482,0.711,484,0.403,514,1.8,517,0.359,525,0.275,531,0.575,547,0.51,549,1.918,557,1.27,575,0.426,578,2.295,586,1.001,593,1.043,596,0.388,599,0.981,609,0.522,620,0.69,640,0.492,647,0.375,649,0.476,652,0.511,656,0.341,672,1.126,678,0.355,679,0.246,686,0.666,690,0.375,694,0.706,695,0.303,698,0.325,708,0.917,719,0.953,723,0.237,726,0.375,729,0.385,745,3.19,746,0.253,752,0.312,754,0.266,790,1.453,827,0.639,830,1.618,833,0.456,834,0.81,835,0.913,859,0.375,861,1.249,873,0.768,895,1.262,907,0.844,922,0.961,931,0.445,933,0.4,949,0.725,982,0.407,1004,0.802,1005,0.587,1008,0.337,1010,1.499,1012,0.456,1048,0.476,1068,1.514,1075,0.675,1076,1.24,1078,0.383,1106,0.321,1107,0.328,1108,0.43,1110,0.41,1114,0.476,1122,0.456,1123,0.435,1129,0.305,1138,1.179,1144,0.875,1187,1.218,1195,0.366,1201,0.426,1211,1.108,1214,0.414,1250,0.445,1255,0.259,1279,1.333,1284,0.476,1287,0.756,1390,0.372,1431,0.333,1434,0.348,1457,0.27,1461,0.336,1475,0.43,1477,0.341,1483,0.778,1490,0.388,1498,0.414,1509,0.492,1514,1.621,1519,0.476,1526,0.826,1527,0.43,1529,0.476,1546,0.501,1555,0.774,1556,0.38,1561,0.45,1585,0.774,1625,1.232,1643,0.468,1691,0.483,1693,0.551,1708,1.157,1735,0.636,1750,0.462,1771,1.525,1783,0.462,1795,0.522,1916,0.569,1924,0.535,1930,1.093,1933,0.492,1950,0.835,2092,0.483,2121,0.569,2177,0.841,2211,0.483,2256,0.501,2312,0.551,2356,0.476,2429,0.551,2477,0.45,2588,0.522,2596,0.551,2626,0.875,2636,0.359,2642,0.368,2679,0.569,2945,0.569,3033,0.468,3040,0.551,3087,0.391,3115,0.551,3129,2.206,3135,1.691,3234,0.511,3311,0.569,3377,0.592,3382,0.422,3394,0.569,3399,0.535,3417,1.137,3494,6.643,3498,0.592,3499,2.537,3500,8.513,3501,3.525,3502,1.093,3506,0.383,3512,0.377,3513,0.44,3514,0.45,3542,1.196,3543,0.623,3544,2.538,3545,0.623,3546,0.623,3547,0.623,3548,1.725,3549,1.725,3550,4.528,3551,0.623,3552,0.623,3553,0.623,3554,0.623,3555,0.623,3557,0.623,3558,0.623,3559,0.623,3560,0.623,3561,0.623,3562,1.196,3563,0.623,3564,0.623,3565,0.623,3566,2.215,3567,1.196,3568,0.623,3569,0.623,3570,0.623,3571,0.511,3572,0.623,3573,1.196,3574,1.196,3575,0.623,3577,0.623,3578,1.725,3579,0.623,3580,0.623,3581,0.623,3582,0.623,3583,0.623,3584,4.206,3585,0.623,3586,0.623,3587,1.725,3588,1.725,3589,0.623,3590,0.623,3591,1.196,3592,0.623,3593,0.623,3594,0.623,3595,0.623,3596,0.623,3597,1.196,3598,1.196,3599,0.623,3600,0.623,3601,0.623,3602,0.623,3652,0.551,3738,0.592,3755,0.44,3760,4.407,3761,1.196,3762,0.67,3763,0.67,3764,1.855,3765,0.67,3766,0.67,3767,0.67,3768,0.67,3769,0.67,3770,0.67,3771,1.855,3772,2.871,3773,0.67,3774,0.67,3775,0.67,3776,1.286,3777,0.67,3778,0.67,3779,0.67,3780,0.67,3781,2.871,3782,0.67,3783,0.67,3784,0.67,3785,0.67,3786,0.67,3787,0.67,3788,0.67,3789,0.67,3790,1.286,3791,0.67,3792,0.67,3793,1.286,3794,0.67,3795,0.67,3796,0.67,3797,0.67,3798,0.67]],["component/240",[7,0.401]],["title/241-1",[402,17.184,1456,33.432]],["name/241-1",[]],["text/241-1",[]],["component/241-1",[]],["title/241-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/241-2",[]],["text/241-2",[]],["component/241-2",[]],["title/241-3",[8,18.856,150,32.262]],["name/241-3",[]],["text/241-3",[]],["component/241-3",[]],["title/241-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/241-4",[]],["text/241-4",[]],["component/241-4",[]],["title/241-5",[2177,45.248]],["name/241-5",[]],["text/241-5",[]],["component/241-5",[]],["title/241-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/241-6",[]],["text/241-6",[]],["component/241-6",[]],["title/241-7",[8,16.222,746,27.183,1005,22.733]],["name/241-7",[]],["text/241-7",[]],["component/241-7",[]],["title/241-8",[1255,32.348,1457,33.624]],["name/241-8",[]],["text/241-8",[]],["component/241-8",[]],["title/241",[402,10.417,1129,23.063,1591,45.657,3042,44.784,3043,33.634]],["name/241",[1591,0.882,3043,0.988]],["text/241",[3,0.93,8,2.144,13,0.743,14,0.944,19,3.122,26,0.916,29,2.405,33,1.15,38,1.244,40,2.068,42,0.998,56,1.08,84,3.737,99,1.9,105,2.17,115,1.29,117,0.923,118,2.046,135,0.935,136,1.015,138,2.77,139,1.407,148,0.754,150,1.647,154,1.111,155,1.418,161,2.703,162,1.596,172,0.965,191,2.373,214,1.979,239,1.066,240,1.633,248,2.601,264,0.764,273,3.13,277,1.115,280,1.022,296,0.93,301,0.92,324,1.614,331,1.184,349,1.194,351,1.01,361,1.041,402,1.387,406,1.318,408,1.189,415,1.506,464,1.404,465,0.954,474,2.686,493,5.599,502,1.007,506,1.633,514,1.392,525,1.01,541,1.746,557,2.275,564,3.625,593,1.867,608,1.164,621,1.633,645,1.875,656,1.251,686,2.029,690,1.376,695,1.111,708,1.215,752,1.145,754,0.978,835,1.21,861,1.29,1005,0.778,1008,1.238,1076,1.062,1091,1.29,1106,1.179,1107,1.205,1109,1.563,1129,1.119,1131,1.424,1150,1.205,1195,1.342,1279,1.376,1475,1.579,1477,1.251,1514,1.673,1517,1.633,1524,1.533,1556,1.395,1566,2.022,1591,4.955,1599,2.022,1600,2.022,1601,2.022,1622,1.696,1735,1.215,1781,1.966,2177,1.935,2342,1.838,2897,1.966,3043,5.961,3044,2.174,3045,2.174,3046,2.174,3047,2.174,3048,2.174,3049,2.174,3050,2.174,3051,2.174,3052,2.174,3053,2.174,3054,2.174,3055,2.174,3056,2.174,3058,3.771,3059,2.174,3060,2.174,3061,2.174,3062,2.174,3087,1.435,3382,1.548,3506,1.404,3512,1.385,3513,1.614,3514,1.652,3755,1.614,3799,2.459]],["component/241",[7,0.401]],["title/242-1",[8,12.679,84,14.343,280,23.358,402,11.555,1456,22.481]],["name/242-1",[]],["text/242-1",[]],["component/242-1",[]],["title/242-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/242-2",[]],["text/242-2",[]],["component/242-2",[]],["title/242-3",[8,18.856,150,32.262]],["name/242-3",[]],["text/242-3",[]],["component/242-3",[]],["title/242-4",[401,41.598]],["name/242-4",[]],["text/242-4",[]],["component/242-4",[]],["title/242-5",[191,29.399,615,42.499]],["name/242-5",[]],["text/242-5",[]],["component/242-5",[]],["title/242-6",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/242-6",[]],["text/242-6",[]],["component/242-6",[]],["title/242-7",[2177,45.248]],["name/242-7",[]],["text/242-7",[]],["component/242-7",[]],["title/242-8",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/242-8",[]],["text/242-8",[]],["component/242-8",[]],["title/242-9",[8,16.222,746,27.183,1005,22.733]],["name/242-9",[]],["text/242-9",[]],["component/242-9",[]],["title/242-10",[1255,32.348,1457,33.624]],["name/242-10",[]],["text/242-10",[]],["component/242-10",[]],["title/242",[615,46.09,937,37.981,1129,28.716]],["name/242",[937,0.896,1528,0.903]],["text/242",[0,0.878,3,0.707,5,2.113,6,0.833,8,1.861,10,1.227,18,0.773,26,1.248,29,3.26,30,2.213,33,0.875,36,0.755,38,2.304,40,1.396,42,0.759,56,0.821,58,1.054,82,1.145,84,3.177,88,1.786,96,0.81,105,1.287,108,1.177,118,1.381,129,0.8,135,1.73,136,1.32,138,1.376,148,1.396,150,0.722,155,1.114,161,3.37,172,0.734,183,2.36,185,2.09,191,1.179,199,1.015,201,1.201,211,0.882,214,1.174,228,1.561,239,1.452,262,0.992,264,0.581,265,1.145,271,2.757,277,0.848,279,1.402,301,0.7,308,0.704,316,0.827,319,1.28,330,2.001,331,0.9,350,0.942,361,0.792,378,2.11,401,0.78,402,0.936,406,2.383,408,0.904,446,0.864,465,0.726,470,1.368,486,4.679,502,0.766,514,3.105,516,1.426,528,0.971,552,0.698,601,1.29,608,1.586,615,3.609,620,1.003,630,1.863,668,1.593,674,1.126,676,1.136,677,1.061,679,1.233,683,0.912,686,1.204,687,2.09,695,1.514,719,2.338,746,0.707,752,0.871,754,0.744,760,2.09,788,1.009,790,0.947,830,1.054,835,0.92,873,1.117,937,2.741,970,1.166,1005,0.591,1008,0.942,1075,0.981,1076,0.808,1106,0.896,1107,0.916,1126,1.189,1127,1.227,1129,0.851,1130,1.054,1134,1.257,1150,2.717,1169,1.201,1201,1.189,1279,2.548,1286,1.372,1305,1.328,1390,2.532,1434,0.971,1461,0.937,1469,1.108,1472,1.009,1475,1.201,1477,0.951,1514,3.775,1528,4.683,1529,1.328,1530,1.372,1531,1.426,1532,1.538,1533,1.242,1534,1.538,1537,1.328,1538,2.071,1540,1.372,1544,2.866,1545,1.29,1546,1.398,1552,1.426,1555,2.018,1556,1.901,1590,3.232,1622,1.29,1735,0.924,1741,2.344,1779,2.225,2177,2.065,2301,1.29,2636,1.003,2642,1.027,3063,4.024,3064,1.653,3065,1.653,3066,1.653,3067,1.653,3068,1.653,3069,1.653,3070,1.653,3071,1.653,3073,4.024,3077,1.653,3079,1.653,3080,1.653,3081,1.653,3082,1.653,3083,2.962,3084,1.653,3085,1.653,3086,1.653,3087,1.091,3382,1.177,3477,2.071,3506,1.068,3512,1.054,3513,1.227,3514,1.257,3605,1.739,3607,1.739,3755,1.227,3800,1.87,3801,1.87,3802,1.87,3803,1.87]],["component/242",[7,0.401]],["title/243-1",[402,17.184,1456,33.432]],["name/243-1",[]],["text/243-1",[]],["component/243-1",[]],["title/243-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/243-2",[]],["text/243-2",[]],["component/243-2",[]],["title/243-3",[8,18.856,150,32.262]],["name/243-3",[]],["text/243-3",[]],["component/243-3",[]],["title/243-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/243-4",[]],["text/243-4",[]],["component/243-4",[]],["title/243-5",[2177,45.248]],["name/243-5",[]],["text/243-5",[]],["component/243-5",[]],["title/243-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/243-6",[]],["text/243-6",[]],["component/243-6",[]],["title/243-7",[8,16.222,746,27.183,1005,22.733]],["name/243-7",[]],["text/243-7",[]],["component/243-7",[]],["title/243-8",[1255,32.348,1457,33.624]],["name/243-8",[]],["text/243-8",[]],["component/243-8",[]],["title/243",[138,34.207,139,18.53,677,47.243]],["name/243",[138,0.611,677,0.844]],["text/243",[5,2.737,7,0.615,8,1.043,17,1.018,26,3.008,29,1.649,33,1.262,34,1.074,37,1.465,40,0.828,58,1.521,84,3.322,88,1.696,90,1.119,101,1.194,110,2.56,113,1.059,129,1.977,135,1.026,136,1.442,138,3.617,142,1.316,144,1.065,146,1.311,148,1.418,150,1.042,155,0.898,161,3.12,163,1.243,170,1.492,172,1.059,180,1.492,183,0.998,191,1.626,196,3.118,199,2.508,205,1.916,214,1.619,215,2.969,228,1.257,239,1.17,264,1.437,271,1.166,277,1.224,279,1.934,280,2.986,301,2.269,316,1.194,331,2.225,333,1.456,351,1.109,361,1.143,401,1.126,402,1.247,406,1.429,408,1.305,445,1.542,459,1.531,465,1.048,470,2.475,474,1.699,484,2.784,508,2.465,514,2.344,521,1.625,525,1.109,531,1.207,547,1.071,556,1.492,570,1.465,593,1.182,608,1.278,630,3.372,677,1.531,686,0.97,695,3.65,719,1.387,728,1.373,732,1.599,745,1.22,752,1.257,760,1.683,864,2.158,865,1.316,910,1.501,932,2.807,949,4.55,950,1.981,1008,1.36,1076,1.166,1091,1.416,1106,1.294,1107,1.322,1114,1.916,1169,2.969,1255,1.045,1390,2.571,1458,2.059,1459,2.219,1460,2.219,1461,1.353,1462,2.219,1463,2.059,1465,1.916,1466,2.219,1467,1.947,1468,1.542,1469,1.599,1470,2.219,1471,2.219,1472,1.456,1477,1.373,1484,1.814,1530,1.981,1661,1.837,1735,1.334,2177,3.257,2348,1.916,2477,1.814,2479,2.018,2634,1.947,2636,1.448,2642,2.539,2646,1.916,3087,2.698,3088,2.386,3089,2.386,3090,2.386,3506,1.542,3512,1.521,3513,1.772,3609,2.51,3755,1.772]],["component/243",[7,0.401]],["title/244-1",[402,17.184,1456,33.432]],["name/244-1",[]],["text/244-1",[]],["component/244-1",[]],["title/244-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/244-2",[]],["text/244-2",[]],["component/244-2",[]],["title/244-3",[8,18.856,150,32.262]],["name/244-3",[]],["text/244-3",[]],["component/244-3",[]],["title/244-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/244-4",[]],["text/244-4",[]],["component/244-4",[]],["title/244-5",[17,23.79,18,26.062,2658,46.286,3610,58.665]],["name/244-5",[]],["text/244-5",[]],["component/244-5",[]],["title/244-6",[2177,45.248]],["name/244-6",[]],["text/244-6",[]],["component/244-6",[]],["title/244-7",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/244-7",[]],["text/244-7",[]],["component/244-7",[]],["title/244-8",[8,16.222,746,27.183,1005,22.733]],["name/244-8",[]],["text/244-8",[]],["component/244-8",[]],["title/244-9",[1255,32.348,1457,33.624]],["name/244-9",[]],["text/244-9",[]],["component/244-9",[]],["title/244",[311,30.628,1609,35.079,1610,36.54,3228,44.782]],["name/244",[1610,0.599,1612,0.551,3228,0.734]],["text/244",[3,1.069,8,1.671,10,3.039,13,0.855,17,1.066,18,1.168,26,1.791,32,1.787,34,1.125,45,2.593,79,1.172,84,3.176,88,0.791,99,1.259,105,1.086,109,2.114,112,1.186,113,1.109,117,1.061,118,0.858,121,1.445,125,1.198,129,1.209,136,0.673,138,1.161,139,0.932,144,1.116,148,0.867,155,3.373,157,2.04,168,1.333,170,1.563,172,1.109,174,2.007,183,1.778,191,0.995,206,1.835,214,2.908,226,1.65,239,1.225,247,1.563,249,1.361,251,1.268,252,1.999,255,1.499,264,0.879,266,1.924,277,1.282,296,2.373,301,2.349,308,1.064,311,2.335,316,1.251,320,1.491,331,1.361,335,1.499,361,1.198,391,2.249,402,0.989,406,0.874,442,1.835,460,1.109,465,1.867,470,1.964,487,1.141,502,1.158,514,1.57,547,1.122,557,1.508,567,1.798,569,2.075,608,1.339,617,1.438,679,1.769,686,1.728,695,1.278,708,1.398,752,1.317,754,1.125,760,1.763,863,2.075,871,1.747,907,1.856,922,2.114,963,1.344,972,2.959,1005,0.894,1008,1.424,1015,1.978,1062,1.798,1075,1.483,1076,1.221,1137,1.877,1421,3.058,1431,4.122,1441,3.193,1477,1.438,1562,2.075,1578,3.273,1581,2.157,1609,1.572,1610,4.809,1611,2.972,1612,1.508,1613,2.325,1614,2.325,1619,2.04,1620,2.972,1623,2.157,1735,1.398,1880,3.47,2005,2.402,2006,2.402,2177,2.847,2374,3.317,2636,1.516,2642,1.553,2658,2.075,3087,1.65,3228,4.456,3260,6.292,3391,2.26,3506,1.615,3512,1.593,3611,2.63,3612,2.63,3613,4.473,3614,2.63,3615,4.473,3616,2.63,3617,2.63,3618,2.63,3619,2.63,3755,1.856]],["component/244",[7,0.401]],["title/245-1",[402,17.184,1456,33.432]],["name/245-1",[]],["text/245-1",[]],["component/245-1",[]],["title/245-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/245-2",[]],["text/245-2",[]],["component/245-2",[]],["title/245-3",[8,18.856,150,32.262]],["name/245-3",[]],["text/245-3",[]],["component/245-3",[]],["title/245-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/245-4",[]],["text/245-4",[]],["component/245-4",[]],["title/245-5",[2177,45.248]],["name/245-5",[]],["text/245-5",[]],["component/245-5",[]],["title/245-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/245-6",[]],["text/245-6",[]],["component/245-6",[]],["title/245-7",[8,16.222,746,27.183,1005,22.733]],["name/245-7",[]],["text/245-7",[]],["component/245-7",[]],["title/245-8",[1255,32.348,1457,33.624]],["name/245-8",[]],["text/245-8",[]],["component/245-8",[]],["title/245",[105,21.58,311,27.283,1468,32.091,1609,31.248,1755,38.752]],["name/245",[1612,0.793,1754,0.977]],["text/245",[5,2.47,8,1.463,13,1.227,14,2.49,17,3.053,18,1.677,26,2.415,84,3.168,88,2.264,105,2.49,118,1.231,129,1.736,136,1.542,138,2.663,139,1.339,148,1.245,155,3.759,168,1.914,172,1.593,191,1.428,214,2.835,224,1.848,228,1.891,239,1.759,264,1.262,271,1.753,277,1.841,301,1.52,308,1.527,316,1.796,331,1.954,361,1.719,391,1.899,402,1.333,406,2.004,460,1.593,465,1.576,470,2.647,487,1.638,514,3.017,547,1.611,557,2.165,608,1.922,617,2.065,679,2.385,686,2.329,695,1.835,708,2.007,752,1.891,754,1.615,930,2.664,963,1.93,1005,1.284,1008,2.045,1075,3.401,1076,1.753,1137,2.695,1279,2.272,1421,4.122,1468,6.151,1472,2.19,1477,2.065,1612,2.165,1735,2.007,1754,2.664,1755,6.967,1756,3.338,2177,3.671,2636,2.177,2642,2.229,3087,2.369,3194,3.449,3382,2.556,3506,2.318,3512,2.287,3620,3.776,3621,3.776,3622,3.776,3755,2.664]],["component/245",[7,0.401]],["title/246-1",[402,17.184,1456,33.432]],["name/246-1",[]],["text/246-1",[]],["component/246-1",[]],["title/246-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/246-2",[]],["text/246-2",[]],["component/246-2",[]],["title/246-3",[8,18.856,150,32.262]],["name/246-3",[]],["text/246-3",[]],["component/246-3",[]],["title/246-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/246-4",[]],["text/246-4",[]],["component/246-4",[]],["title/246-5",[2177,45.248]],["name/246-5",[]],["text/246-5",[]],["component/246-5",[]],["title/246-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/246-6",[]],["text/246-6",[]],["component/246-6",[]],["title/246-7",[8,16.222,746,27.183,1005,22.733]],["name/246-7",[]],["text/246-7",[]],["component/246-7",[]],["title/246-8",[1255,32.348,1457,33.624]],["name/246-8",[]],["text/246-8",[]],["component/246-8",[]],["title/246",[311,34.906,1609,39.979,3623,54.829]],["name/246",[1612,0.793,3623,1.135]],["text/246",[5,2.417,8,1.431,10,1.446,13,1.194,17,0.849,18,0.93,25,1.513,26,0.838,29,2.835,32,2.681,33,1.053,40,0.691,45,2.18,63,1.304,79,0.933,84,3.613,87,2.272,88,0.63,90,0.933,105,2.027,110,1.668,117,0.845,118,1.198,125,0.954,129,0.963,136,0.536,148,0.691,150,0.869,154,1.017,155,1.313,161,2.556,183,2.345,189,1.162,191,1.857,214,1.848,225,1.495,228,1.049,234,1.162,239,1.712,242,1.495,251,1.01,264,0.7,271,2.279,272,1.139,279,1.652,292,1.118,297,1.145,301,0.843,319,0.86,331,1.084,349,1.093,351,0.925,356,1.098,361,0.954,386,1.151,402,0.812,406,0.696,408,1.088,431,1.207,464,1.286,470,1.613,487,0.908,502,0.922,508,1.201,514,1.289,593,0.985,617,1.145,654,1.446,656,1.145,663,1.367,668,1.07,682,1.893,686,1.895,694,1.236,695,2.385,719,1.157,746,1.494,752,1.049,754,1.571,772,1.244,779,1.268,782,1.756,830,2.225,863,4.654,893,1.345,963,1.07,1005,1.249,1075,1.181,1195,1.229,1279,1.26,1421,2.511,1431,4.518,1434,2.739,1436,2.952,1441,2.622,1456,0.901,1468,1.286,1486,1.851,1509,1.652,1526,1.446,1527,1.446,1555,1.356,1571,1.913,1578,1.532,1581,3.013,1585,3.177,1612,1.201,1665,1.851,1691,1.624,1735,1.952,1747,1.624,1880,1.624,2177,1.021,2309,1.446,2477,1.513,2587,1.652,2636,1.207,2642,1.236,2684,3.08,3023,1.851,3025,1.851,3027,1.683,3030,1.851,3032,1.851,3033,1.575,3034,4.339,3035,1.851,3087,1.314,3382,1.417,3504,1.913,3506,1.286,3512,1.268,3513,1.478,3514,1.513,3527,1.8,3528,1.913,3529,1.913,3530,1.913,3623,5.504,3624,4.484,3625,2.094,3626,2.094,3627,2.094,3628,2.094,3629,2.094,3630,2.094,3631,2.094,3632,2.094,3633,2.094,3634,2.094,3636,2.094,3637,2.094,3744,4.665,3755,1.478,3804,2.251]],["component/246",[7,0.401]],["title/247-1",[402,17.184,1456,33.432]],["name/247-1",[]],["text/247-1",[]],["component/247-1",[]],["title/247-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/247-2",[]],["text/247-2",[]],["component/247-2",[]],["title/247-3",[8,18.856,150,32.262]],["name/247-3",[]],["text/247-3",[]],["component/247-3",[]],["title/247-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/247-4",[]],["text/247-4",[]],["component/247-4",[]],["title/247-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/247-5",[]],["text/247-5",[]],["component/247-5",[]],["title/247-6",[10,23.093,333,34.025,706,36.279,1758,36.279]],["name/247-6",[]],["text/247-6",[]],["component/247-6",[]],["title/247-7",[1758,48.06,3257,61.318]],["name/247-7",[]],["text/247-7",[]],["component/247-7",[]],["title/247-8",[8,16.222,746,27.183,1005,22.733]],["name/247-8",[]],["text/247-8",[]],["component/247-8",[]],["title/247-9",[1255,32.348,1457,33.624]],["name/247-9",[]],["text/247-9",[]],["component/247-9",[]],["title/247",[161,17.945,968,37.579,1758,44.317,1759,26.024]],["name/247",[1758,0.856,1759,0.764]],["text/247",[3,0.484,6,1.056,8,1.769,10,2.011,13,0.716,17,1.83,23,0.532,26,0.476,29,2.921,30,0.946,32,1.535,34,0.509,35,2.033,36,1.336,37,0.694,40,0.392,42,0.962,56,0.562,57,0.657,58,1.335,71,0.616,84,3.604,88,0.926,90,0.53,92,1.83,104,0.582,110,1.001,113,0.93,115,1.243,117,1.243,118,2.262,125,0.542,127,0.747,129,0.547,133,0.707,135,0.486,136,0.564,138,0.525,142,0.624,143,1.652,147,0.747,154,1.071,155,1.614,161,2.777,165,0.77,168,0.603,172,2.379,183,0.876,188,0.69,191,0.45,195,0.721,196,0.915,236,0.503,239,0.554,251,1.063,252,1.376,253,0.77,263,0.566,271,1.43,272,0.647,275,1.083,279,0.535,286,0.675,289,0.882,293,0.726,301,0.479,319,1.578,335,0.678,341,0.678,349,0.621,350,0.644,356,0.624,357,1.237,402,1.129,406,1.023,431,1.776,441,0.716,451,0.594,455,1.083,468,0.56,470,2.242,482,1.31,486,3.115,502,1.356,508,0.682,517,0.686,549,0.591,580,1.756,603,0.711,604,0.644,608,1.122,630,1.318,656,0.651,684,1.536,686,2.362,690,1.327,695,0.578,698,1.608,706,1.904,719,0.657,730,0.849,746,0.896,751,0.908,752,0.596,754,0.509,786,0.627,859,0.716,873,0.764,907,2.173,932,2.011,943,0.777,968,2.015,980,0.882,1005,1.047,1011,2.849,1012,0.871,1066,0.635,1068,3.492,1076,1.024,1127,0.84,1195,0.698,1200,0.923,1348,0.939,1361,0.939,1388,0.998,1400,0.627,1461,1.188,1468,1.354,1483,1.389,1520,0.764,1524,0.798,1528,0.777,1530,0.939,1538,0.79,1540,0.939,1544,0.805,1620,0.79,1643,0.895,1735,0.632,1741,0.895,1758,6.324,1759,2.122,1764,1.052,1765,1.052,1767,1.052,1780,0.976,1783,0.882,1827,1.613,1942,1.344,1963,0.976,1996,1.683,2016,0.798,2045,0.882,2050,1.71,2067,0.998,2137,0.813,2177,0.58,2237,1.023,2336,0.895,2369,0.998,2422,0.711,2559,1.949,2588,0.998,2593,1.052,2619,0.783,2626,0.871,2636,0.686,2642,0.703,2682,1.052,2694,1.052,2837,1.052,2851,4.985,2926,1.052,3257,4.824,3287,1.808,3466,2.582,3471,2.582,3477,1.465,3506,0.731,3512,0.721,3624,1.087,3638,1.19,3639,1.19,3640,1.19,3647,1.19,3648,2.014,3649,1.19,3650,2.014,3651,1.19,3652,1.052,3653,1.087,3654,1.087,3655,1.19,3656,1.19,3657,1.19,3660,2.204,3661,1.19,3662,1.19,3663,1.19,3664,1.19,3665,1.19,3666,4.513,3667,4.513,3668,2.204,3669,2.204,3670,1.19,3671,1.19,3672,1.19,3673,1.19,3674,1.19,3675,1.19,3676,1.19,3677,1.19,3678,1.19,3679,1.19,3680,1.19,3681,1.19,3682,1.19,3683,1.19,3684,1.19,3755,0.84,3805,1.279,3806,1.279,3807,1.279,3808,1.279,3809,1.279,3810,1.279,3811,1.279,3812,1.279,3813,1.279,3814,1.279,3815,1.279,3816,1.279,3817,1.279,3818,1.279]],["component/247",[7,0.401]],["title/248-1",[402,17.184,1456,33.432]],["name/248-1",[]],["text/248-1",[]],["component/248-1",[]],["title/248-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/248-2",[]],["text/248-2",[]],["component/248-2",[]],["title/248-3",[8,18.856,150,32.262]],["name/248-3",[]],["text/248-3",[]],["component/248-3",[]],["title/248-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/248-4",[]],["text/248-4",[]],["component/248-4",[]],["title/248-5",[8,16.222,746,27.183,1005,22.733]],["name/248-5",[]],["text/248-5",[]],["component/248-5",[]],["title/248-6",[1255,32.348,1457,33.624]],["name/248-6",[]],["text/248-6",[]],["component/248-6",[]],["title/248",[161,13.854,968,30.686,1431,19.421,1647,23.953,1759,20.09,3027,29.233,3234,29.828,3685,29.828]],["name/248",[1431,0.513,1759,0.531,3685,0.788]],["text/248",[5,3.419,8,1.404,13,1.166,32,3.334,46,2.504,64,5.193,76,2.159,77,2.002,84,3.348,91,2.023,93,2.002,118,1.17,124,2.625,128,2.012,130,2.118,136,1.48,161,4.581,167,2.883,168,1.818,169,2.023,214,1.351,242,2.561,253,2.322,263,1.706,271,3.378,272,1.952,275,1.763,277,1.749,311,3.798,349,1.873,386,1.971,402,1.608,406,3.042,451,1.79,502,2.548,608,2.946,647,2.159,665,1.833,679,1.419,686,1.385,754,1.534,786,3.831,873,2.304,903,4.038,910,3.46,963,1.833,968,4.376,972,1.818,998,2.504,1005,1.22,1200,2.782,1431,1.915,1461,3.119,1647,3.811,1672,3.171,2191,3.171,2493,3.008,2619,2.362,3027,5.846,3033,2.698,3234,5.965,3450,2.383,3459,2.942,3685,4.746,3686,3.587,3687,3.587,3688,3.587,3689,3.587,3690,3.277,3691,3.277,3692,3.083,3693,3.083,3694,3.083,3695,3.587,3696,3.587,3697,3.587]],["component/248",[7,0.401]],["title/249-1",[402,17.184,1456,33.432]],["name/249-1",[]],["text/249-1",[]],["component/249-1",[]],["title/249-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/249-2",[]],["text/249-2",[]],["component/249-2",[]],["title/249-3",[1145,45.341,1483,35.06]],["name/249-3",[]],["text/249-3",[]],["component/249-3",[]],["title/249-4",[1091,43.832,1145,45.341]],["name/249-4",[]],["text/249-4",[]],["component/249-4",[]],["title/249-5",[88,20.111,468,31.469,532,44.832]],["name/249-5",[]],["text/249-5",[]],["component/249-5",[]],["title/249-6",[8,18.856,150,32.262]],["name/249-6",[]],["text/249-6",[]],["component/249-6",[]],["title/249-7",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/249-7",[]],["text/249-7",[]],["component/249-7",[]],["title/249-8",[36,25.454,88,17.646,148,19.348,161,22.344]],["name/249-8",[]],["text/249-8",[]],["component/249-8",[]],["title/249-9",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/249-9",[]],["text/249-9",[]],["component/249-9",[]],["title/249-10",[8,16.222,746,27.183,1005,22.733]],["name/249-10",[]],["text/249-10",[]],["component/249-10",[]],["title/249-11",[1255,32.348,1457,33.624]],["name/249-11",[]],["text/249-11",[]],["component/249-11",[]],["title/249",[161,13.854,968,30.686,1759,20.09,3092,44.672,3093,44.672,3094,31.263]],["name/249",[1759,0.531,3092,0.734,3093,0.734]],["text/249",[3,0.681,8,0.731,10,2.76,12,0.856,13,0.544,15,0.856,29,1.574,34,0.716,40,0.993,56,0.791,84,3.83,88,0.906,97,1.95,99,1.443,101,0.796,104,2.831,110,0.76,117,0.676,118,2.45,120,2.381,135,0.684,136,1.05,154,0.814,161,3.885,171,0.783,172,2.116,188,0.971,191,0.633,194,1.059,196,1.25,239,0.78,252,1.835,270,1.299,271,0.778,272,0.911,275,0.823,279,0.753,280,0.748,296,0.681,315,1.084,316,1.432,319,0.688,333,0.971,352,2.126,386,0.92,402,1.109,406,1.001,451,0.835,460,0.706,465,0.699,468,1.418,502,1.326,514,1.76,525,0.739,532,2.02,538,1.259,539,1.225,553,2.439,630,2.454,656,0.916,686,1.163,688,6.471,728,4.753,730,4.129,746,0.681,752,0.839,754,0.716,968,1.579,1005,0.569,1087,2.126,1091,0.944,1106,0.863,1107,0.882,1141,1.21,1142,1.259,1143,1.259,1145,4.382,1150,0.882,1151,4.082,1154,2.204,1169,2.835,1195,0.983,1381,1.259,1402,1.225,1434,0.934,1456,0.72,1461,0.903,1488,3.239,1489,1.373,1490,1.043,1491,2.47,1492,1.195,1493,2.47,1494,1.373,1495,2.47,1496,1.373,1498,1.113,1499,1.156,1524,1.123,1735,0.89,1759,2.267,1780,1.373,1827,1.225,1889,1.48,2244,1.53,2356,2.299,2455,1.278,3092,3.133,3093,3.828,3094,3.528,3095,1.592,3096,1.592,3097,1.592,3098,1.592,3099,1.592,3100,1.592,3101,2.863,3102,1.592,3103,1.48,3104,2.863,3105,1.592,3106,1.592,3107,1.592,3108,1.592,3109,1.592,3110,1.592,3111,1.592,3112,1.592,3113,1.592,3114,1.592,3115,1.48,3116,1.592,3506,1.028,3512,1.014,3755,1.182]],["component/249",[7,0.401]],["title/250-1",[402,17.184,1456,33.432]],["name/250-1",[]],["text/250-1",[]],["component/250-1",[]],["title/250-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/250-2",[]],["text/250-2",[]],["component/250-2",[]],["title/250-3",[8,18.856,150,32.262]],["name/250-3",[]],["text/250-3",[]],["component/250-3",[]],["title/250-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/250-4",[]],["text/250-4",[]],["component/250-4",[]],["title/250-5",[2177,45.248]],["name/250-5",[]],["text/250-5",[]],["component/250-5",[]],["title/250-6",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/250-6",[]],["text/250-6",[]],["component/250-6",[]],["title/250-7",[8,16.222,746,27.183,1005,22.733]],["name/250-7",[]],["text/250-7",[]],["component/250-7",[]],["title/250-8",[1255,32.348,1457,33.624]],["name/250-8",[]],["text/250-8",[]],["component/250-8",[]],["title/250",[1128,32.569,1558,47.283,1786,33.829]],["name/250",[1558,0.776,1786,0.798]],["text/250",[3,0.652,5,2.799,6,0.768,8,1.178,10,1.911,14,0.662,15,0.82,17,2.276,18,0.712,26,1.16,29,2.62,30,1.243,32,0.641,33,0.806,40,1.307,49,1.107,56,0.757,63,1.804,84,3.606,88,2.205,99,0.768,101,1.884,105,0.662,110,0.728,113,0.677,117,0.647,118,2.228,121,0.881,129,0.737,130,0.947,135,1.984,136,1.013,138,1.749,155,1.036,161,1.849,168,0.813,169,0.904,172,0.677,181,1.145,183,1.151,191,0.607,196,0.666,203,0.936,211,0.813,214,1.492,228,1.984,239,0.747,251,2.707,252,0.717,264,0.536,271,1.84,277,0.782,278,0.941,279,0.721,280,0.717,301,0.645,311,1.512,316,0.763,319,0.659,320,0.909,331,0.83,350,2.145,361,1.319,395,0.999,402,1.241,406,2.27,408,0.834,420,1.107,421,0.86,459,0.978,461,1.265,465,0.669,470,1.272,486,3.423,514,2.865,525,0.708,531,0.771,552,0.644,558,1.086,593,0.755,608,0.816,615,0.877,618,1.132,665,1.481,670,0.845,679,1.146,684,0.8,686,1.119,695,0.779,726,2.384,740,1.244,746,0.652,752,0.803,754,0.686,774,1.056,779,0.971,788,0.93,865,0.841,893,1.03,896,3.521,903,0.89,931,1.145,968,0.841,1005,0.545,1008,0.868,1017,1.075,1075,0.904,1076,1.84,1106,1.493,1107,1.526,1128,1.608,1150,2.557,1279,0.965,1390,0.959,1400,0.845,1434,0.895,1453,1.418,1461,0.864,1465,1.224,1469,1.022,1477,0.877,1483,1.787,1517,2.068,1524,1.075,1528,1.047,1537,1.224,1538,1.925,1543,1.265,1544,1.086,1546,1.289,1551,1.056,1555,1.875,1556,1.767,1558,4.579,1565,1.224,1590,1.224,1620,1.065,1726,2.328,1735,0.852,1741,1.206,1770,1.315,1787,2.429,1788,1.418,1789,1.345,1790,1.189,1794,1.265,1795,2.429,1796,1.345,1797,1.418,1798,1.345,1799,1.345,1800,1.345,1801,1.265,1802,1.265,1803,1.224,1804,1.345,1805,1.265,1806,1.289,1807,1.189,1808,1.224,1809,1.265,1810,1.418,1811,1.265,1812,1.345,1813,1.265,1815,2.561,2177,1.932,2211,1.244,2352,2.12,2613,1.289,2629,1.378,2636,0.925,2642,0.947,2736,1.289,3087,1.006,3117,1.378,3118,1.378,3119,1.378,3120,1.378,3121,1.524,3382,1.086,3477,1.065,3506,0.985,3512,0.971,3513,1.132,3514,1.159,3648,1.465,3650,2.646,3652,1.418,3653,2.646,3654,1.465,3699,1.604,3755,1.132,3819,1.724]],["component/250",[7,0.401]],["title/251-1",[402,17.184,1456,33.432]],["name/251-1",[]],["text/251-1",[]],["component/251-1",[]],["title/251-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/251-2",[]],["text/251-2",[]],["component/251-2",[]],["title/251-3",[8,18.856,150,32.262]],["name/251-3",[]],["text/251-3",[]],["component/251-3",[]],["title/251-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/251-4",[]],["text/251-4",[]],["component/251-4",[]],["title/251-5",[2177,45.248]],["name/251-5",[]],["text/251-5",[]],["component/251-5",[]],["title/251-6",[136,15.007,402,12.971,666,34.642,723,22.293]],["name/251-6",[]],["text/251-6",[]],["component/251-6",[]],["title/251-7",[8,16.222,746,27.183,1005,22.733]],["name/251-7",[]],["text/251-7",[]],["component/251-7",[]],["title/251-8",[1255,32.348,1457,33.624]],["name/251-8",[]],["text/251-8",[]],["component/251-8",[]],["title/251",[1128,32.569,1786,33.829,1819,55.503]],["name/251",[1786,0.798,1819,0.911]],["text/251",[3,0.938,5,2.923,6,0.599,8,1.136,10,2.294,14,1.934,17,2.145,18,0.555,26,1.286,29,2.586,30,1.378,32,1.871,36,0.542,40,1.318,42,0.545,56,0.59,79,1.781,84,3.7,88,2.146,99,0.599,101,0.594,105,0.953,112,0.564,117,0.931,118,1.901,125,0.569,129,0.575,134,0.821,135,1.914,136,1.023,138,1.419,144,0.53,146,0.652,148,0.412,150,0.958,154,0.607,155,0.825,158,1.199,161,2.015,169,0.705,172,0.973,183,1.589,191,0.473,196,1.659,199,0.729,203,0.729,205,0.954,211,0.634,214,0.869,221,0.823,228,1.155,234,0.694,239,0.582,251,0.603,254,1.533,264,0.418,267,0.705,271,1.492,277,0.609,279,0.562,280,0.559,301,0.928,311,1.204,320,1.308,331,0.647,361,0.569,388,0.729,391,0.628,401,0.56,402,1.036,406,2.24,408,0.65,414,0.927,420,0.863,431,0.721,455,0.614,458,0.767,465,0.522,470,1.013,486,3.554,502,2.062,508,0.717,514,2.366,520,0.863,531,0.601,549,0.621,552,0.502,557,0.717,558,0.846,577,1.863,593,0.588,615,1.757,618,0.882,647,1.388,656,0.683,665,0.639,670,0.658,679,0.494,682,0.644,684,0.624,686,1.241,695,0.607,726,2.406,746,0.508,752,0.626,754,0.535,772,0.743,779,0.757,788,0.725,835,0.661,893,1.481,896,3.319,903,0.694,933,0.803,964,0.94,1005,0.425,1008,0.677,1075,0.705,1076,0.58,1106,1.189,1107,1.215,1125,1.481,1128,0.694,1139,0.816,1150,2.105,1168,0.914,1214,0.83,1287,0.79,1301,1.82,1352,1.048,1390,1.379,1434,0.697,1461,0.674,1469,0.796,1477,0.683,1483,0.564,1528,0.816,1538,0.83,1543,0.986,1544,1.562,1551,0.823,1555,1.493,1556,0.762,1558,1.294,1565,0.954,1585,2.08,1669,0.914,1726,1.854,1735,1.226,1741,0.94,1750,0.927,1759,0.69,1787,1.048,1790,0.927,1794,0.986,1798,1.048,1799,1.048,1800,1.048,1801,0.986,1802,0.986,1803,0.954,1804,1.048,1805,0.986,1807,0.927,1808,0.954,1809,0.986,1811,0.986,1812,1.048,1813,0.986,1819,5.69,1820,2.039,1821,2.535,1822,2.84,1823,2.694,1824,1.105,1825,1.105,1827,1.688,1831,1.105,1832,1.105,1838,1.105,1843,1.854,1844,1.105,1845,1.048,1846,0.903,1847,1.105,1848,1.105,1849,0.954,1851,1.934,1852,0.846,1853,1.105,2076,0.83,2177,1.567,2211,0.969,2613,1.004,2636,0.721,2642,0.738,2736,1.004,3087,0.784,3117,1.074,3118,1.074,3119,1.074,3120,1.074,3477,0.83,3506,0.767,3512,0.757,3700,3.213,3701,2.307,3702,1.25,3703,1.25,3704,1.25,3705,1.25,3706,1.25,3707,1.25,3708,1.25,3709,1.25,3710,1.25,3711,1.25,3712,1.25,3713,1.25,3714,1.25,3715,1.25,3755,0.882]],["component/251",[7,0.401]],["title/252-1",[343,64.077]],["name/252-1",[]],["text/252-1",[]],["component/252-1",[]],["title/252-2",[192,33.622,402,14.783,690,40.238]],["name/252-2",[]],["text/252-2",[]],["component/252-2",[]],["title/252-3",[402,17.184,1129,38.042]],["name/252-3",[]],["text/252-3",[]],["component/252-3",[]],["title/252-4",[402,17.184,1128,43.146]],["name/252-4",[]],["text/252-4",[]],["component/252-4",[]],["title/252-5",[311,34.906,402,14.783,1609,39.979]],["name/252-5",[]],["text/252-5",[]],["component/252-5",[]],["title/252-6",[161,25.466,402,14.783,1759,36.93]],["name/252-6",[]],["text/252-6",[]],["component/252-6",[]],["title/252-7",[2,38.123,402,14.783,3450,44.422]],["name/252-7",[]],["text/252-7",[]],["component/252-7",[]],["title/252-8",[264,22.343,402,14.783,1936,41.347]],["name/252-8",[]],["text/252-8",[]],["component/252-8",[]],["title/252-9",[402,17.184,1040,44.562]],["name/252-9",[]],["text/252-9",[]],["component/252-9",[]],["title/252",[7,19.043,402,17.184]],["name/252",[631,1.45]],["text/252",[2,1.412,3,1.727,5,1.014,8,1.031,12,2.171,13,1.381,14,1.754,15,1.265,17,1.723,18,1.887,20,1.375,23,1.107,26,2.65,29,1.629,34,2.387,40,0.817,52,1.954,56,2.007,64,1.767,71,1.281,77,1.382,84,1.532,88,0.745,98,1.553,104,1.212,105,1.754,110,1.124,117,0.999,118,0.807,125,1.935,128,1.389,134,1.987,135,1.736,136,1.087,144,1.05,146,2.914,148,1.84,150,1.028,151,2.823,155,0.885,158,1.287,160,1.316,161,2.837,162,1.728,163,2.103,178,1.265,183,1.689,185,1.66,192,2.137,196,1.028,221,1.63,224,1.212,248,1.226,252,1.107,255,2.423,264,2.212,275,2.087,282,1.444,286,1.404,296,1.007,297,1.354,308,2.257,311,3.455,343,1.71,391,1.245,401,1.11,402,2.691,465,1.773,514,1.959,531,1.19,547,1.056,548,1.59,620,1.428,643,1.953,647,1.49,665,1.265,678,1.412,679,0.979,680,1.235,686,0.956,690,2.557,698,1.293,719,2.347,728,2.323,729,1.531,865,2.228,906,2.189,931,1.767,972,1.255,1040,2.436,1128,2.359,1129,4.492,1306,1.953,1431,1.322,1468,1.52,1477,1.354,1484,3.07,1555,2.751,1558,1.389,1609,3.957,1610,1.542,1692,1.99,1755,1.836,1758,1.531,1759,3.655,1779,1.767,1819,1.63,1821,1.953,1936,1.531,1937,2.189,1940,2.189,1942,1.51,1943,1.99,1944,3.756,1945,1.577,1946,1.953,2234,3.195,2477,1.789,2673,1.862,2934,1.92,3092,1.89,3093,1.89,3122,2.353,3123,2.353,3124,2.353,3125,2.353,3126,2.353,3228,1.89,3450,3.708,3571,3.484,3623,2.03,3685,2.03,3820,2.662]],["component/252",[7,0.401]],["title/253-1",[402,17.184,1456,33.432]],["name/253-1",[]],["text/253-1",[]],["component/253-1",[]],["title/253-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/253-2",[]],["text/253-2",[]],["component/253-2",[]],["title/253-3",[8,18.856,150,32.262]],["name/253-3",[]],["text/253-3",[]],["component/253-3",[]],["title/253-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/253-4",[]],["text/253-4",[]],["component/253-4",[]],["title/253-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/253-5",[]],["text/253-5",[]],["component/253-5",[]],["title/253-6",[8,16.222,746,27.183,1005,22.733]],["name/253-6",[]],["text/253-6",[]],["component/253-6",[]],["title/253-7",[1255,32.348,1457,33.624]],["name/253-7",[]],["text/253-7",[]],["component/253-7",[]],["title/253",[2,24.457,64,47.596,402,9.484,3416,32.742,3450,44.297]],["name/253",[64,0.686,3416,0.734,3450,0.639]],["text/253",[5,3.4,8,1.393,10,1.398,12,1.815,13,1.154,15,1.815,32,3.315,40,1.171,64,6.503,84,3.42,104,1.739,112,1.602,118,1.158,136,1.469,154,1.726,155,1.27,161,3.906,169,2.003,185,2.382,196,1.474,239,1.655,242,2.536,271,3.355,272,1.933,308,2.923,402,1.598,406,2.757,414,2.634,464,2.181,465,2.396,502,1.564,531,2.759,608,1.808,647,2.138,656,1.942,672,2.319,679,1.405,686,2.79,752,1.779,754,2.456,758,2.599,786,3.806,903,4.011,993,1.982,1005,1.208,1066,1.896,1195,2.085,1287,2.245,1461,1.914,1483,1.602,1526,2.453,1527,2.453,1596,2.855,1735,1.888,2103,2.802,3033,2.671,3450,6.474,3451,3.053,3459,5.925,3460,4.934,3461,4.934,3506,2.181,3512,2.152,3571,2.913,3690,3.245,3691,3.245,3692,3.053,3693,3.053,3694,3.053,3716,3.552,3717,3.245,3718,5.245,3719,3.245,3720,3.245,3721,3.245,3722,3.245,3723,3.245,3724,3.245,3755,2.507]],["component/253",[7,0.401]],["title/254-1",[402,17.184,1456,33.432]],["name/254-1",[]],["text/254-1",[]],["component/254-1",[]],["title/254-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/254-2",[]],["text/254-2",[]],["component/254-2",[]],["title/254-3",[8,18.856,150,32.262]],["name/254-3",[]],["text/254-3",[]],["component/254-3",[]],["title/254-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/254-4",[]],["text/254-4",[]],["component/254-4",[]],["title/254-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/254-5",[]],["text/254-5",[]],["component/254-5",[]],["title/254-6",[8,16.222,746,27.183,1005,22.733]],["name/254-6",[]],["text/254-6",[]],["component/254-6",[]],["title/254-7",[1255,32.348,1457,33.624]],["name/254-7",[]],["text/254-7",[]],["component/254-7",[]],["title/254",[2,24.457,402,9.484,2934,51.712,3416,32.742,3450,44.297]],["name/254",[2934,0.745,3416,0.734,3450,0.639]],["text/254",[5,2.808,8,0.633,10,1.028,12,1.334,13,0.848,15,1.334,32,3.566,40,0.861,84,3.513,104,1.278,111,1.407,112,1.178,118,0.851,122,1.704,136,1.967,154,1.268,155,0.933,161,3.735,166,3.428,169,2.507,185,1.751,196,1.084,239,1.216,242,1.864,248,1.292,271,2.696,272,1.421,277,2.831,301,2.337,308,2.348,402,1.516,406,3.375,414,1.936,426,5.304,464,1.603,465,1.855,478,1.936,502,1.957,525,1.153,531,2.137,608,1.329,647,1.571,656,1.428,670,1.375,672,1.704,679,1.033,686,2.242,712,3.616,752,1.308,754,1.902,758,1.91,786,5.165,903,5.445,993,1.457,1005,0.888,1066,1.394,1129,2.842,1195,1.532,1287,1.65,1461,1.407,1483,1.178,1596,2.098,1735,1.388,2103,2.06,2109,1.936,2934,5.317,3033,1.963,3450,6.516,3451,2.244,3459,4.761,3460,3.821,3461,3.821,3506,1.603,3512,1.582,3571,2.141,3692,2.244,3693,2.244,3694,2.244,3717,2.385,3718,4.061,3719,2.385,3720,2.385,3721,4.061,3722,2.385,3723,2.385,3724,2.385,3725,2.611,3726,2.611,3727,2.611,3728,2.611,3729,2.611,3730,5.806,3731,2.611,3732,2.611,3755,1.842]],["component/254",[7,0.401]],["title/255-1",[343,64.077]],["name/255-1",[]],["text/255-1",[]],["component/255-1",[]],["title/255-2",[331,40.225,341,44.313]],["name/255-2",[]],["text/255-2",[]],["component/255-2",[]],["title/255-3",[301,37.342]],["name/255-3",[]],["text/255-3",[]],["component/255-3",[]],["title/255-4",[331,48.023]],["name/255-4",[]],["text/255-4",[]],["component/255-4",[]],["title/255-5",[3087,58.217]],["name/255-5",[]],["text/255-5",[]],["component/255-5",[]],["title/255-6",[191,35.099]],["name/255-6",[]],["text/255-6",[]],["component/255-6",[]],["title/255-7",[361,42.254]],["name/255-7",[]],["text/255-7",[]],["component/255-7",[]],["title/255-8",[33,46.658]],["name/255-8",[]],["text/255-8",[]],["component/255-8",[]],["title/255-9",[3379,79.747]],["name/255-9",[]],["text/255-9",[]],["component/255-9",[]],["title/255-10",[1279,55.838]],["name/255-10",[]],["text/255-10",[]],["component/255-10",[]],["title/255-11",[3382,62.807]],["name/255-11",[]],["text/255-11",[]],["component/255-11",[]],["title/255",[26,31.122,2177,37.901]],["name/255",[2177,1.205]],["text/255",[4,3.12,7,0.612,8,2.18,15,0.697,17,2.026,23,1.117,26,4.233,29,1.327,33,1.74,34,0.583,40,0.824,71,1.294,76,3.007,77,0.761,84,1.542,92,0.81,104,1.223,105,2.321,111,0.735,113,1.054,117,0.55,118,0.445,121,0.749,125,1.95,129,1.591,133,0.81,138,1.528,139,1.227,143,1.341,150,0.566,155,1.237,161,0.519,163,0.675,172,1.807,183,0.542,189,3.12,191,2.685,194,0.862,196,0.566,199,0.795,206,0.952,214,0.941,215,6.206,224,0.667,248,0.675,262,0.777,264,2.225,277,4.695,293,0.832,301,2.68,308,2.694,311,0.712,322,5.847,331,2.217,341,0.777,348,0.876,351,3.465,357,1.402,361,2.81,375,0.869,391,1.257,396,1.172,402,0.301,403,0.962,405,1.172,406,1.423,441,0.821,442,0.952,446,0.678,465,1.043,470,1.097,475,2.974,492,2.342,502,0.6,514,0.479,523,0.8,547,2.131,557,0.782,597,0.757,621,0.973,675,0.89,698,0.712,768,0.985,769,1.296,779,0.826,784,1.118,786,0.718,859,0.821,861,0.769,862,0.973,865,0.715,867,1.618,890,3.068,910,0.815,943,0.89,968,0.715,972,0.691,993,0.761,1008,4.732,1011,1.011,1031,0.962,1053,1.66,1066,0.728,1128,0.757,1129,0.667,1132,1.142,1133,3.183,1139,1.632,1145,2.018,1219,0.898,1255,0.567,1279,4.917,1402,1.829,1456,1.488,1475,0.942,1477,0.746,1483,1.127,1551,0.898,1659,1.908,1942,0.832,2054,1.458,2076,0.906,2150,1.143,2177,4.129,2243,1.296,2249,2.209,2374,1.011,2419,0.998,2468,3.942,2485,1.205,2562,2.683,2619,2.278,2621,2.095,2636,0.786,2685,1.143,2847,1.143,2890,1.143,3043,1.784,3087,2.171,3129,0.862,3355,2.974,3357,2.148,3358,2.148,3359,2.148,3361,3.512,3364,1.172,3376,3.913,3378,2.283,3379,2.148,3380,3.161,3382,0.923,3385,1.246,3386,1.246,3387,2.283,3388,1.246,3389,1.246,3390,1.246,3391,1.172,3392,1.246,3393,2.283,3397,1.246,3398,2.283,3399,1.172,3400,1.172,3402,1.246,3405,1.246,3406,2.283,3407,1.246,3408,1.246,3409,1.246,3413,1.118,3527,1.172,3733,2.499,3734,2.499,3735,1.363,3736,1.363,3737,1.363,3738,1.296]],["component/255",[7,0.401]],["title/256-1",[402,17.184,1456,33.432]],["name/256-1",[]],["text/256-1",[]],["component/256-1",[]],["title/256-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/256-2",[]],["text/256-2",[]],["component/256-2",[]],["title/256-3",[8,18.856,150,32.262]],["name/256-3",[]],["text/256-3",[]],["component/256-3",[]],["title/256-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/256-4",[]],["text/256-4",[]],["component/256-4",[]],["title/256-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/256-5",[]],["text/256-5",[]],["component/256-5",[]],["title/256-6",[8,16.222,746,27.183,1005,22.733]],["name/256-6",[]],["text/256-6",[]],["component/256-6",[]],["title/256-7",[1255,32.348,1457,33.624]],["name/256-7",[]],["text/256-7",[]],["component/256-7",[]],["title/256",[23,26.157,40,11.996,264,19.556,547,15.516,1936,22.493,2073,27.766,2199,26.615]],["name/256",[23,0.329,264,0.246,2073,0.562,2199,0.539]],["text/256",[23,5.362,40,3.956,117,4.275,134,2.382,136,1.712,144,2.838,252,4.736,264,2.236,267,3.774,268,7.019,401,3,402,1.479,459,4.081,484,5.987,642,5.19,681,4.406,683,3.509,1456,2.878,1472,3.881,1490,4.168,1936,4.138,2199,8.778,2234,6.954,3127,5.751]],["component/256",[7,0.401]],["title/257-1",[402,17.184,1456,33.432]],["name/257-1",[]],["text/257-1",[]],["component/257-1",[]],["title/257-2",[40,19.348,84,16.101,406,19.493,1132,26.802]],["name/257-2",[]],["text/257-2",[]],["component/257-2",[]],["title/257-3",[8,18.856,150,32.262]],["name/257-3",[]],["text/257-3",[]],["component/257-3",[]],["title/257-4",[13,19.063,148,19.348,236,24.817,402,12.971]],["name/257-4",[]],["text/257-4",[]],["component/257-4",[]],["title/257-5",[136,15.007,402,12.971,460,24.75,723,22.293]],["name/257-5",[]],["text/257-5",[]],["component/257-5",[]],["title/257-6",[8,16.222,746,27.183,1005,22.733]],["name/257-6",[]],["text/257-6",[]],["component/257-6",[]],["title/257-7",[1255,32.348,1457,33.624]],["name/257-7",[]],["text/257-7",[]],["component/257-7",[]],["title/257",[13,21.665,14,17.712,105,17.712,264,22.28,1936,26.525]],["name/257",[13,0.312,14,0.397,264,0.321]],["text/257",[13,3.774,14,4.796,23,3.106,40,2.292,117,4.361,134,2.474,136,1.778,144,2.948,252,4.831,264,2.322,267,3.92,268,7.132,401,3.116,402,1.537,459,4.238,484,6.145,642,5.39,681,4.577,683,3.644,1456,2.99,1472,4.031,1490,4.329,1936,4.298,2199,5.085,2234,7.138,3127,5.973]],["component/257",[7,0.401]],["title/258-1",[406,25.824,694,45.892]],["name/258-1",[]],["text/258-1",[]],["component/258-1",[]],["title/258-2",[88,27.909]],["name/258-2",[]],["text/258-2",[]],["component/258-2",[]],["title/258-3",[30,28.681,466,37.709,2624,47.184]],["name/258-3",[]],["text/258-3",[]],["component/258-3",[]],["title/258-4",[134,23.806,264,22.343,361,30.449]],["name/258-4",[]],["text/258-4",[]],["component/258-4",[]],["title/258-5",[134,20.888,264,19.605,361,26.717,547,25.024]],["name/258-5",[]],["text/258-5",[]],["component/258-5",[]],["title/258-6",[134,20.888,161,22.344,264,19.605,361,26.717]],["name/258-6",[]],["text/258-6",[]],["component/258-6",[]],["title/258-7",[79,23.287,134,18.607,171,24.43,466,29.474,2624,36.88]],["name/258-7",[]],["text/258-7",[]],["component/258-7",[]],["title/258-8",[79,20.995,134,16.775,171,22.025,351,20.806,1101,33.634,2625,33.249]],["name/258-8",[]],["text/258-8",[]],["component/258-8",[]],["title/258-9",[79,20.995,134,16.775,171,22.025,351,20.806,2625,33.249,2626,34.475]],["name/258-9",[]],["text/258-9",[]],["component/258-9",[]],["title/258-10",[134,20.888,455,28.824,466,33.087,2624,41.4]],["name/258-10",[]],["text/258-10",[]],["component/258-10",[]],["title/258-11",[134,23.806,466,37.709,2627,51.038]],["name/258-11",[]],["text/258-11",[]],["component/258-11",[]],["title/258-12",[23,26.221,40,19.348,466,33.087,2630,44.782]],["name/258-12",[]],["text/258-12",[]],["component/258-12",[]],["title/258-13",[32,26.708,267,37.709,466,37.709]],["name/258-13",[]],["text/258-13",[]],["component/258-13",[]],["title/258",[129,35.736,470,34.116]],["name/258",[129,0.636,470,0.607]],["text/258",[0,0.667,3,0.537,4,1.348,7,0.595,8,0.32,15,0.675,17,0.984,18,0.587,23,1.867,24,0.702,26,1.673,29,1.292,30,2.094,31,0.709,32,1.669,34,1.787,36,0.573,40,0.801,45,0.587,52,1.116,54,3.537,79,1.082,84,2.496,88,1.256,91,0.745,93,0.737,101,1.602,105,1.002,111,0.712,117,0.979,118,2.623,125,0.602,127,0.829,129,3.548,134,3.725,143,5.38,148,0.801,153,0.967,154,0.642,155,0.472,161,1.591,163,0.654,166,2.467,170,1.442,171,2.57,172,1.762,180,1.442,183,0.525,188,0.766,196,1.398,199,0.771,206,0.922,214,2.459,224,0.647,239,0.615,248,1.202,249,0.684,255,1.384,264,2.328,271,0.613,277,2.037,279,0.594,280,1.085,288,2.657,289,1.8,292,1.296,301,3.566,308,0.534,311,2.181,316,0.628,348,0.848,350,0.715,351,1.845,355,0.842,361,3.173,374,0.943,377,1.743,378,1.643,386,0.726,401,1.088,402,0.745,428,1.915,446,0.656,455,1.193,466,1.369,468,0.622,470,3.66,482,0.785,502,0.582,513,1.042,514,0.464,517,0.762,531,0.635,545,0.878,547,2.082,553,0.785,593,0.622,597,0.733,620,0.762,637,1.024,649,1.008,668,0.675,670,0.696,673,0.644,679,1.332,686,0.51,694,1.433,719,1.341,734,0.912,752,0.662,760,0.886,786,1.774,788,0.766,790,0.719,850,0.912,853,1.042,862,0.943,865,1.766,900,3.851,943,0.862,967,1.48,972,0.67,984,0.811,1074,1.024,1076,0.613,1101,4.662,1128,0.733,1129,0.647,1135,1.024,1136,2.602,1211,1.559,1282,4.135,1461,0.712,1483,1.884,1609,0.79,1612,0.757,1620,0.878,1625,0.943,1643,1.826,1647,0.87,1727,1.659,1735,0.702,1759,0.73,1779,0.943,1784,1.062,1786,0.762,1852,0.894,1950,1.694,2018,2.302,2042,0.87,2103,1.042,2225,1.108,2257,1.108,2300,1.108,2379,1.062,2552,1.062,2619,0.87,2625,4.609,2626,3.571,2627,1.008,2630,2.571,2634,1.024,2635,2.895,2636,2.815,2637,5.613,2638,3.59,2639,2.895,2641,1.135,2642,0.78,2643,1.135,2644,1.135,2645,2.086,2647,1.083,2648,1.135,2649,1.135,2650,1.135,2651,1.135,2652,2.086,2653,1.135,2654,2.086,2655,1.135,2656,1.135,2657,1.135,2658,1.042,2663,2.762,2664,1.135,2665,2.086,2666,1.135,3128,1.256,3506,0.811,3512,0.8,3755,0.932]],["component/258",[7,0.401]]],"invertedIndex":[["",{"_index":84,"title":{"12":{},"100":{},"104":{},"156":{},"222":{},"2-7":{},"4-2":{},"4-3":{},"4-6":{},"7-2":{},"8-2":{},"22-1":{},"22-5":{},"25-2":{},"26-2":{},"27-2":{},"28-1":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"32-10":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"41-7":{},"43-2":{},"43-3":{},"43-6":{},"46-2":{},"47-2":{},"58-1":{},"58-5":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-1":{},"65-2":{},"66-2":{},"67-2":{},"68-10":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"88-2":{},"91-2":{},"91-3":{},"91-6":{},"94-4":{},"94-14":{},"96-4":{},"98-12":{},"102-1":{},"108-1":{},"108-2":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-1":{},"114-2":{},"115-2":{},"116-2":{},"117-10":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"128-3":{},"141-2":{},"145-2":{},"145-3":{},"145-6":{},"148-4":{},"148-14":{},"151-4":{},"169-1":{},"169-2":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-1":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"194-3":{},"207-2":{},"211-2":{},"211-3":{},"211-6":{},"214-4":{},"214-14":{},"217-4":{},"235-1":{},"235-2":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-1":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"253-2":{},"254-2":{},"256-2":{},"257-2":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"8":{},"13":{},"14":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"24":{},"25":{},"26":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"47":{},"49":{},"50":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"87":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"104":{},"105":{},"106":{},"108":{},"109":{},"110":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"140":{},"141":{},"142":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"206":{},"207":{},"208":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["0",{"_index":1963,"title":{},"name":{},"text":{"39":{},"75":{},"98":{},"154":{},"181":{},"220":{},"236":{},"247":{}},"component":{}}],["0.0.0.0/0",{"_index":359,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["0.1.0",{"_index":2139,"title":{"80-21":{},"133-21":{},"199-21":{}},"name":{},"text":{},"component":{}}],["0.1.x",{"_index":256,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"77":{},"130":{},"196":{}},"component":{}}],["0.10",{"_index":3794,"title":{},"name":{},"text":{"240":{}},"component":{}}],["0.10.2",{"_index":2168,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["0.11.0",{"_index":2152,"title":{},"name":{},"text":{"80":{},"94":{},"133":{},"148":{},"199":{},"214":{}},"component":{}}],["0.12",{"_index":3786,"title":{},"name":{},"text":{"240":{}},"component":{}}],["0.13.1",{"_index":2062,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["0.7.x",{"_index":3577,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["0.8",{"_index":257,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"130":{},"196":{},"240":{}},"component":{}}],["0.9.1",{"_index":259,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"130":{},"196":{}},"component":{}}],["0.9.3",{"_index":261,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"80":{},"130":{},"133":{},"196":{},"199":{}},"component":{}}],["0.9.4",{"_index":2202,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["0.9.x",{"_index":3770,"title":{},"name":{},"text":{"240":{}},"component":{}}],["04",{"_index":3481,"title":{},"name":{},"text":{"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["1",{"_index":91,"title":{"2-15":{},"2-37":{},"2-47":{},"41-15":{},"41-37":{},"41-47":{},"127-2":{},"193-2":{}},"name":{},"text":{"3":{},"6":{},"20":{},"22":{},"32":{},"42":{},"45":{},"56":{},"58":{},"68":{},"87":{},"90":{},"96":{},"98":{},"100":{},"101":{},"109":{},"117":{},"126":{},"140":{},"144":{},"151":{},"154":{},"156":{},"157":{},"160":{},"170":{},"182":{},"192":{},"206":{},"210":{},"217":{},"220":{},"222":{},"223":{},"226":{},"234":{},"236":{},"248":{},"258":{}},"component":{}}],["1.0",{"_index":2281,"title":{"83-14":{},"136-14":{},"202-14":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["1.0.0",{"_index":978,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"153":{},"217":{},"219":{}},"component":{}}],["1.0.1",{"_index":3514,"title":{},"name":{},"text":{"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"180":{},"184":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"246":{},"250":{}},"component":{}}],["1.0.2",{"_index":1746,"title":{},"name":{},"text":{"32":{},"68":{}},"component":{}}],["1.0.x",{"_index":258,"title":{"80-20":{},"80-21":{},"133-20":{},"133-21":{},"199-20":{},"199-21":{}},"name":{},"text":{"2":{},"41":{},"77":{},"80":{},"130":{},"133":{},"196":{},"199":{}},"component":{}}],["1.1",{"_index":2279,"title":{"83-13":{},"136-13":{},"202-13":{}},"name":{},"text":{},"component":{}}],["1.1.2",{"_index":3091,"title":{},"name":{},"text":{"117":{}},"component":{}}],["1.1.6",{"_index":2978,"title":{},"name":{},"text":{"107":{}},"component":{}}],["1.1.x",{"_index":260,"title":{"23-1":{},"59-1":{},"80-18":{},"80-20":{},"133-18":{},"133-20":{},"199-18":{},"199-20":{}},"name":{},"text":{"2":{},"41":{},"77":{},"80":{},"130":{},"133":{},"196":{},"199":{}},"component":{}}],["1.14.2",{"_index":2975,"title":{},"name":{},"text":{"103":{}},"component":{}}],["1.2",{"_index":2277,"title":{"83-12":{},"136-12":{},"202-12":{}},"name":{},"text":{},"component":{}}],["1.2.2",{"_index":2061,"title":{},"name":{},"text":{"77":{},"79":{},"130":{},"132":{},"196":{},"198":{}},"component":{}}],["1.2.x",{"_index":2063,"title":{"80-10":{},"80-18":{},"133-10":{},"133-18":{},"199-10":{},"199-18":{}},"name":{},"text":{"77":{},"80":{},"94":{},"130":{},"133":{},"148":{},"160":{},"196":{},"199":{},"214":{},"226":{}},"component":{}}],["1.21.x",{"_index":3448,"title":{},"name":{},"text":{"159":{}},"component":{}}],["1.23.0",{"_index":3742,"title":{},"name":{},"text":{"225":{}},"component":{}}],["1.25.0",{"_index":2977,"title":{},"name":{},"text":{"103":{}},"component":{}}],["1.25.3.1",{"_index":3509,"title":{},"name":{},"text":{"170":{}},"component":{}}],["1.25.3.2",{"_index":3754,"title":{},"name":{},"text":{"236":{}},"component":{}}],["1.29.0",{"_index":3635,"title":{},"name":{},"text":{"180":{}},"component":{}}],["1.31.ga",{"_index":565,"title":{},"name":{},"text":{"3":{},"42":{}},"component":{}}],["1.38.0",{"_index":3804,"title":{},"name":{},"text":{"246":{}},"component":{}}],["1.4.4.releas",{"_index":3734,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["1.4.6",{"_index":3455,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["1.5",{"_index":2040,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["1.54.x",{"_index":3449,"title":{},"name":{},"text":{"159":{}},"component":{}}],["1.6",{"_index":2245,"title":{},"name":{},"text":{"81":{}},"component":{}}],["1.6.0",{"_index":3621,"title":{},"name":{},"text":{"179":{},"245":{}},"component":{}}],["1.60.1",{"_index":3743,"title":{},"name":{},"text":{"225":{}},"component":{}}],["1.75",{"_index":3497,"title":{},"name":{},"text":{"167":{}},"component":{}}],["1.75.0",{"_index":3576,"title":{},"name":{},"text":{"174":{}},"component":{}}],["1.75.x",{"_index":3498,"title":{},"name":{},"text":{"167":{},"174":{},"240":{}},"component":{}}],["1.79",{"_index":3745,"title":{},"name":{},"text":{"233":{}},"component":{}}],["1.79.x",{"_index":3746,"title":{},"name":{},"text":{"233":{}},"component":{}}],["1.8.2",{"_index":3503,"title":{},"name":{},"text":{"168":{},"234":{}},"component":{}}],["1.81.0",{"_index":3778,"title":{},"name":{},"text":{"240":{}},"component":{}}],["1.81.x",{"_index":3769,"title":{},"name":{},"text":{"240":{}},"component":{}}],["10",{"_index":590,"title":{"105":{}},"name":{},"text":{"4":{},"12":{},"30":{},"37":{},"43":{},"64":{},"73":{},"91":{},"145":{},"154":{},"211":{},"220":{}},"component":{}}],["10.0.0",{"_index":3076,"title":{},"name":{},"text":{"114":{}},"component":{}}],["100",{"_index":635,"title":{},"name":{},"text":{"5":{},"12":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["1001",{"_index":3675,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["100m",{"_index":1988,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["10m",{"_index":3265,"title":{},"name":{},"text":{"151":{},"155":{},"217":{},"221":{}},"component":{}}],["10mi",{"_index":2466,"title":{},"name":{},"text":{"96":{},"99":{}},"component":{}}],["11",{"_index":2808,"title":{},"name":{},"text":{"100":{},"156":{},"161":{},"172":{},"222":{},"227":{},"234":{},"238":{}},"component":{}}],["12",{"_index":3492,"title":{},"name":{},"text":{"166":{},"232":{}},"component":{}}],["12.0.0",{"_index":3619,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["120",{"_index":3429,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["120x120.png",{"_index":1894,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["123",{"_index":975,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["1234",{"_index":2692,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["14",{"_index":1547,"title":{},"name":{},"text":{"28":{},"38":{},"65":{},"74":{}},"component":{}}],["14.0.13",{"_index":3078,"title":{},"name":{},"text":{"114":{}},"component":{}}],["144x144.png",{"_index":1904,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["15",{"_index":2571,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["150x150.png",{"_index":1906,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["152x152.png",{"_index":1895,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["153",{"_index":999,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["16",{"_index":1769,"title":{"162":{},"228":{}},"name":{},"text":{"34":{},"70":{},"162":{},"228":{}},"component":{}}],["16.0.0",{"_index":3607,"title":{},"name":{},"text":{"176":{},"242":{}},"component":{}}],["16.4.0",{"_index":1873,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["16gb",{"_index":2031,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["16x16.png",{"_index":1901,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["17",{"_index":3462,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"234":{},"238":{}},"component":{}}],["18",{"_index":3482,"title":{"163":{},"229":{}},"name":{},"text":{"163":{},"229":{}},"component":{}}],["18.0.1",{"_index":3698,"title":{},"name":{},"text":{"184":{}},"component":{}}],["18.2.1",{"_index":3819,"title":{},"name":{},"text":{"250":{}},"component":{}}],["180x180.png",{"_index":1896,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["192.168.56.1",{"_index":370,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["192.168.56.101",{"_index":373,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["192.168.56.31",{"_index":365,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["192x192.png",{"_index":1890,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["1gi",{"_index":1992,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["2",{"_index":93,"title":{"2-16":{},"2-38":{},"2-48":{},"41-16":{},"41-38":{},"41-48":{},"83-11":{},"127-3":{},"136-11":{},"193-3":{},"202-11":{}},"name":{"79":{},"132":{},"198":{}},"text":{"6":{},"14":{},"16":{},"20":{},"45":{},"50":{},"52":{},"56":{},"79":{},"83":{},"95":{},"98":{},"100":{},"101":{},"109":{},"126":{},"127":{},"132":{},"136":{},"149":{},"154":{},"156":{},"157":{},"170":{},"182":{},"192":{},"193":{},"198":{},"202":{},"215":{},"220":{},"222":{},"223":{},"236":{},"248":{},"258":{}},"component":{}}],["2.0",{"_index":1289,"title":{},"name":{},"text":{"21":{},"41":{},"57":{},"78":{},"94":{},"131":{},"148":{},"197":{},"214":{}},"component":{}}],["2.0.4",{"_index":2023,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["2.1.0",{"_index":2014,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["2.1.16.releas",{"_index":3383,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["2.11.2",{"_index":563,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["2.13",{"_index":2044,"title":{},"name":{},"text":{"77":{}},"component":{}}],["2.13.1",{"_index":3057,"title":{},"name":{},"text":{"113":{},"175":{}},"component":{}}],["2.13.10",{"_index":3799,"title":{},"name":{},"text":{"241":{}},"component":{}}],["2.13.2",{"_index":2038,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["2.6,6",{"_index":1928,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["2.6.2",{"_index":2021,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["2.7.5",{"_index":3452,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["2.8.0",{"_index":3044,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["2.8.2",{"_index":564,"title":{},"name":{},"text":{"3":{},"42":{},"175":{},"241":{}},"component":{}}],["2.acm",{"_index":2145,"title":{},"name":{},"text":{"80":{},"83":{},"133":{},"136":{},"199":{},"202":{}},"component":{}}],["2.x",{"_index":1253,"title":{"94":{},"148":{},"214":{},"80-10":{},"133-10":{},"199-10":{}},"name":{},"text":{"20":{},"56":{},"77":{},"79":{},"80":{},"81":{},"83":{},"94":{},"95":{},"96":{},"101":{},"130":{},"132":{},"133":{},"136":{},"148":{},"149":{},"151":{},"157":{},"196":{},"198":{},"199":{},"202":{},"214":{},"215":{},"217":{},"223":{}},"component":{}}],["20",{"_index":3485,"title":{"164":{},"230":{}},"name":{},"text":{"164":{},"176":{},"181":{},"230":{}},"component":{}}],["20.10.0",{"_index":3608,"title":{},"name":{},"text":{"176":{}},"component":{}}],["200",{"_index":2854,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["2018",{"_index":2283,"title":{"83-14":{},"136-14":{},"202-14":{}},"name":{},"text":{},"component":{}}],["2019",{"_index":1715,"title":{"83-11":{},"83-12":{},"83-13":{},"136-11":{},"136-12":{},"136-13":{},"202-11":{},"202-12":{},"202-13":{}},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["2020",{"_index":2275,"title":{"83-9":{},"83-10":{},"136-10":{},"202-10":{}},"name":{},"text":{},"component":{}}],["2021",{"_index":3180,"title":{"136-9":{},"202-9":{}},"name":{},"text":{"166":{},"167":{},"232":{},"233":{}},"component":{}}],["2022",{"_index":3179,"title":{"136-8":{},"202-8":{}},"name":{},"text":{},"component":{}}],["2024",{"_index":3480,"title":{},"name":{},"text":{"162":{},"228":{}},"component":{}}],["2025",{"_index":3484,"title":{},"name":{},"text":{"163":{},"229":{}},"component":{}}],["2026",{"_index":3487,"title":{},"name":{},"text":{"164":{},"230":{}},"component":{}}],["2027",{"_index":3489,"title":{},"name":{},"text":{"165":{},"231":{}},"component":{}}],["21",{"_index":3463,"title":{"172-14":{},"238-14":{}},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["22",{"_index":1741,"title":{"165":{},"231":{}},"name":{},"text":{"32":{},"68":{},"117":{},"165":{},"184":{},"185":{},"231":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["22.4.1",{"_index":3803,"title":{},"name":{},"text":{"242":{}},"component":{}}],["23",{"_index":3493,"title":{},"name":{},"text":{"166":{},"232":{}},"component":{}}],["2306",{"_index":3453,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["2306:latest",{"_index":3457,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["26.0.0",{"_index":3074,"title":{},"name":{},"text":{"114":{}},"component":{}}],["262144",{"_index":3163,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["28",{"_index":1872,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["29.7.0",{"_index":3605,"title":{},"name":{},"text":{"176":{},"242":{}},"component":{}}],["2gi",{"_index":2465,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["2nd",{"_index":1522,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["2x",{"_index":2376,"title":{},"name":{"94":{},"148":{},"214":{}},"text":{},"component":{}}],["3",{"_index":94,"title":{"2-17":{},"2-39":{},"2-49":{},"41-17":{},"41-39":{},"41-49":{},"83-10":{},"136-10":{},"202-10":{}},"name":{"79":{},"132":{},"198":{}},"text":{"20":{},"36":{},"56":{},"72":{},"79":{},"83":{},"95":{},"101":{},"109":{},"122":{},"127":{},"132":{},"136":{},"149":{},"150":{},"154":{},"157":{},"161":{},"170":{},"172":{},"193":{},"198":{},"202":{},"215":{},"216":{},"220":{},"223":{},"227":{},"236":{},"238":{}},"component":{}}],["3.0.0",{"_index":3531,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["3.0.14",{"_index":3618,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["3.10",{"_index":568,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["3.11",{"_index":567,"title":{},"name":{},"text":{"3":{},"42":{},"83":{},"90":{},"127":{},"130":{},"136":{},"144":{},"150":{},"166":{},"173":{},"178":{},"180":{},"193":{},"196":{},"202":{},"210":{},"216":{},"232":{},"239":{},"244":{}},"component":{}}],["3.12",{"_index":3744,"title":{},"name":{},"text":{"232":{},"239":{},"246":{}},"component":{}}],["3.2",{"_index":3609,"title":{},"name":{},"text":{"177":{},"243":{}},"component":{}}],["3.2.0",{"_index":3516,"title":{},"name":{},"text":{"172":{}},"component":{}}],["3.2.2",{"_index":3454,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["3.3.3",{"_index":3756,"title":{},"name":{},"text":{"238":{}},"component":{}}],["3.4.0",{"_index":1884,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["3.4.4",{"_index":219,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["3.6",{"_index":1617,"title":{},"name":{},"text":{"31":{},"32":{},"67":{},"68":{},"166":{},"232":{}},"component":{}}],["3.8",{"_index":2398,"title":{"95-10":{},"149-10":{},"215-10":{}},"name":{},"text":{"95":{},"106":{},"112":{},"116":{},"117":{},"149":{},"166":{},"173":{},"215":{},"232":{},"239":{}},"component":{}}],["3.9",{"_index":3490,"title":{},"name":{},"text":{"166":{},"173":{},"232":{},"239":{}},"component":{}}],["3.9.5",{"_index":3075,"title":{},"name":{},"text":{"114":{}},"component":{}}],["3.acm",{"_index":2085,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["3.custom",{"_index":2291,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["3.x",{"_index":2060,"title":{"95":{},"149":{},"215":{}},"name":{},"text":{"77":{},"79":{},"80":{},"83":{},"95":{},"96":{},"98":{},"100":{},"130":{},"132":{},"133":{},"136":{},"149":{},"150":{},"151":{},"156":{},"196":{},"198":{},"199":{},"202":{},"215":{},"216":{},"217":{},"222":{}},"component":{}}],["30",{"_index":207,"title":{},"name":{},"text":{"2":{},"41":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["300m",{"_index":3266,"title":{},"name":{},"text":{"151":{},"155":{},"217":{},"221":{}},"component":{}}],["300mi",{"_index":2467,"title":{},"name":{},"text":{"96":{},"99":{}},"component":{}}],["31",{"_index":1814,"title":{},"name":{},"text":{"35":{},"71":{}},"component":{}}],["32",{"_index":175,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["32gb",{"_index":2032,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["32x32.png",{"_index":1902,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["3399",{"_index":1044,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["343311263",{"_index":595,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["38",{"_index":3541,"title":{},"name":{},"text":{"173":{}},"component":{}}],["39",{"_index":3759,"title":{},"name":{},"text":{"239":{}},"component":{}}],["3rd",{"_index":1093,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"96":{},"151":{},"217":{}},"component":{}}],["3x",{"_index":2399,"title":{},"name":{"95":{},"149":{},"215":{}},"text":{},"component":{}}],["4",{"_index":95,"title":{"2-18":{},"2-40":{},"2-50":{},"41-18":{},"41-40":{},"41-50":{},"83-9":{},"136-9":{},"202-9":{}},"name":{},"text":{"20":{},"28":{},"56":{},"65":{},"83":{},"95":{},"101":{},"109":{},"127":{},"136":{},"149":{},"150":{},"157":{},"170":{},"193":{},"202":{},"215":{},"216":{},"223":{},"236":{}},"component":{}}],["4.0.0",{"_index":1875,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["4.0.8",{"_index":3378,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["4.1.1",{"_index":3622,"title":{},"name":{},"text":{"179":{},"245":{}},"component":{}}],["4.14.3",{"_index":560,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["4.15",{"_index":1548,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["4.17.1",{"_index":3072,"title":{},"name":{},"text":{"114":{}},"component":{}}],["4.18.2",{"_index":3604,"title":{},"name":{},"text":{"176":{}},"component":{}}],["4.19.2",{"_index":3801,"title":{},"name":{},"text":{"242":{}},"component":{}}],["4.2",{"_index":3177,"title":{"136-8":{},"202-8":{}},"name":{},"text":{},"component":{}}],["4.x",{"_index":2292,"title":{"150":{},"216":{},"150-8":{},"216-8":{}},"name":{},"text":{"83":{},"136":{},"150":{},"154":{},"202":{},"216":{},"220":{}},"component":{}}],["44",{"_index":1927,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["4gi",{"_index":1994,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["4x",{"_index":3229,"title":{},"name":{"150":{},"216":{}},"text":{},"component":{}}],["5",{"_index":97,"title":{"2-19":{},"2-41":{},"2-51":{},"41-19":{},"41-41":{},"41-51":{}},"name":{},"text":{"20":{},"27":{},"56":{},"62":{},"80":{},"96":{},"101":{},"111":{},"120":{},"133":{},"136":{},"151":{},"157":{},"172":{},"183":{},"199":{},"202":{},"217":{},"223":{},"238":{},"249":{}},"component":{}}],["5.16.3",{"_index":216,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["5.3.2",{"_index":3606,"title":{},"name":{},"text":{"176":{}},"component":{}}],["5.5.4",{"_index":3802,"title":{},"name":{},"text":{"242":{}},"component":{}}],["500",{"_index":2887,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["500m",{"_index":1990,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["503",{"_index":2875,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["50x.html",{"_index":3011,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["512x512.png",{"_index":1891,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["5mb",{"_index":1071,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["6",{"_index":100,"title":{"2-20":{},"2-52":{},"41-20":{},"41-52":{}},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["6.1.3",{"_index":562,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["6.14.3",{"_index":218,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["60x60.png",{"_index":1897,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["63",{"_index":3385,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["7",{"_index":103,"title":{"2-21":{},"2-53":{},"41-21":{},"41-53":{}},"name":{},"text":{"32":{},"35":{},"68":{},"71":{},"95":{},"101":{},"117":{},"149":{},"157":{},"215":{},"223":{}},"component":{}}],["7.13.3",{"_index":217,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["7.2.0",{"_index":3700,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["7.3.6",{"_index":561,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["76x76.png",{"_index":1898,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["8",{"_index":106,"title":{"2-22":{},"2-54":{},"41-22":{},"41-54":{},"94-8":{},"148-8":{},"214-8":{}},"name":{},"text":{"14":{},"19":{},"22":{},"27":{},"29":{},"30":{},"50":{},"55":{},"58":{},"62":{},"63":{},"64":{},"93":{},"94":{},"96":{},"101":{},"111":{},"147":{},"148":{},"151":{},"157":{},"213":{},"214":{},"217":{},"223":{}},"component":{}}],["8.10",{"_index":3757,"title":{},"name":{},"text":{"238":{}},"component":{}}],["8.5",{"_index":3517,"title":{},"name":{},"text":{"172":{}},"component":{}}],["8080",{"_index":1575,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["86",{"_index":1396,"title":{},"name":{},"text":{"23":{},"59":{}},"component":{}}],["9",{"_index":1768,"title":{},"name":{},"text":{"34":{},"70":{},"101":{},"157":{},"223":{}},"component":{}}],["9000:9000",{"_index":2366,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["9092:9092",{"_index":2367,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["9a",{"_index":3389,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["_",{"_index":2419,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"149":{},"150":{},"151":{},"153":{},"154":{},"189":{},"215":{},"216":{},"217":{},"219":{},"220":{},"255":{}},"component":{}}],["__",{"_index":1836,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["__init__.pi",{"_index":1436,"title":{},"name":{},"text":{"24":{},"29":{},"60":{},"63":{},"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["__test__",{"_index":3070,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["_helpers.tpl",{"_index":3560,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["_service_host",{"_index":2995,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["_service_port",{"_index":2996,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["_version",{"_index":874,"title":{},"name":{},"text":{"12":{}},"component":{}}],["a.git",{"_index":2640,"title":{},"name":{},"text":{"98":{},"126":{}},"component":{}}],["abort",{"_index":2550,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["aborting\\ncurr",{"_index":2839,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["about.vu",{"_index":1921,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["abov",{"_index":620,"title":{},"name":{},"text":{"4":{},"22":{},"23":{},"27":{},"43":{},"58":{},"59":{},"62":{},"80":{},"81":{},"91":{},"95":{},"98":{},"101":{},"111":{},"114":{},"123":{},"128":{},"133":{},"137":{},"142":{},"145":{},"146":{},"149":{},"154":{},"157":{},"172":{},"174":{},"176":{},"186":{},"194":{},"199":{},"203":{},"208":{},"211":{},"212":{},"215":{},"220":{},"223":{},"238":{},"240":{},"242":{},"252":{},"258":{}},"component":{}}],["accept",{"_index":730,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"88":{},"100":{},"120":{},"141":{},"151":{},"156":{},"181":{},"183":{},"207":{},"217":{},"222":{},"247":{},"249":{}},"component":{}}],["acceptance.config.t",{"_index":3813,"title":{},"name":{},"text":{"247":{}},"component":{}}],["acceptance.json",{"_index":3644,"title":{},"name":{},"text":{"181":{}},"component":{}}],["acceptance.spec.cy.t",{"_index":3810,"title":{},"name":{},"text":{"247":{}},"component":{}}],["acceptance.spec.t",{"_index":3641,"title":{},"name":{},"text":{"181":{}},"component":{}}],["acceptance/great_expect",{"_index":3695,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["acceptance/pytest",{"_index":3697,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["accepted_ev",{"_index":2332,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["access",{"_index":115,"title":{"2-31":{},"2-44":{},"41-31":{},"41-44":{}},"name":{},"text":{"2":{},"14":{},"20":{},"32":{},"41":{},"50":{},"56":{},"68":{},"78":{},"79":{},"80":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"109":{},"113":{},"117":{},"131":{},"132":{},"133":{},"149":{},"151":{},"154":{},"155":{},"157":{},"169":{},"170":{},"175":{},"181":{},"197":{},"198":{},"199":{},"215":{},"217":{},"220":{},"221":{},"223":{},"235":{},"236":{},"241":{},"247":{}},"component":{}}],["access_by_lua_block",{"_index":3004,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["accident",{"_index":2600,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["accompani",{"_index":2295,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["accord",{"_index":420,"title":{},"name":{},"text":{"2":{},"14":{},"30":{},"41":{},"50":{},"64":{},"96":{},"108":{},"121":{},"122":{},"151":{},"153":{},"169":{},"184":{},"185":{},"217":{},"219":{},"235":{},"250":{},"251":{}},"component":{}}],["account",{"_index":122,"title":{"2-39":{},"2-54":{},"41-39":{},"41-54":{}},"name":{},"text":{"2":{},"13":{},"14":{},"24":{},"32":{},"41":{},"49":{},"50":{},"60":{},"68":{},"81":{},"96":{},"98":{},"117":{},"150":{},"151":{},"154":{},"188":{},"216":{},"217":{},"220":{},"254":{}},"component":{}}],["accross",{"_index":543,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["accusam",{"_index":814,"title":{},"name":{},"text":{"10":{}},"component":{}}],["achiev",{"_index":1508,"title":{},"name":{},"text":{"27":{},"32":{},"62":{},"68":{},"96":{},"98":{},"111":{},"117":{},"136":{},"151":{},"154":{},"172":{},"202":{},"217":{},"220":{},"238":{}},"component":{}}],["acm",{"_index":2224,"title":{},"name":{},"text":{"81":{}},"component":{}}],["acme’",{"_index":2255,"title":{},"name":{},"text":{"81":{}},"component":{}}],["action",{"_index":520,"title":{},"name":{},"text":{"2":{},"36":{},"37":{},"41":{},"72":{},"73":{},"78":{},"94":{},"95":{},"122":{},"131":{},"148":{},"149":{},"150":{},"185":{},"197":{},"214":{},"215":{},"216":{},"251":{}},"component":{}}],["activ",{"_index":379,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"101":{},"154":{},"157":{},"160":{},"220":{},"223":{},"226":{}},"component":{}}],["actor",{"_index":1593,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["actual",{"_index":2240,"title":{},"name":{},"text":{"81":{},"96":{},"98":{},"99":{},"128":{},"151":{},"154":{},"155":{},"157":{},"194":{},"217":{},"220":{},"221":{},"223":{}},"component":{}}],["ad",{"_index":350,"title":{"8-1":{},"47-6":{},"88-6":{},"109-6":{},"141-6":{},"170-6":{},"207-6":{},"236-6":{}},"name":{},"text":{"2":{},"4":{},"14":{},"19":{},"32":{},"34":{},"38":{},"41":{},"43":{},"50":{},"55":{},"68":{},"70":{},"74":{},"91":{},"96":{},"98":{},"100":{},"101":{},"114":{},"117":{},"119":{},"121":{},"126":{},"145":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"172":{},"176":{},"181":{},"184":{},"192":{},"211":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"238":{},"242":{},"247":{},"250":{},"258":{}},"component":{}}],["adapt",{"_index":162,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"81":{},"96":{},"113":{},"123":{},"130":{},"133":{},"151":{},"157":{},"175":{},"186":{},"196":{},"199":{},"217":{},"223":{},"241":{},"252":{}},"component":{}}],["adapters.confluence.enabled=fals",{"_index":3446,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["adapters/servic",{"_index":3445,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["add",{"_index":110,"title":{"2-25":{},"2-26":{},"2-27":{},"2-28":{},"2-32":{},"2-34":{},"2-43":{},"2-44":{},"2-48":{},"2-56":{},"2-68":{},"14-11":{},"41-25":{},"41-26":{},"41-27":{},"41-28":{},"41-32":{},"41-34":{},"41-43":{},"41-44":{},"41-48":{},"41-56":{},"41-68":{},"50-11":{},"101-8":{},"157-11":{},"223-11":{}},"name":{},"text":{"2":{},"6":{},"14":{},"22":{},"25":{},"27":{},"32":{},"41":{},"45":{},"47":{},"50":{},"58":{},"62":{},"66":{},"68":{},"77":{},"80":{},"81":{},"82":{},"85":{},"88":{},"94":{},"96":{},"98":{},"100":{},"101":{},"108":{},"109":{},"111":{},"115":{},"117":{},"120":{},"123":{},"130":{},"133":{},"135":{},"136":{},"138":{},"141":{},"148":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"170":{},"172":{},"177":{},"180":{},"181":{},"183":{},"184":{},"186":{},"196":{},"199":{},"201":{},"202":{},"204":{},"207":{},"214":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"236":{},"238":{},"243":{},"246":{},"247":{},"249":{},"250":{},"252":{}},"component":{}}],["add/remov",{"_index":3723,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["addion",{"_index":530,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["addit",{"_index":63,"title":{"98-15":{},"154-18":{},"220-18":{}},"name":{},"text":{"1":{},"2":{},"34":{},"40":{},"41":{},"70":{},"76":{},"80":{},"95":{},"96":{},"101":{},"119":{},"121":{},"129":{},"133":{},"149":{},"151":{},"153":{},"157":{},"180":{},"184":{},"195":{},"199":{},"215":{},"217":{},"219":{},"223":{},"246":{},"250":{}},"component":{}}],["addition",{"_index":1641,"title":{},"name":{},"text":{"32":{},"68":{},"82":{},"101":{},"117":{},"135":{},"157":{},"201":{},"223":{}},"component":{}}],["additionalflag",{"_index":3292,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["additon",{"_index":515,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["address",{"_index":75,"title":{},"name":{},"text":{"1":{},"2":{},"32":{},"40":{},"41":{},"68":{},"76":{},"87":{},"117":{},"129":{},"140":{},"195":{},"206":{}},"component":{}}],["adher",{"_index":2243,"title":{},"name":{},"text":{"81":{},"189":{},"255":{}},"component":{}}],["adjust",{"_index":395,"title":{},"name":{},"text":{"2":{},"26":{},"35":{},"39":{},"41":{},"47":{},"61":{},"71":{},"75":{},"88":{},"96":{},"98":{},"99":{},"108":{},"110":{},"121":{},"141":{},"151":{},"154":{},"155":{},"158":{},"169":{},"171":{},"184":{},"207":{},"217":{},"220":{},"221":{},"224":{},"235":{},"237":{},"250":{}},"component":{}}],["adm",{"_index":2160,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["admin",{"_index":313,"title":{},"name":{},"text":{"2":{},"13":{},"22":{},"41":{},"49":{},"58":{},"77":{},"78":{},"83":{},"87":{},"92":{},"94":{},"98":{},"101":{},"102":{},"128":{},"130":{},"131":{},"136":{},"140":{},"146":{},"148":{},"151":{},"154":{},"157":{},"158":{},"194":{},"196":{},"197":{},"202":{},"206":{},"212":{},"214":{},"217":{},"220":{},"223":{},"224":{}},"component":{}}],["admin1",{"_index":2077,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["admin123",{"_index":463,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["admingroup",{"_index":1331,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["administ",{"_index":912,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["administr",{"_index":102,"title":{"80":{},"84":{},"92":{},"133":{},"137":{},"142":{},"146":{},"199":{},"203":{},"208":{},"212":{},"2-20":{},"2-27":{},"2-39":{},"2-54":{},"13-2":{},"41-20":{},"41-27":{},"41-39":{},"41-54":{},"49-2":{},"92-2":{}},"name":{"84":{},"92":{},"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"text":{"2":{},"22":{},"41":{},"58":{},"78":{},"79":{},"94":{},"95":{},"98":{},"128":{},"131":{},"132":{},"136":{},"148":{},"149":{},"154":{},"157":{},"158":{},"194":{},"197":{},"198":{},"202":{},"214":{},"215":{},"220":{},"223":{},"224":{}},"component":{}}],["administrators,opendevstack",{"_index":2943,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["administrators|us",{"_index":423,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["adminstr",{"_index":334,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["adopt",{"_index":1448,"title":{"127-2":{},"150-8":{},"193-2":{},"216-8":{}},"name":{},"text":{"24":{},"60":{},"83":{},"127":{},"136":{},"150":{},"193":{},"202":{},"216":{}},"component":{}}],["adress",{"_index":363,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["advanc",{"_index":980,"title":{"96-6":{},"99-4":{},"151-6":{},"155-4":{},"217-6":{},"221-4":{}},"name":{},"text":{"14":{},"50":{},"96":{},"101":{},"157":{},"181":{},"223":{},"247":{}},"component":{}}],["advantag",{"_index":2094,"title":{},"name":{},"text":{"79":{},"96":{},"132":{},"151":{},"198":{},"217":{}},"component":{}}],["advis",{"_index":2087,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["advisori",{"_index":3772,"title":{},"name":{},"text":{"240":{}},"component":{}}],["affect",{"_index":2401,"title":{},"name":{},"text":{"95":{},"149":{},"150":{},"215":{},"216":{}},"component":{}}],["aforement",{"_index":848,"title":{},"name":{},"text":{"11":{},"136":{},"202":{}},"component":{}}],["afterward",{"_index":1640,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"77":{},"79":{},"81":{},"88":{},"98":{},"117":{},"130":{},"132":{},"141":{},"154":{},"158":{},"161":{},"196":{},"198":{},"207":{},"220":{},"224":{},"227":{},"234":{}},"component":{}}],["again",{"_index":328,"title":{},"name":{},"text":{"2":{},"4":{},"13":{},"41":{},"43":{},"49":{},"91":{},"98":{},"145":{},"154":{},"172":{},"211":{},"220":{},"238":{}},"component":{}}],["against",{"_index":188,"title":{},"name":{},"text":{"2":{},"4":{},"19":{},"20":{},"32":{},"34":{},"41":{},"43":{},"55":{},"56":{},"68":{},"70":{},"82":{},"91":{},"96":{},"98":{},"100":{},"101":{},"117":{},"119":{},"120":{},"126":{},"135":{},"142":{},"145":{},"151":{},"154":{},"156":{},"157":{},"181":{},"183":{},"192":{},"201":{},"208":{},"211":{},"217":{},"220":{},"222":{},"223":{},"240":{},"247":{},"249":{},"258":{}},"component":{}}],["agent",{"_index":1005,"title":{"85":{},"103":{},"104":{},"105":{},"106":{},"107":{},"138":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"204":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"84-3":{},"91-6":{},"95-6":{},"95-9":{},"95-11":{},"96-7":{},"99-5":{},"108-2":{},"109-9":{},"110-6":{},"111-12":{},"112-6":{},"113-6":{},"114-8":{},"115-6":{},"116-6":{},"117-19":{},"118-6":{},"119-6":{},"120-10":{},"121-6":{},"122-6":{},"124-6":{},"125-6":{},"145-6":{},"149-6":{},"149-9":{},"149-11":{},"151-7":{},"155-5":{},"169-2":{},"170-10":{},"171-7":{},"172-13":{},"173-7":{},"174-7":{},"175-7":{},"176-9":{},"177-7":{},"178-8":{},"179-7":{},"180-7":{},"181-8":{},"182-5":{},"183-10":{},"184-7":{},"185-7":{},"187-6":{},"188-6":{},"190-6":{},"191-6":{},"211-6":{},"215-6":{},"215-9":{},"215-11":{},"217-7":{},"221-5":{},"235-2":{},"236-10":{},"237-7":{},"238-13":{},"239-7":{},"240-7":{},"241-7":{},"242-9":{},"243-7":{},"244-8":{},"245-7":{},"246-7":{},"247-8":{},"248-5":{},"249-10":{},"250-7":{},"251-7":{},"253-6":{},"254-6":{},"256-6":{},"257-6":{}},"name":{"85":{},"138":{},"204":{}},"text":{"14":{},"50":{},"77":{},"79":{},"84":{},"85":{},"91":{},"95":{},"96":{},"98":{},"99":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"128":{},"130":{},"132":{},"136":{},"137":{},"138":{},"145":{},"149":{},"150":{},"151":{},"154":{},"155":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"194":{},"196":{},"198":{},"202":{},"203":{},"204":{},"211":{},"215":{},"216":{},"217":{},"220":{},"221":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"253":{},"254":{}},"component":{}}],["agent_image_tag",{"_index":3432,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["agentimagetag",{"_index":3431,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["agents/pag",{"_index":2982,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["agnost",{"_index":925,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"97":{},"99":{},"136":{},"151":{},"152":{},"155":{},"202":{},"217":{},"218":{},"221":{}},"component":{}}],["airflow",{"_index":1403,"title":{"24":{},"60":{},"24-10":{},"60-10":{},"95-11":{},"149-11":{},"215-11":{}},"name":{"24":{},"60":{}},"text":{"24":{},"39":{},"60":{},"75":{},"94":{},"95":{},"98":{},"148":{},"149":{},"154":{},"214":{},"215":{},"220":{}},"component":{}}],["airflow:2.x",{"_index":2458,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["aka",{"_index":3551,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["akhilsoman",{"_index":1879,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["akka",{"_index":1592,"title":{"30":{},"64":{}},"name":{"30":{},"64":{}},"text":{"30":{},"64":{}},"component":{}}],["alertemail",{"_index":3283,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["algorithm/job",{"_index":1532,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"176":{},"242":{}},"component":{}}],["alia",{"_index":2431,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["alias",{"_index":3243,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["align",{"_index":2433,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["alik",{"_index":1391,"title":{},"name":{},"text":{"22":{},"25":{},"58":{},"66":{},"101":{},"157":{},"223":{}},"component":{}}],["aliquyam",{"_index":809,"title":{},"name":{},"text":{"10":{}},"component":{}}],["allow",{"_index":275,"title":{},"name":{},"text":{"2":{},"5":{},"13":{},"14":{},"18":{},"24":{},"27":{},"29":{},"32":{},"39":{},"41":{},"44":{},"47":{},"49":{},"50":{},"54":{},"60":{},"62":{},"63":{},"68":{},"75":{},"80":{},"83":{},"88":{},"92":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"111":{},"112":{},"117":{},"120":{},"123":{},"128":{},"133":{},"136":{},"141":{},"146":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"158":{},"172":{},"173":{},"174":{},"181":{},"182":{},"183":{},"186":{},"194":{},"199":{},"202":{},"207":{},"212":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"224":{},"238":{},"239":{},"240":{},"247":{},"248":{},"249":{},"252":{}},"component":{}}],["allowed_change_ref_typ",{"_index":2334,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["allowed_external_project",{"_index":1973,"title":{},"name":{},"text":{"47":{},"88":{},"95":{},"141":{},"149":{},"207":{},"215":{}},"component":{}}],["allowpartialrebuild",{"_index":2659,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["along",{"_index":637,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"126":{},"136":{},"154":{},"192":{},"202":{},"220":{},"258":{}},"component":{}}],["alongsid",{"_index":2081,"title":{},"name":{},"text":{"79":{},"82":{},"132":{},"135":{},"198":{},"201":{}},"component":{}}],["alpha",{"_index":2889,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["alphanumer",{"_index":3387,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["alpin",{"_index":828,"title":{"12":{}},"name":{},"text":{"11":{}},"component":{}}],["alreadi",{"_index":286,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"32":{},"41":{},"44":{},"45":{},"50":{},"68":{},"76":{},"77":{},"95":{},"96":{},"98":{},"109":{},"117":{},"123":{},"129":{},"130":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"153":{},"154":{},"170":{},"174":{},"181":{},"186":{},"195":{},"196":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"219":{},"220":{},"236":{},"240":{},"247":{},"252":{}},"component":{}}],["altern",{"_index":1144,"title":{"240-10":{},"240-15":{}},"name":{},"text":{"19":{},"39":{},"55":{},"75":{},"100":{},"101":{},"150":{},"156":{},"157":{},"216":{},"222":{},"223":{},"240":{}},"component":{}}],["although",{"_index":3198,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["altogeth",{"_index":2696,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["alway",{"_index":1017,"title":{},"name":{},"text":{"14":{},"50":{},"81":{},"82":{},"95":{},"96":{},"98":{},"99":{},"121":{},"135":{},"149":{},"151":{},"153":{},"154":{},"155":{},"184":{},"201":{},"215":{},"217":{},"219":{},"220":{},"221":{},"250":{}},"component":{}}],["alwayspullimag",{"_index":1995,"title":{},"name":{},"text":{"50":{},"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["amend",{"_index":1462,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["amet",{"_index":795,"title":{},"name":{},"text":{"10":{}},"component":{}}],["amount",{"_index":2131,"title":{},"name":{},"text":{"79":{},"128":{},"132":{},"194":{},"198":{}},"component":{}}],["analys",{"_index":904,"title":{},"name":{},"text":{"13":{},"14":{},"15":{},"16":{},"49":{},"50":{},"51":{},"52":{},"93":{},"96":{},"147":{},"151":{},"213":{},"217":{}},"component":{}}],["analysi",{"_index":896,"title":{},"name":{},"text":{"13":{},"14":{},"17":{},"26":{},"27":{},"49":{},"50":{},"53":{},"61":{},"62":{},"83":{},"93":{},"96":{},"110":{},"111":{},"121":{},"122":{},"136":{},"147":{},"151":{},"171":{},"172":{},"184":{},"185":{},"202":{},"213":{},"217":{},"237":{},"238":{},"250":{},"251":{}},"component":{}}],["analyz",{"_index":1947,"title":{},"name":{},"text":{"39":{},"75":{},"77":{},"96":{},"130":{},"136":{},"151":{},"196":{},"202":{},"217":{}},"component":{}}],["analyzepullrequest",{"_index":2555,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["and/or",{"_index":1122,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"80":{},"97":{},"109":{},"117":{},"133":{},"152":{},"170":{},"199":{},"218":{},"236":{},"240":{}},"component":{}}],["andrewrothstein.openshift",{"_index":2017,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["android",{"_index":1823,"title":{},"name":{},"text":{"36":{},"38":{},"72":{},"74":{},"122":{},"185":{},"251":{}},"component":{}}],["angular",{"_index":1558,"title":{"35":{},"71":{},"105":{},"121":{},"184":{},"250":{}},"name":{"35":{},"71":{},"105":{},"121":{},"184":{},"250":{}},"text":{"28":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"94":{},"95":{},"100":{},"105":{},"114":{},"119":{},"121":{},"122":{},"123":{},"136":{},"148":{},"149":{},"156":{},"184":{},"185":{},"186":{},"202":{},"214":{},"215":{},"222":{},"250":{},"251":{},"252":{}},"component":{}}],["angular.json",{"_index":1787,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["angularj",{"_index":3408,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["annot",{"_index":1177,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["announc",{"_index":2641,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["anonym",{"_index":507,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["anoth",{"_index":2042,"title":{},"name":{},"text":{"77":{},"94":{},"96":{},"98":{},"101":{},"108":{},"126":{},"128":{},"130":{},"148":{},"150":{},"151":{},"154":{},"157":{},"169":{},"192":{},"194":{},"196":{},"214":{},"216":{},"217":{},"220":{},"223":{},"235":{},"258":{}},"component":{}}],["ansibl",{"_index":9,"title":{"2-8":{},"4-4":{},"41-8":{},"43-4":{},"76-2":{},"91-4":{},"129-2":{},"145-4":{},"195-2":{},"211-4":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"40":{},"41":{},"43":{},"44":{},"76":{},"83":{},"91":{},"129":{},"145":{},"195":{},"211":{}},"component":{}}],["ansible.cfg",{"_index":600,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["ansible_vault_password_file=/vagrant/ansible/.vault_pass.txt",{"_index":2015,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["ansicolor:0.5.2",{"_index":704,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["antora",{"_index":2259,"title":{"82-1":{},"135-1":{},"201-1":{}},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["anymor",{"_index":740,"title":{},"name":{},"text":{"6":{},"8":{},"41":{},"45":{},"80":{},"133":{},"150":{},"184":{},"199":{},"216":{},"250":{}},"component":{}}],["anyth",{"_index":636,"title":{},"name":{},"text":{"5":{},"6":{},"44":{},"45":{},"83":{},"98":{},"154":{},"220":{}},"component":{}}],["anyway",{"_index":2681,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["anywher",{"_index":3185,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["apach",{"_index":2247,"title":{},"name":{},"text":{"81":{}},"component":{}}],["apart",{"_index":2083,"title":{},"name":{},"text":{"79":{},"80":{},"95":{},"101":{},"132":{},"133":{},"149":{},"157":{},"198":{},"199":{},"215":{},"223":{}},"component":{}}],["api",{"_index":861,"title":{"19-5":{},"22-5":{},"55-5":{},"58-5":{},"100-6":{},"100-7":{},"101-7":{},"156-6":{},"156-7":{},"157-10":{},"222-6":{},"222-7":{},"223-10":{}},"name":{},"text":{"12":{},"19":{},"20":{},"22":{},"23":{},"55":{},"56":{},"58":{},"59":{},"96":{},"98":{},"100":{},"101":{},"109":{},"113":{},"151":{},"153":{},"154":{},"156":{},"157":{},"170":{},"173":{},"174":{},"175":{},"189":{},"217":{},"219":{},"220":{},"222":{},"223":{},"236":{},"239":{},"240":{},"241":{},"255":{}},"component":{}}],["api/compon",{"_index":2615,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["api/v2/project",{"_index":1165,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["api/v2/project?onlycheckpreconditions=tru",{"_index":2892,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["apihost",{"_index":2004,"title":{},"name":{},"text":{"60":{}},"component":{}}],["apiurl",{"_index":2700,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["apivers",{"_index":2175,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["api’",{"_index":1212,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["app",{"_index":14,"title":{"100":{},"101":{},"125":{},"156":{},"157":{},"191":{},"222":{},"223":{},"257":{},"5-8":{},"20-4":{},"44-8":{},"56-4":{},"78-6":{},"79-7":{},"80-9":{},"80-17":{},"80-24":{},"101-14":{},"131-6":{},"132-7":{},"133-9":{},"133-17":{},"133-24":{},"157-17":{},"197-6":{},"198-7":{},"199-9":{},"199-17":{},"199-24":{},"223-17":{}},"name":{"33":{},"125":{},"191":{},"257":{}},"text":{"1":{},"2":{},"5":{},"8":{},"13":{},"14":{},"19":{},"20":{},"21":{},"22":{},"27":{},"33":{},"35":{},"36":{},"39":{},"40":{},"41":{},"44":{},"47":{},"49":{},"50":{},"55":{},"56":{},"57":{},"58":{},"62":{},"69":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"88":{},"92":{},"94":{},"95":{},"96":{},"99":{},"100":{},"101":{},"108":{},"111":{},"113":{},"118":{},"121":{},"122":{},"123":{},"125":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"141":{},"146":{},"148":{},"149":{},"151":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"174":{},"175":{},"179":{},"184":{},"185":{},"186":{},"191":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"207":{},"212":{},"214":{},"215":{},"217":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"240":{},"241":{},"245":{},"250":{},"251":{},"252":{},"257":{}},"component":{}}],["app.component.html",{"_index":1798,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.component.scss",{"_index":1799,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.component.spec.t",{"_index":1800,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.component.t",{"_index":1801,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.e2",{"_index":1792,"title":{},"name":{},"text":{"35":{},"71":{},"121":{}},"component":{}}],["app.git",{"_index":1140,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["app.html",{"_index":1833,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["app.j",{"_index":1857,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["app.kubernetes.io/compon",{"_index":3358,"title":{"153-7":{},"219-7":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.kubernetes.io/inst",{"_index":3356,"title":{"153-5":{},"219-5":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.kubernetes.io/manag",{"_index":3360,"title":{"153-9":{},"219-9":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.kubernetes.io/nam",{"_index":3355,"title":{"153-4":{},"219-4":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.kubernetes.io/part",{"_index":3359,"title":{"153-8":{},"219-8":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.kubernetes.io/vers",{"_index":3357,"title":{"153-6":{},"219-6":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.module.t",{"_index":1802,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["app.opendevstack.org/project",{"_index":3363,"title":{"153-13":{},"153-16":{},"219-13":{},"219-16":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.opendevstack.org/system",{"_index":3365,"title":{"153-15":{},"219-15":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.opendevstack.org/typ",{"_index":3364,"title":{"153-14":{},"219-14":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.opendevstack.org/work",{"_index":3366,"title":{"153-17":{},"219-17":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["app.openshift.io/runtim",{"_index":3361,"title":{"153-10":{},"153-11":{},"219-10":{},"219-11":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["app.pi",{"_index":1564,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["app.po.t",{"_index":1793,"title":{},"name":{},"text":{"35":{},"71":{},"121":{}},"component":{}}],["app.r",{"_index":1756,"title":{},"name":{},"text":{"33":{},"69":{},"118":{},"179":{},"245":{}},"component":{}}],["app.run('0.0.0.0",{"_index":1576,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["app.scss",{"_index":1834,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["app.test.j",{"_index":1858,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["app.vu",{"_index":1911,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["app/issues/336",{"_index":2397,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["app/protocol/openid",{"_index":1235,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["app/src/work/storag",{"_index":1618,"title":{},"name":{},"text":{"31":{}},"component":{}}],["app=$project",{"_index":2717,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["app=${context.projectid",{"_index":2514,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["app=${projectid",{"_index":3246,"title":{},"name":{},"text":{"150":{},"151":{},"216":{},"217":{}},"component":{}}],["app=foo",{"_index":2495,"title":{},"name":{},"text":{"96":{},"98":{},"127":{},"151":{},"154":{},"193":{},"217":{},"220":{}},"component":{}}],["app_dn",{"_index":2315,"title":{},"name":{},"text":{"85":{},"138":{},"204":{}},"component":{}}],["appear",{"_index":435,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["append",{"_index":2518,"title":{},"name":{},"text":{"96":{},"101":{},"151":{},"157":{},"217":{},"223":{}},"component":{}}],["appl",{"_index":1892,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["applciat",{"_index":3121,"title":{},"name":{},"text":{"121":{},"184":{},"250":{}},"component":{}}],["appli",{"_index":697,"title":{},"name":{},"text":{"6":{},"11":{},"12":{},"45":{},"60":{},"79":{},"80":{},"82":{},"84":{},"87":{},"96":{},"98":{},"99":{},"101":{},"127":{},"128":{},"132":{},"133":{},"135":{},"137":{},"140":{},"142":{},"146":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"193":{},"194":{},"198":{},"199":{},"201":{},"203":{},"206":{},"208":{},"212":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{}},"component":{}}],["applic",{"_index":105,"title":{"22":{},"33":{},"58":{},"69":{},"102":{},"118":{},"125":{},"158":{},"179":{},"191":{},"224":{},"245":{},"257":{},"2-21":{},"2-28":{},"2-37":{},"2-44":{},"2-66":{},"22-5":{},"41-21":{},"41-28":{},"41-37":{},"41-44":{},"41-66":{},"58-5":{},"77-16":{},"128-4":{},"130-14":{},"194-4":{},"196-14":{}},"name":{},"text":{"2":{},"5":{},"7":{},"11":{},"19":{},"20":{},"21":{},"22":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"35":{},"36":{},"38":{},"39":{},"41":{},"44":{},"46":{},"55":{},"56":{},"57":{},"58":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"71":{},"72":{},"74":{},"75":{},"77":{},"80":{},"83":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"133":{},"136":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"184":{},"185":{},"186":{},"189":{},"192":{},"194":{},"196":{},"199":{},"202":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["application.conf",{"_index":3050,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["application.properti",{"_index":1154,"title":{},"name":{},"text":{"19":{},"20":{},"21":{},"55":{},"56":{},"57":{},"100":{},"101":{},"120":{},"156":{},"157":{},"183":{},"222":{},"223":{},"249":{}},"component":{}}],["application.proprti",{"_index":2819,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["application/json",{"_index":1379,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["application/x",{"_index":1351,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["application’",{"_index":1206,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["applyuserrepos.duck.j",{"_index":1866,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["approach",{"_index":1650,"title":{"240-11":{}},"name":{},"text":{"32":{},"68":{},"80":{},"94":{},"96":{},"98":{},"117":{},"127":{},"133":{},"148":{},"151":{},"154":{},"193":{},"199":{},"214":{},"217":{},"220":{}},"component":{}}],["appropri",{"_index":768,"title":{},"name":{},"text":{"8":{},"20":{},"56":{},"81":{},"98":{},"101":{},"153":{},"154":{},"155":{},"157":{},"189":{},"219":{},"220":{},"221":{},"223":{},"255":{}},"component":{}}],["approv",{"_index":2231,"title":{},"name":{},"text":{"81":{}},"component":{}}],["apsolon",{"_index":1881,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["aqua",{"_index":2304,"title":{},"name":{},"text":{"83":{},"136":{},"138":{},"151":{},"202":{},"204":{},"217":{}},"component":{}}],["aquasec_scannercli_url",{"_index":3207,"title":{},"name":{},"text":{"138":{},"204":{}},"component":{}}],["arbitrari",{"_index":3415,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["archetyp",{"_index":648,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["architectur",{"_index":1132,"title":{"19":{},"55":{},"100":{},"156":{},"222":{},"25-2":{},"26-2":{},"27-2":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-2":{},"66-2":{},"67-2":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-2":{},"115-2":{},"116-2":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"253-2":{},"254-2":{},"256-2":{},"257-2":{}},"name":{"19":{},"55":{},"100":{},"156":{},"222":{}},"text":{"21":{},"57":{},"109":{},"153":{},"170":{},"189":{},"219":{},"236":{},"255":{}},"component":{}}],["archiv",{"_index":3298,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["are.html",{"_index":3233,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["arg",{"_index":1996,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"100":{},"151":{},"155":{},"156":{},"181":{},"217":{},"221":{},"222":{},"247":{}},"component":{}}],["argument",{"_index":2415,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["arm",{"_index":3725,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["around",{"_index":2150,"title":{},"name":{},"text":{"80":{},"133":{},"153":{},"189":{},"199":{},"219":{},"255":{}},"component":{}}],["arraylist",{"_index":1314,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["artefact",{"_index":3189,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["artifact",{"_index":1091,"title":{"27-5":{},"27-7":{},"62-5":{},"62-7":{},"111-5":{},"111-7":{},"120-4":{},"172-5":{},"172-7":{},"183-4":{},"238-5":{},"238-7":{},"249-4":{}},"name":{},"text":{"14":{},"15":{},"22":{},"25":{},"27":{},"50":{},"51":{},"58":{},"62":{},"66":{},"77":{},"80":{},"96":{},"98":{},"102":{},"111":{},"113":{},"115":{},"120":{},"130":{},"133":{},"151":{},"154":{},"172":{},"175":{},"177":{},"183":{},"196":{},"199":{},"217":{},"220":{},"238":{},"241":{},"243":{},"249":{}},"component":{}}],["artifactid",{"_index":2621,"title":{},"name":{},"text":{"96":{},"151":{},"153":{},"189":{},"217":{},"219":{},"255":{}},"component":{}}],["ascii",{"_index":2343,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["asciidoc",{"_index":2266,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["asciidoctor",{"_index":2265,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["ask",{"_index":453,"title":{},"name":{},"text":{"2":{},"41":{},"158":{},"224":{}},"component":{}}],["ask_password",{"_index":1689,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["aspect",{"_index":926,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"97":{},"99":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["assembl",{"_index":990,"title":{},"name":{},"text":{"14":{},"30":{},"50":{},"64":{},"96":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["asset",{"_index":1803,"title":{},"name":{},"text":{"35":{},"36":{},"38":{},"71":{},"72":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["assign",{"_index":3370,"title":{},"name":{},"text":{"153":{},"155":{},"157":{},"158":{},"219":{},"221":{},"223":{},"224":{}},"component":{}}],["associ",{"_index":2593,"title":{},"name":{},"text":{"96":{},"151":{},"181":{},"217":{},"247":{}},"component":{}}],["assum",{"_index":180,"title":{},"name":{},"text":{"2":{},"8":{},"32":{},"41":{},"47":{},"68":{},"77":{},"81":{},"88":{},"94":{},"95":{},"98":{},"100":{},"108":{},"115":{},"117":{},"126":{},"130":{},"141":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"169":{},"177":{},"192":{},"196":{},"207":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"235":{},"243":{},"258":{}},"component":{}}],["assumpt",{"_index":2257,"title":{},"name":{},"text":{"81":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["assur",{"_index":2667,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["async",{"_index":3546,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["asynchron",{"_index":3399,"title":{},"name":{},"text":{"153":{},"174":{},"189":{},"219":{},"240":{},"255":{}},"component":{}}],["ath",{"_index":2985,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["atlassian",{"_index":11,"title":{"2-6":{},"2-12":{},"2-13":{},"2-35":{},"2-45":{},"41-6":{},"41-12":{},"41-13":{},"41-35":{},"41-45":{},"77-7":{},"130-5":{},"196-5":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"19":{},"20":{},"40":{},"41":{},"42":{},"44":{},"55":{},"56":{},"76":{},"77":{},"78":{},"83":{},"90":{},"100":{},"101":{},"129":{},"130":{},"131":{},"136":{},"144":{},"146":{},"156":{},"157":{},"195":{},"196":{},"197":{},"202":{},"210":{},"212":{},"222":{},"223":{}},"component":{}}],["atlassian1",{"_index":573,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["atlassian_publ",{"_index":472,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["atom",{"_index":1389,"title":{},"name":{},"text":{"22":{},"58":{},"93":{},"101":{},"147":{},"151":{},"157":{},"213":{},"217":{},"223":{}},"component":{}}],["attempt",{"_index":2647,"title":{},"name":{},"text":{"98":{},"126":{},"128":{},"154":{},"192":{},"194":{},"220":{},"258":{}},"component":{}}],["attlassian",{"_index":114,"title":{"2-29":{},"41-29":{}},"name":{},"text":{},"component":{}}],["attribut",{"_index":853,"title":{},"name":{},"text":{"11":{},"32":{},"68":{},"98":{},"117":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["attribute=preferred_usernam",{"_index":1245,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["audit",{"_index":3771,"title":{},"name":{},"text":{"240":{}},"component":{}}],["auditor",{"_index":3461,"title":{},"name":{},"text":{"160":{},"187":{},"188":{},"226":{},"253":{},"254":{}},"component":{}}],["august",{"_index":2276,"title":{"83-10":{},"136-10":{},"202-10":{}},"name":{},"text":{},"component":{}}],["auth",{"_index":711,"title":{"11":{},"101-13":{},"157-16":{},"223-16":{}},"name":{},"text":{"6":{},"11":{},"12":{},"13":{},"14":{},"45":{},"49":{},"50":{},"77":{},"87":{},"96":{},"98":{},"99":{},"100":{},"101":{},"109":{},"130":{},"140":{},"151":{},"154":{},"155":{},"156":{},"157":{},"170":{},"196":{},"206":{},"217":{},"220":{},"221":{},"222":{},"223":{},"236":{}},"component":{}}],["auth.enabled=tru",{"_index":2961,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["auth/z",{"_index":3005,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["authent",{"_index":356,"title":{"19-4":{},"20-1":{},"20-2":{},"20-3":{},"20-4":{},"55-4":{},"56-1":{},"56-2":{},"56-3":{},"56-4":{},"100-5":{},"101-10":{},"101-11":{},"101-12":{},"101-13":{},"101-14":{},"156-5":{},"157-13":{},"157-14":{},"157-15":{},"157-16":{},"157-17":{},"222-5":{},"223-13":{},"223-14":{},"223-15":{},"223-16":{},"223-17":{}},"name":{},"text":{"2":{},"11":{},"13":{},"19":{},"20":{},"31":{},"33":{},"41":{},"49":{},"55":{},"56":{},"78":{},"80":{},"94":{},"96":{},"100":{},"101":{},"131":{},"133":{},"146":{},"148":{},"151":{},"156":{},"157":{},"180":{},"181":{},"197":{},"199":{},"212":{},"214":{},"217":{},"222":{},"223":{},"246":{},"247":{}},"component":{}}],["authentif",{"_index":1615,"title":{},"name":{},"text":{"31":{},"32":{},"33":{},"68":{},"117":{}},"component":{}}],["author",{"_index":1040,"title":{"108":{},"169":{},"235":{},"98-24":{},"123-8":{},"154-29":{},"186-9":{},"220-29":{},"252-9":{}},"name":{"108":{},"169":{},"235":{}},"text":{"14":{},"50":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"108":{},"123":{},"128":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"169":{},"186":{},"194":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"235":{},"252":{}},"component":{}}],["authoris",{"_index":362,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["authproxi",{"_index":544,"title":{},"name":{"11":{}},"text":{"2":{},"12":{},"41":{}},"component":{}}],["auto",{"_index":404,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"96":{},"117":{},"150":{},"151":{},"216":{},"217":{}},"component":{}}],["autocloneenvironmentsfromsourcemap",{"_index":919,"title":{"14-5":{},"50-5":{}},"name":{},"text":{"14":{},"50":{},"96":{},"150":{},"216":{}},"component":{}}],["autodetect",{"_index":3381,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["autom",{"_index":466,"title":{"98-3":{},"98-7":{},"98-10":{},"98-11":{},"98-14":{},"126-3":{},"126-7":{},"126-10":{},"126-11":{},"126-12":{},"126-13":{},"154-3":{},"154-10":{},"154-13":{},"154-14":{},"154-17":{},"192-3":{},"192-7":{},"192-10":{},"192-11":{},"192-12":{},"192-13":{},"220-3":{},"220-10":{},"220-13":{},"220-14":{},"220-17":{},"258-3":{},"258-7":{},"258-10":{},"258-11":{},"258-12":{},"258-13":{}},"name":{},"text":{"2":{},"41":{},"83":{},"98":{},"126":{},"128":{},"136":{},"137":{},"154":{},"192":{},"194":{},"202":{},"203":{},"220":{},"258":{}},"component":{}}],["automat",{"_index":377,"title":{"96-12":{}},"name":{},"text":{"2":{},"6":{},"13":{},"14":{},"29":{},"34":{},"41":{},"45":{},"47":{},"49":{},"50":{},"63":{},"70":{},"77":{},"80":{},"81":{},"82":{},"83":{},"85":{},"87":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"101":{},"119":{},"126":{},"128":{},"130":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"141":{},"147":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"192":{},"194":{},"196":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"207":{},"213":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"258":{}},"component":{}}],["avail",{"_index":192,"title":{"123-2":{},"186-2":{},"252-2":{}},"name":{},"text":{"2":{},"6":{},"14":{},"19":{},"27":{},"39":{},"41":{},"45":{},"50":{},"55":{},"62":{},"75":{},"77":{},"79":{},"80":{},"87":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"123":{},"127":{},"130":{},"132":{},"133":{},"137":{},"140":{},"142":{},"146":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"160":{},"162":{},"163":{},"164":{},"165":{},"186":{},"193":{},"196":{},"198":{},"199":{},"203":{},"206":{},"208":{},"212":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"226":{},"228":{},"229":{},"230":{},"231":{},"240":{},"252":{}},"component":{}}],["avatar",{"_index":416,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["avil",{"_index":685,"title":{},"name":{},"text":{"5":{},"44":{}},"component":{}}],["avoid",{"_index":1010,"title":{},"name":{},"text":{"14":{},"41":{},"47":{},"50":{},"88":{},"95":{},"96":{},"99":{},"100":{},"141":{},"149":{},"151":{},"153":{},"155":{},"156":{},"207":{},"215":{},"217":{},"219":{},"221":{},"222":{},"240":{}},"component":{}}],["aw",{"_index":64,"title":{"187":{},"253":{}},"name":{"187":{},"253":{}},"text":{"1":{},"40":{},"76":{},"129":{},"136":{},"182":{},"186":{},"187":{},"195":{},"202":{},"248":{},"252":{},"253":{}},"component":{}}],["awar",{"_index":756,"title":{},"name":{},"text":{"7":{},"46":{},"93":{},"103":{},"104":{},"105":{},"107":{},"108":{},"147":{},"159":{},"162":{},"163":{},"164":{},"165":{},"168":{},"169":{},"213":{},"225":{},"228":{},"229":{},"230":{},"231":{},"234":{},"235":{}},"component":{}}],["away",{"_index":634,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["awesom",{"_index":3590,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["axum",{"_index":3499,"title":{"174":{},"240":{}},"name":{"174":{},"240":{}},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["azur",{"_index":2934,"title":{"188":{},"254":{}},"name":{"188":{},"254":{}},"text":{"101":{},"157":{},"186":{},"188":{},"223":{},"252":{},"254":{}},"component":{}}],["azure.activedirectory.environment=glob",{"_index":2944,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["azure.activedirectory.ten",{"_index":2950,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["azure.activedirectory.us",{"_index":2940,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["azure.properti",{"_index":2935,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["b",{"_index":1101,"title":{"98-8":{},"126-8":{},"154-11":{},"192-8":{},"220-11":{},"258-8":{}},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"81":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["b.git",{"_index":2653,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["babel.config.j",{"_index":1887,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["back",{"_index":1727,"title":{},"name":{},"text":{"32":{},"68":{},"79":{},"81":{},"82":{},"98":{},"117":{},"126":{},"127":{},"132":{},"135":{},"154":{},"161":{},"192":{},"193":{},"198":{},"201":{},"220":{},"227":{},"234":{},"258":{}},"component":{}}],["backend",{"_index":1129,"title":{"26":{},"27":{},"28":{},"29":{},"30":{},"61":{},"62":{},"63":{},"64":{},"65":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"19-3":{},"39-2":{},"55-3":{},"75-2":{},"100-4":{},"123-3":{},"156-4":{},"186-3":{},"222-4":{},"252-3":{}},"name":{},"text":{"19":{},"39":{},"55":{},"75":{},"98":{},"100":{},"101":{},"109":{},"123":{},"126":{},"153":{},"154":{},"156":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"186":{},"188":{},"189":{},"192":{},"219":{},"220":{},"222":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"252":{},"254":{},"255":{},"258":{}},"component":{}}],["background",{"_index":923,"title":{"14-18":{},"50-18":{},"97-1":{},"152-1":{},"218-1":{}},"name":{},"text":{},"component":{}}],["backup",{"_index":2080,"title":{"79-3":{},"80-4":{},"132-3":{},"133-4":{},"198-3":{},"199-4":{}},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_cd.yml",{"_index":2088,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_prov_cd.yml",{"_index":2089,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_prov_dev.yml",{"_index":2090,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backup_prov_test.yml",{"_index":2091,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["backward",{"_index":2408,"title":{},"name":{},"text":{"95":{},"149":{},"161":{},"172":{},"215":{},"227":{},"234":{},"238":{}},"component":{}}],["bad",{"_index":627,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["bake",{"_index":1363,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["ban",{"_index":3776,"title":{},"name":{},"text":{"240":{}},"component":{}}],["bar",{"_index":398,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"47":{},"50":{},"88":{},"95":{},"96":{},"127":{},"141":{},"149":{},"151":{},"193":{},"207":{},"215":{},"217":{}},"component":{}}],["bar:latest",{"_index":2988,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["base",{"_index":214,"title":{"7":{},"12":{},"46":{},"85":{},"138":{},"204":{},"22-4":{},"58-4":{},"84-3":{},"101-3":{},"101-8":{},"157-6":{},"157-11":{},"223-6":{},"223-11":{}},"name":{"7":{},"46":{},"85":{},"138":{},"204":{}},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"11":{},"12":{},"14":{},"19":{},"21":{},"22":{},"24":{},"27":{},"30":{},"31":{},"32":{},"33":{},"34":{},"38":{},"39":{},"41":{},"44":{},"45":{},"46":{},"47":{},"50":{},"55":{},"57":{},"58":{},"60":{},"62":{},"64":{},"67":{},"68":{},"69":{},"70":{},"74":{},"75":{},"79":{},"80":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"94":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"102":{},"105":{},"108":{},"109":{},"111":{},"113":{},"116":{},"117":{},"118":{},"119":{},"126":{},"127":{},"128":{},"132":{},"133":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"162":{},"163":{},"164":{},"165":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"182":{},"184":{},"185":{},"189":{},"192":{},"193":{},"194":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"228":{},"229":{},"230":{},"231":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"248":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["base.html",{"_index":1570,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["base64",{"_index":2832,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["base64_credenti",{"_index":2842,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["base64_credentials=$(echo",{"_index":2833,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["bash",{"_index":220,"title":{},"name":{},"text":{"2":{},"24":{},"29":{},"41":{},"60":{},"63":{},"77":{},"79":{},"100":{},"112":{},"130":{},"132":{},"156":{},"173":{},"196":{},"198":{},"222":{},"227":{},"234":{},"239":{}},"component":{}}],["basic",{"_index":56,"title":{"2-41":{},"22-1":{},"32-1":{},"41-41":{},"58-1":{},"68-1":{},"101-13":{},"102-1":{},"117-1":{},"157-16":{},"223-16":{}},"name":{},"text":{"1":{},"2":{},"20":{},"22":{},"27":{},"28":{},"29":{},"30":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"56":{},"58":{},"62":{},"63":{},"64":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"95":{},"100":{},"101":{},"102":{},"109":{},"111":{},"112":{},"113":{},"114":{},"119":{},"120":{},"121":{},"122":{},"123":{},"127":{},"129":{},"136":{},"149":{},"151":{},"156":{},"157":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"181":{},"183":{},"184":{},"185":{},"186":{},"193":{},"195":{},"202":{},"215":{},"217":{},"222":{},"223":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"247":{},"249":{},"250":{},"251":{},"252":{}},"component":{}}],["basic_auth_credenti",{"_index":2822,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["basicauth",{"_index":1029,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["batch",{"_index":3155,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["baz",{"_index":1969,"title":{},"name":{},"text":{"47":{},"88":{},"95":{},"96":{},"141":{},"149":{},"207":{},"215":{}},"component":{}}],["bc",{"_index":2107,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["bc,i",{"_index":2577,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["bc.env",{"_index":550,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["bc:/spec/output/imagelabel",{"_index":2581,"title":{},"name":{},"text":{"96":{}},"component":{}}],["bc:/spec/output/to/nam",{"_index":2582,"title":{},"name":{},"text":{"96":{}},"component":{}}],["be",{"_index":867,"title":{},"name":{},"text":{"12":{},"14":{},"17":{},"18":{},"23":{},"34":{},"50":{},"53":{},"54":{},"59":{},"70":{},"94":{},"96":{},"109":{},"119":{},"148":{},"150":{},"151":{},"153":{},"170":{},"189":{},"214":{},"216":{},"217":{},"219":{},"236":{},"255":{}},"component":{}}],["bean",{"_index":1173,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["bear",{"_index":3080,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["becom",{"_index":3329,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["befor",{"_index":283,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"32":{},"41":{},"45":{},"50":{},"68":{},"77":{},"79":{},"80":{},"81":{},"95":{},"96":{},"98":{},"99":{},"100":{},"117":{},"130":{},"132":{},"133":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"172":{},"196":{},"198":{},"199":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"238":{}},"component":{}}],["beforehand",{"_index":3424,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["begin",{"_index":405,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["behav",{"_index":1646,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["behavior",{"_index":1388,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"181":{},"223":{},"247":{}},"component":{}}],["behaviour",{"_index":767,"title":{"8-3":{},"47-7":{},"88-7":{},"94-7":{},"141-7":{},"148-7":{},"207-7":{},"214-7":{}},"name":{},"text":{"79":{},"94":{},"96":{},"101":{},"132":{},"148":{},"151":{},"157":{},"198":{},"214":{},"217":{},"223":{}},"component":{}}],["behind",{"_index":1747,"title":{},"name":{},"text":{"32":{},"68":{},"82":{},"93":{},"117":{},"135":{},"147":{},"180":{},"201":{},"213":{},"246":{}},"component":{}}],["bellow",{"_index":1411,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["belong",{"_index":480,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"101":{},"154":{},"157":{},"220":{},"223":{}},"component":{}}],["below",{"_index":330,"title":{},"name":{},"text":{"2":{},"19":{},"27":{},"41":{},"55":{},"62":{},"80":{},"96":{},"100":{},"101":{},"111":{},"114":{},"133":{},"136":{},"151":{},"154":{},"156":{},"157":{},"172":{},"176":{},"199":{},"202":{},"217":{},"220":{},"222":{},"223":{},"238":{},"242":{}},"component":{}}],["beneath",{"_index":419,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["benefit",{"_index":2444,"title":{},"name":{},"text":{"95":{},"101":{},"149":{},"157":{},"215":{},"223":{}},"component":{}}],["benefiti",{"_index":2241,"title":{},"name":{},"text":{"81":{}},"component":{}}],["besid",{"_index":62,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"78":{},"129":{},"131":{},"195":{},"197":{}},"component":{}}],["best",{"_index":1852,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"98":{},"108":{},"122":{},"126":{},"127":{},"153":{},"154":{},"155":{},"169":{},"185":{},"192":{},"193":{},"219":{},"220":{},"221":{},"235":{},"251":{},"258":{}},"component":{}}],["better",{"_index":1119,"title":{},"name":{},"text":{"14":{},"34":{},"50":{},"70":{},"97":{},"119":{},"152":{},"218":{}},"component":{}}],["between",{"_index":597,"title":{"151-29":{},"217-29":{}},"name":{},"text":{"4":{},"13":{},"14":{},"19":{},"43":{},"47":{},"49":{},"50":{},"55":{},"83":{},"88":{},"91":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"126":{},"127":{},"128":{},"136":{},"141":{},"142":{},"145":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"189":{},"192":{},"193":{},"194":{},"202":{},"207":{},"208":{},"211":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"255":{},"258":{}},"component":{}}],["bewar",{"_index":3276,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["beyond",{"_index":21,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["big",{"_index":2915,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["bigger",{"_index":1070,"title":{},"name":{},"text":{"14":{},"50":{},"81":{},"96":{},"151":{},"217":{}},"component":{}}],["biggest",{"_index":2400,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["bill",{"_index":3209,"title":{},"name":{},"text":{"138":{},"204":{}},"component":{}}],["bin",{"_index":3522,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["bin/activ",{"_index":3614,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["binari",{"_index":1068,"title":{},"name":{},"text":{"14":{},"17":{},"26":{},"50":{},"53":{},"61":{},"80":{},"96":{},"110":{},"133":{},"151":{},"171":{},"173":{},"174":{},"181":{},"199":{},"217":{},"237":{},"239":{},"240":{},"247":{}},"component":{}}],["binarie(",{"_index":3795,"title":{},"name":{},"text":{"240":{}},"component":{}}],["bind",{"_index":749,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["binding:1.12",{"_index":701,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["binding:1.18",{"_index":2316,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["bit",{"_index":3159,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["bitbucket",{"_index":52,"title":{"2-29":{},"2-33":{},"2-34":{},"8-1":{},"22-2":{},"41-29":{},"41-33":{},"41-34":{},"47-6":{},"58-2":{},"77-9":{},"88-6":{},"96-10":{},"130-6":{},"141-6":{},"151-10":{},"157-3":{},"196-6":{},"207-6":{},"217-10":{},"223-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"8":{},"14":{},"19":{},"20":{},"22":{},"39":{},"40":{},"41":{},"42":{},"44":{},"45":{},"47":{},"50":{},"55":{},"56":{},"58":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"90":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"123":{},"126":{},"129":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"144":{},"146":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"186":{},"192":{},"195":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"210":{},"212":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"252":{},"258":{}},"component":{}}],["bitbucket.admin_password",{"_index":2969,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.admin_password=bitbucket_admin",{"_index":1265,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.admin_us",{"_index":2970,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.admin_user=bitbucket_admin",{"_index":1266,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["bitbucket.default.admin.group",{"_index":3442,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["bitbucket.default.user.group",{"_index":3441,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["bitbucket.technical.us",{"_index":3440,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["bitbucket.yml",{"_index":51,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["bitbucket_host",{"_index":1057,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["bitbucket_host=bitbucket.acme.org",{"_index":3199,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["bitbucket_project=opendevstack",{"_index":3200,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["bitbucket_url",{"_index":2488,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["bitbuckethost",{"_index":1056,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["bitbucketservic",{"_index":2531,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["bitbucketservice.postcomment(context.reponam",{"_index":2547,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["bitbucketurl",{"_index":2432,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["bix",{"_index":2984,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["bix.jpg",{"_index":1568,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["black",{"_index":3636,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["blank",{"_index":1943,"title":{},"name":{},"text":{"39":{},"47":{},"75":{},"88":{},"123":{},"141":{},"186":{},"207":{},"252":{}},"component":{}}],["bleed",{"_index":2052,"title":{},"name":{},"text":{"77":{},"80":{},"81":{},"133":{},"199":{}},"component":{}}],["blob",{"_index":132,"title":{"2-59":{},"41-59":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["block",{"_index":1127,"title":{},"name":{},"text":{"14":{},"28":{},"50":{},"65":{},"96":{},"97":{},"109":{},"114":{},"151":{},"152":{},"170":{},"176":{},"181":{},"217":{},"218":{},"236":{},"242":{},"247":{}},"component":{}}],["blown",{"_index":633,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["blueocean:1.18.0",{"_index":2319,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["blueprint",{"_index":1340,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["board",{"_index":417,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["bodi",{"_index":2850,"title":{},"name":{},"text":{"100":{},"109":{},"156":{},"170":{},"222":{},"236":{}},"component":{}}],["body_filter_by_lua_block",{"_index":3020,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["boilerpl",{"_index":678,"title":{"24":{},"32":{},"60":{},"68":{},"117":{},"95-5":{},"149-5":{},"215-5":{}},"name":{},"text":{"5":{},"8":{},"22":{},"24":{},"29":{},"32":{},"38":{},"39":{},"44":{},"58":{},"60":{},"63":{},"68":{},"74":{},"75":{},"80":{},"83":{},"95":{},"108":{},"112":{},"117":{},"123":{},"133":{},"136":{},"149":{},"158":{},"169":{},"173":{},"174":{},"186":{},"199":{},"202":{},"215":{},"224":{},"235":{},"239":{},"240":{},"252":{}},"component":{}}],["boilerplac",{"_index":1418,"title":{},"name":{},"text":{"24":{},"39":{},"60":{},"75":{}},"component":{}}],["book",{"_index":3586,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["boolean",{"_index":1047,"title":{},"name":{},"text":{"14":{},"22":{},"50":{},"58":{},"101":{},"151":{},"153":{},"157":{},"217":{},"219":{},"223":{}},"component":{}}],["booststrap",{"_index":1882,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["boot",{"_index":890,"title":{"27":{},"62":{},"111":{},"172":{},"238":{},"13-4":{},"49-4":{}},"name":{},"text":{"19":{},"20":{},"27":{},"55":{},"56":{},"62":{},"79":{},"93":{},"100":{},"101":{},"111":{},"132":{},"136":{},"147":{},"153":{},"156":{},"157":{},"172":{},"189":{},"198":{},"202":{},"213":{},"219":{},"222":{},"223":{},"238":{},"255":{}},"component":{}}],["bootrun",{"_index":1152,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["bootstrap",{"_index":3405,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["both",{"_index":993,"title":{},"name":{},"text":{"14":{},"19":{},"21":{},"32":{},"47":{},"50":{},"55":{},"57":{},"68":{},"77":{},"79":{},"80":{},"88":{},"95":{},"99":{},"100":{},"101":{},"104":{},"108":{},"117":{},"130":{},"132":{},"133":{},"141":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"187":{},"188":{},"189":{},"196":{},"198":{},"199":{},"207":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"253":{},"254":{},"255":{}},"component":{}}],["boto",{"_index":3689,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["bottom",{"_index":971,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["boundari",{"_index":1675,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["box",{"_index":221,"title":{},"name":{},"text":{"2":{},"20":{},"36":{},"37":{},"41":{},"56":{},"72":{},"73":{},"78":{},"98":{},"101":{},"122":{},"123":{},"131":{},"136":{},"154":{},"157":{},"185":{},"186":{},"197":{},"202":{},"220":{},"223":{},"251":{},"252":{}},"component":{}}],["branch",{"_index":455,"title":{"24-7":{},"60-7":{},"81-3":{},"96-4":{},"98-10":{},"126-10":{},"151-4":{},"154-13":{},"192-10":{},"217-4":{},"220-13":{},"258-10":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"21":{},"24":{},"27":{},"36":{},"39":{},"41":{},"44":{},"45":{},"47":{},"50":{},"57":{},"60":{},"62":{},"72":{},"75":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"95":{},"96":{},"98":{},"101":{},"102":{},"108":{},"111":{},"122":{},"126":{},"132":{},"133":{},"136":{},"141":{},"147":{},"149":{},"150":{},"151":{},"154":{},"157":{},"158":{},"169":{},"172":{},"181":{},"185":{},"192":{},"198":{},"199":{},"202":{},"207":{},"213":{},"215":{},"216":{},"217":{},"220":{},"223":{},"224":{},"235":{},"238":{},"247":{},"251":{},"258":{}},"component":{}}],["branch(",{"_index":2553,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["branch,tag",{"_index":2335,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["branch/branch",{"_index":3226,"title":{"150-6":{},"216-6":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["branchtoenvironmentmap",{"_index":918,"title":{"14-4":{},"50-4":{}},"name":{},"text":{"14":{},"50":{},"80":{},"95":{},"96":{},"133":{},"149":{},"150":{},"151":{},"199":{},"215":{},"216":{},"217":{}},"component":{}}],["break",{"_index":1095,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"79":{},"96":{},"132":{},"151":{},"198":{},"217":{}},"component":{}}],["bring",{"_index":2148,"title":{},"name":{},"text":{"80":{},"98":{},"133":{},"154":{},"199":{},"220":{}},"component":{}}],["broad",{"_index":3141,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["brought",{"_index":2670,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["brows",{"_index":422,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["browser",{"_index":558,"title":{},"name":{},"text":{"2":{},"19":{},"35":{},"36":{},"37":{},"41":{},"55":{},"71":{},"72":{},"73":{},"100":{},"101":{},"121":{},"122":{},"156":{},"157":{},"184":{},"185":{},"222":{},"223":{},"250":{},"251":{}},"component":{}}],["browserslist",{"_index":1788,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["bucket",{"_index":3691,"title":{},"name":{},"text":{"182":{},"187":{},"248":{},"253":{}},"component":{}}],["bug",{"_index":898,"title":{},"name":{},"text":{"13":{},"49":{},"81":{},"83":{},"93":{},"107":{},"136":{},"147":{},"168":{},"202":{},"213":{},"234":{}},"component":{}}],["bug/fix",{"_index":2226,"title":{},"name":{},"text":{"81":{}},"component":{}}],["bugfix",{"_index":3153,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["bugtrack",{"_index":1386,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["bugtrackerspac",{"_index":2865,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["build",{"_index":514,"title":{"13-3":{},"14-15":{},"47-3":{},"49-3":{},"50-15":{},"80-26":{},"82-3":{},"84-1":{},"84-2":{},"84-3":{},"84-4":{},"88-3":{},"92-1":{},"98-12":{},"133-26":{},"135-3":{},"141-3":{},"199-26":{},"201-3":{},"207-3":{},"240-10":{}},"name":{},"text":{"2":{},"4":{},"5":{},"7":{},"13":{},"14":{},"15":{},"16":{},"18":{},"19":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"46":{},"47":{},"49":{},"50":{},"51":{},"52":{},"54":{},"55":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"79":{},"80":{},"82":{},"83":{},"84":{},"88":{},"91":{},"92":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"132":{},"133":{},"135":{},"136":{},"137":{},"141":{},"142":{},"145":{},"146":{},"148":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"158":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"183":{},"184":{},"185":{},"186":{},"189":{},"192":{},"194":{},"198":{},"199":{},"201":{},"202":{},"203":{},"207":{},"208":{},"211":{},"212":{},"214":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"224":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"249":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["build.gradl",{"_index":1087,"title":{},"name":{},"text":{"14":{},"19":{},"27":{},"50":{},"55":{},"62":{},"96":{},"100":{},"111":{},"120":{},"151":{},"156":{},"172":{},"183":{},"217":{},"222":{},"238":{},"249":{}},"component":{}}],["build.openshift.io/v1",{"_index":2176,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["build.openshift.io/v1.buildconfig.html#object",{"_index":1976,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["build.properti",{"_index":1600,"title":{},"name":{},"text":{"30":{},"64":{},"113":{},"175":{},"241":{}},"component":{}}],["build.sbt",{"_index":1599,"title":{},"name":{},"text":{"30":{},"64":{},"113":{},"175":{},"241":{}},"component":{}}],["build.sh",{"_index":1444,"title":{},"name":{},"text":{"24":{},"39":{},"60":{},"75":{}},"component":{}}],["build/test",{"_index":2479,"title":{},"name":{},"text":{"96":{},"108":{},"115":{},"151":{},"169":{},"177":{},"217":{},"235":{},"243":{}},"component":{}}],["build?component=foo",{"_index":1972,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["build_numb",{"_index":997,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["build_url",{"_index":1001,"title":{"80-25":{},"133-25":{},"199-25":{}},"name":{},"text":{"14":{},"50":{},"80":{},"96":{},"99":{},"133":{},"151":{},"155":{},"199":{},"217":{},"221":{}},"component":{}}],["buildarg",{"_index":1098,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"96":{},"151":{},"217":{}},"component":{}}],["buildconfig",{"_index":741,"title":{},"name":{},"text":{"6":{},"8":{},"14":{},"18":{},"39":{},"45":{},"47":{},"50":{},"54":{},"75":{},"77":{},"80":{},"88":{},"96":{},"108":{},"128":{},"130":{},"133":{},"137":{},"141":{},"142":{},"146":{},"150":{},"151":{},"169":{},"194":{},"196":{},"199":{},"203":{},"207":{},"208":{},"212":{},"216":{},"217":{},"235":{}},"component":{}}],["buildconfig/imagestream",{"_index":2568,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["builder",{"_index":746,"title":{"25-6":{},"26-6":{},"27-12":{},"28-6":{},"29-6":{},"30-6":{},"31-6":{},"32-19":{},"33-6":{},"34-6":{},"35-6":{},"36-6":{},"37-6":{},"38-6":{},"61-6":{},"62-12":{},"63-6":{},"64-6":{},"65-6":{},"66-6":{},"67-6":{},"68-19":{},"69-6":{},"70-6":{},"71-6":{},"72-6":{},"73-6":{},"74-6":{},"109-9":{},"110-6":{},"111-12":{},"112-6":{},"113-6":{},"114-8":{},"115-6":{},"116-6":{},"117-19":{},"118-6":{},"119-6":{},"120-10":{},"121-6":{},"122-6":{},"124-6":{},"125-6":{},"170-10":{},"171-7":{},"172-13":{},"173-7":{},"174-7":{},"175-7":{},"176-9":{},"177-7":{},"178-8":{},"179-7":{},"180-7":{},"181-8":{},"182-5":{},"183-10":{},"184-7":{},"185-7":{},"187-6":{},"188-6":{},"190-6":{},"191-6":{},"236-10":{},"237-7":{},"238-13":{},"239-7":{},"240-7":{},"241-7":{},"242-9":{},"243-7":{},"244-8":{},"245-7":{},"246-7":{},"247-8":{},"248-5":{},"249-10":{},"250-7":{},"251-7":{},"253-6":{},"254-6":{},"256-6":{},"257-6":{}},"name":{},"text":{"7":{},"21":{},"26":{},"27":{},"28":{},"29":{},"34":{},"35":{},"36":{},"37":{},"38":{},"46":{},"57":{},"61":{},"62":{},"63":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"85":{},"102":{},"104":{},"110":{},"111":{},"112":{},"114":{},"119":{},"120":{},"121":{},"122":{},"138":{},"158":{},"171":{},"172":{},"173":{},"174":{},"176":{},"180":{},"181":{},"183":{},"184":{},"185":{},"204":{},"224":{},"237":{},"238":{},"239":{},"240":{},"242":{},"246":{},"247":{},"249":{},"250":{},"251":{}},"component":{}}],["buildfil",{"_index":956,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["buildnumb",{"_index":996,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["buildnumber=0",{"_index":2690,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["buildopenshiftimagestag",{"_index":3278,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["buildtim",{"_index":1003,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["buildtimeoutminut",{"_index":2473,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["buildtimeoutretri",{"_index":3306,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["buildurl",{"_index":1000,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["built",{"_index":723,"title":{"25-5":{},"26-5":{},"27-11":{},"28-5":{},"29-5":{},"30-5":{},"31-5":{},"32-18":{},"33-5":{},"34-5":{},"35-5":{},"36-5":{},"37-5":{},"38-5":{},"61-5":{},"62-11":{},"63-5":{},"64-5":{},"65-5":{},"66-5":{},"67-5":{},"68-18":{},"69-5":{},"70-5":{},"71-5":{},"72-5":{},"73-5":{},"74-5":{},"82-5":{},"109-8":{},"110-5":{},"111-11":{},"112-5":{},"113-5":{},"114-7":{},"115-5":{},"116-5":{},"117-18":{},"118-5":{},"119-5":{},"120-9":{},"121-5":{},"122-5":{},"124-5":{},"125-5":{},"135-5":{},"170-9":{},"171-6":{},"172-12":{},"173-6":{},"174-6":{},"175-6":{},"176-8":{},"177-6":{},"178-7":{},"179-6":{},"180-6":{},"181-5":{},"183-9":{},"184-6":{},"185-6":{},"187-5":{},"188-5":{},"190-5":{},"191-5":{},"201-5":{},"236-9":{},"237-6":{},"238-12":{},"239-6":{},"240-6":{},"241-6":{},"242-8":{},"243-6":{},"244-7":{},"245-6":{},"246-6":{},"247-5":{},"249-9":{},"250-6":{},"251-6":{},"253-5":{},"254-5":{},"256-5":{},"257-5":{}},"name":{},"text":{"6":{},"14":{},"17":{},"18":{},"21":{},"27":{},"32":{},"39":{},"45":{},"50":{},"53":{},"54":{},"57":{},"62":{},"68":{},"75":{},"80":{},"83":{},"85":{},"94":{},"96":{},"98":{},"99":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"111":{},"117":{},"128":{},"133":{},"136":{},"137":{},"138":{},"142":{},"146":{},"148":{},"150":{},"151":{},"154":{},"155":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"172":{},"174":{},"194":{},"199":{},"202":{},"203":{},"204":{},"208":{},"212":{},"214":{},"216":{},"217":{},"220":{},"221":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"238":{},"240":{}},"component":{}}],["bulk",{"_index":427,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["bundl",{"_index":1846,"title":{"98-20":{},"98-23":{},"154-23":{},"154-28":{},"220-23":{},"220-28":{}},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"98":{},"122":{},"154":{},"185":{},"220":{},"251":{}},"component":{}}],["busi",{"_index":3552,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["button",{"_index":392,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"132":{},"198":{}},"component":{}}],["c",{"_index":2626,"title":{"98-9":{},"126-9":{},"154-12":{},"192-9":{},"220-12":{},"258-9":{}},"name":{},"text":{"98":{},"126":{},"154":{},"181":{},"192":{},"220":{},"240":{},"247":{},"258":{}},"component":{}}],["c.git",{"_index":2656,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["ca",{"_index":725,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"204":{}},"component":{}}],["cach",{"_index":1011,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"153":{},"155":{},"181":{},"189":{},"217":{},"219":{},"221":{},"247":{},"255":{}},"component":{}}],["calcul",{"_index":2684,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"180":{},"219":{},"220":{},"246":{}},"component":{}}],["cale",{"_index":1271,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["call",{"_index":186,"title":{"22-5":{},"58-5":{},"101-7":{},"157-10":{},"223-10":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"20":{},"22":{},"27":{},"32":{},"34":{},"41":{},"44":{},"50":{},"55":{},"56":{},"58":{},"62":{},"68":{},"70":{},"76":{},"77":{},"78":{},"79":{},"83":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"117":{},"119":{},"129":{},"130":{},"131":{},"132":{},"136":{},"148":{},"151":{},"154":{},"155":{},"156":{},"157":{},"161":{},"172":{},"195":{},"196":{},"197":{},"198":{},"202":{},"214":{},"217":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"238":{}},"component":{}}],["candid",{"_index":467,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"151":{},"217":{}},"component":{}}],["can’t",{"_index":1681,"title":{},"name":{},"text":{"32":{},"68":{},"98":{},"117":{},"154":{},"220":{}},"component":{}}],["capabl",{"_index":1513,"title":{"98-15":{},"154-18":{},"220-18":{}},"name":{},"text":{"27":{},"32":{},"62":{},"68":{},"98":{},"101":{},"111":{},"117":{},"151":{},"154":{},"157":{},"172":{},"217":{},"220":{},"223":{},"238":{}},"component":{}}],["capacitor.config.xml",{"_index":3711,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["care",{"_index":69,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"15":{},"40":{},"41":{},"45":{},"50":{},"51":{},"76":{},"85":{},"129":{},"138":{},"195":{},"204":{}},"component":{}}],["care/chang",{"_index":1633,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["carefulli",{"_index":2110,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["cargo",{"_index":3500,"title":{},"name":{},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["cargo.lock",{"_index":3573,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["cargo.toml",{"_index":3574,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["case",{"_index":531,"title":{"22-6":{},"58-6":{}},"name":{},"text":{"2":{},"4":{},"14":{},"20":{},"21":{},"22":{},"25":{},"29":{},"32":{},"35":{},"36":{},"37":{},"38":{},"41":{},"43":{},"50":{},"56":{},"57":{},"58":{},"63":{},"66":{},"68":{},"71":{},"72":{},"73":{},"74":{},"81":{},"91":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"107":{},"115":{},"117":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"145":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"168":{},"172":{},"177":{},"184":{},"185":{},"186":{},"187":{},"188":{},"192":{},"193":{},"194":{},"211":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"234":{},"238":{},"240":{},"243":{},"250":{},"251":{},"252":{},"253":{},"254":{},"258":{}},"component":{}}],["cat",{"_index":2828,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["catalog",{"_index":639,"title":{},"name":{},"text":{"5":{},"44":{},"83":{}},"component":{}}],["catch",{"_index":3591,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["categori",{"_index":230,"title":{"128-1":{},"194-1":{}},"name":{},"text":{"2":{},"41":{},"128":{},"194":{}},"component":{}}],["catgeori",{"_index":3148,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["caus",{"_index":601,"title":{},"name":{},"text":{"4":{},"32":{},"43":{},"68":{},"91":{},"96":{},"114":{},"117":{},"145":{},"151":{},"176":{},"211":{},"217":{},"242":{}},"component":{}}],["caution",{"_index":979,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["cautiou",{"_index":1281,"title":{},"name":{},"text":{"21":{},"57":{},"102":{},"158":{},"224":{}},"component":{}}],["caveat",{"_index":2680,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["cd",{"_index":112,"title":{"2-26":{},"2-34":{},"8-2":{},"41-26":{},"41-34":{},"80-12":{},"80-22":{},"94-4":{},"128-3":{},"133-12":{},"133-22":{},"148-4":{},"194-3":{},"199-12":{},"199-22":{},"214-4":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"8":{},"13":{},"14":{},"19":{},"21":{},"22":{},"29":{},"36":{},"37":{},"41":{},"43":{},"44":{},"45":{},"47":{},"49":{},"50":{},"55":{},"57":{},"58":{},"63":{},"72":{},"73":{},"77":{},"79":{},"80":{},"83":{},"88":{},"91":{},"92":{},"94":{},"95":{},"96":{},"98":{},"100":{},"102":{},"108":{},"112":{},"122":{},"128":{},"130":{},"132":{},"133":{},"137":{},"141":{},"142":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"158":{},"169":{},"173":{},"178":{},"185":{},"187":{},"188":{},"194":{},"196":{},"198":{},"199":{},"203":{},"207":{},"208":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"224":{},"235":{},"239":{},"244":{},"251":{},"253":{},"254":{}},"component":{}}],["cd.$domain?trigger_secret=$secret",{"_index":2214,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd.192.168.56.101.nip.io",{"_index":372,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["cd.example.com?trigger_secret=s3cr3t",{"_index":1979,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["cd//cd",{"_index":2207,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd/airflow",{"_index":2000,"title":{},"name":{},"text":{"60":{}},"component":{}}],["cd/cd",{"_index":2158,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd/docgen:latest",{"_index":2201,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cd/jenkin",{"_index":2387,"title":{},"name":{},"text":{"94":{},"95":{},"96":{},"99":{},"108":{},"148":{},"149":{},"151":{},"155":{},"169":{},"214":{},"215":{},"217":{},"221":{},"235":{}},"component":{}}],["cd3e9082",{"_index":2440,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["cd:jenkin",{"_index":2706,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["cd_user",{"_index":342,"title":{},"name":{},"text":{"2":{},"13":{},"41":{},"49":{}},"component":{}}],["cd_user_id_b64/cd_user_pwd_b64",{"_index":2064,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["cd_user_wrong_cd_us",{"_index":2880,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["cdproject",{"_index":3268,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["cduser",{"_index":2859,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["cdusercredentialsid",{"_index":2782,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["central",{"_index":743,"title":{"77-11":{},"79-1":{},"95-1":{},"128-2":{},"130-9":{},"132-1":{},"149-1":{},"194-2":{},"196-9":{},"198-1":{},"215-1":{}},"name":{},"text":{"6":{},"7":{},"8":{},"13":{},"22":{},"45":{},"46":{},"49":{},"58":{},"77":{},"79":{},"83":{},"92":{},"95":{},"99":{},"100":{},"102":{},"128":{},"130":{},"132":{},"136":{},"137":{},"142":{},"146":{},"149":{},"155":{},"156":{},"158":{},"194":{},"196":{},"198":{},"202":{},"203":{},"208":{},"212":{},"215":{},"221":{},"222":{},"224":{}},"component":{}}],["certain",{"_index":2238,"title":{},"name":{},"text":{"81":{},"98":{},"154":{},"220":{}},"component":{}}],["certif",{"_index":536,"title":{},"name":{},"text":{"2":{},"6":{},"7":{},"32":{},"41":{},"45":{},"46":{},"68":{},"85":{},"117":{},"138":{},"151":{},"204":{},"217":{}},"component":{}}],["chai",{"_index":1550,"title":{},"name":{},"text":{"28":{},"38":{},"65":{},"74":{}},"component":{}}],["challeng",{"_index":855,"title":{},"name":{},"text":{"11":{}},"component":{}}],["chanc",{"_index":2742,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["chang",{"_index":319,"title":{"4-3":{},"39-7":{},"43-3":{},"75-7":{},"79-7":{},"79-8":{},"81-1":{},"81-2":{},"91-3":{},"94-6":{},"95-3":{},"95-6":{},"95-7":{},"95-9":{},"132-7":{},"132-8":{},"145-3":{},"148-6":{},"149-3":{},"149-6":{},"149-7":{},"149-9":{},"150-8":{},"198-7":{},"198-8":{},"211-3":{},"214-6":{},"215-3":{},"215-6":{},"215-7":{},"215-9":{},"216-8":{}},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"12":{},"13":{},"14":{},"19":{},"21":{},"32":{},"34":{},"39":{},"41":{},"43":{},"45":{},"47":{},"49":{},"50":{},"55":{},"57":{},"60":{},"68":{},"70":{},"75":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"91":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"114":{},"117":{},"119":{},"120":{},"121":{},"127":{},"128":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"141":{},"142":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"169":{},"172":{},"173":{},"176":{},"180":{},"181":{},"183":{},"184":{},"193":{},"194":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"207":{},"208":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"238":{},"239":{},"242":{},"246":{},"247":{},"249":{},"250":{}},"component":{}}],["changeid",{"_index":2683,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["changeid=1234",{"_index":2689,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["changelog",{"_index":2251,"title":{},"name":{},"text":{"81":{}},"component":{}}],["changes/bugfix",{"_index":2297,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["chapter",{"_index":288,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"126":{},"154":{},"173":{},"192":{},"220":{},"239":{},"258":{}},"component":{}}],["char",{"_index":1021,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"100":{},"151":{},"156":{},"217":{},"222":{}},"component":{}}],["charact",{"_index":2249,"title":{},"name":{},"text":{"81":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["charnam",{"_index":3412,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["charset=utf",{"_index":1380,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["chart",{"_index":3135,"title":{},"name":{},"text":{"127":{},"142":{},"146":{},"151":{},"153":{},"174":{},"193":{},"208":{},"212":{},"217":{},"219":{},"240":{}},"component":{}}],["chart.nam",{"_index":3410,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["chart.vers",{"_index":3411,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["chart.yaml",{"_index":3565,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["chartdir",{"_index":3309,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["chartnam",{"_index":3384,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["check",{"_index":349,"title":{"5-8":{},"44-8":{},"80-11":{},"100-8":{},"133-11":{},"156-8":{},"199-11":{},"222-8":{}},"name":{},"text":{"2":{},"4":{},"12":{},"14":{},"26":{},"32":{},"41":{},"43":{},"50":{},"61":{},"68":{},"77":{},"79":{},"80":{},"83":{},"91":{},"94":{},"96":{},"100":{},"110":{},"113":{},"117":{},"127":{},"130":{},"132":{},"133":{},"136":{},"145":{},"148":{},"150":{},"151":{},"156":{},"171":{},"173":{},"174":{},"175":{},"180":{},"181":{},"182":{},"193":{},"196":{},"198":{},"199":{},"202":{},"211":{},"214":{},"216":{},"217":{},"222":{},"237":{},"239":{},"240":{},"241":{},"246":{},"247":{},"248":{}},"component":{}}],["check/format",{"_index":3062,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["checkbox",{"_index":326,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["checker",{"_index":721,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["checkout",{"_index":2141,"title":{},"name":{},"text":{"80":{},"81":{},"133":{},"199":{}},"component":{}}],["chef",{"_index":3721,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["cherri",{"_index":2239,"title":{},"name":{},"text":{"81":{}},"component":{}}],["chgrp",{"_index":3671,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["chmod",{"_index":2050,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"181":{},"196":{},"203":{},"208":{},"212":{},"247":{}},"component":{}}],["choic",{"_index":1283,"title":{},"name":{},"text":{"21":{},"57":{},"102":{},"158":{},"224":{}},"component":{}}],["choos",{"_index":126,"title":{"2-50":{},"41-50":{}},"name":{},"text":{"2":{},"5":{},"41":{},"44":{},"79":{},"83":{},"94":{},"95":{},"132":{},"148":{},"149":{},"158":{},"198":{},"214":{},"215":{},"224":{}},"component":{}}],["chose",{"_index":2258,"title":{"82-1":{},"135-1":{},"201-1":{}},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["chosen",{"_index":1031,"title":{},"name":{},"text":{"14":{},"22":{},"50":{},"58":{},"96":{},"97":{},"101":{},"102":{},"151":{},"152":{},"153":{},"157":{},"189":{},"217":{},"218":{},"219":{},"223":{},"255":{}},"component":{}}],["chown",{"_index":1956,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["chrome",{"_index":1889,"title":{},"name":{},"text":{"38":{},"74":{},"120":{},"183":{},"249":{}},"component":{}}],["chrono",{"_index":3783,"title":{},"name":{},"text":{"240":{}},"component":{}}],["ci",{"_index":652,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"96":{},"151":{},"174":{},"217":{},"240":{}},"component":{}}],["ci/cd",{"_index":656,"title":{"24-8":{},"60-8":{}},"name":{},"text":{"5":{},"24":{},"27":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"44":{},"60":{},"62":{},"63":{},"64":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"83":{},"111":{},"112":{},"113":{},"117":{},"119":{},"120":{},"122":{},"136":{},"172":{},"173":{},"174":{},"175":{},"180":{},"181":{},"183":{},"185":{},"187":{},"188":{},"202":{},"238":{},"239":{},"240":{},"241":{},"246":{},"247":{},"249":{},"251":{},"253":{},"254":{}},"component":{}}],["cicd",{"_index":3542,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["cidr",{"_index":358,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["cinc",{"_index":3460,"title":{},"name":{},"text":{"160":{},"187":{},"188":{},"226":{},"253":{},"254":{}},"component":{}}],["cirtic",{"_index":3740,"title":{},"name":{},"text":{"217":{}},"component":{}}],["ciskip",{"_index":1060,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["claim",{"_index":1062,"title":{},"name":{},"text":{"14":{},"20":{},"31":{},"50":{},"56":{},"67":{},"78":{},"96":{},"99":{},"101":{},"116":{},"131":{},"151":{},"155":{},"157":{},"178":{},"197":{},"217":{},"221":{},"223":{},"244":{}},"component":{}}],["class",{"_index":300,"title":{},"name":{},"text":{"2":{},"14":{},"19":{},"27":{},"32":{},"38":{},"41":{},"50":{},"55":{},"62":{},"68":{},"74":{},"94":{},"97":{},"100":{},"111":{},"117":{},"148":{},"152":{},"156":{},"172":{},"214":{},"218":{},"222":{},"238":{}},"component":{}}],["clean",{"_index":773,"title":{"127-3":{},"193-3":{}},"name":{},"text":{"8":{},"22":{},"32":{},"47":{},"58":{},"68":{},"81":{},"95":{},"96":{},"100":{},"101":{},"117":{},"127":{},"149":{},"151":{},"156":{},"157":{},"161":{},"172":{},"193":{},"215":{},"217":{},"222":{},"223":{},"227":{},"234":{},"238":{}},"component":{}}],["cleanup",{"_index":2523,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["clear",{"_index":2260,"title":{},"name":{},"text":{"82":{},"98":{},"135":{},"154":{},"201":{},"220":{}},"component":{}}],["clearer",{"_index":2404,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["cli",{"_index":726,"title":{},"name":{},"text":{"6":{},"7":{},"26":{},"27":{},"34":{},"35":{},"36":{},"38":{},"45":{},"46":{},"61":{},"62":{},"70":{},"71":{},"72":{},"74":{},"85":{},"105":{},"110":{},"111":{},"119":{},"121":{},"122":{},"127":{},"138":{},"151":{},"171":{},"174":{},"184":{},"185":{},"193":{},"204":{},"217":{},"237":{},"240":{},"250":{},"251":{}},"component":{}}],["cli.json",{"_index":1841,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["click",{"_index":157,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{},"47":{},"88":{},"141":{},"178":{},"207":{},"244":{}},"component":{}}],["client",{"_index":325,"title":{"78-6":{},"131-6":{},"197-6":{}},"name":{},"text":{"2":{},"4":{},"19":{},"20":{},"24":{},"41":{},"43":{},"55":{},"56":{},"60":{},"76":{},"78":{},"91":{},"100":{},"101":{},"109":{},"129":{},"131":{},"145":{},"156":{},"157":{},"170":{},"174":{},"195":{},"197":{},"211":{},"222":{},"223":{},"236":{},"240":{}},"component":{}}],["client.j",{"_index":1161,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["client.provid",{"_index":1254,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["clippi",{"_index":3588,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["clita",{"_index":820,"title":{},"name":{},"text":{"10":{}},"component":{}}],["clone",{"_index":267,"title":{"96-12":{},"126-13":{},"192-13":{},"258-13":{}},"name":{},"text":{"2":{},"14":{},"19":{},"27":{},"36":{},"37":{},"39":{},"41":{},"50":{},"55":{},"62":{},"72":{},"73":{},"75":{},"80":{},"81":{},"96":{},"98":{},"100":{},"108":{},"111":{},"122":{},"124":{},"125":{},"133":{},"150":{},"151":{},"154":{},"156":{},"169":{},"172":{},"185":{},"190":{},"191":{},"199":{},"216":{},"217":{},"220":{},"222":{},"235":{},"238":{},"251":{},"256":{},"257":{}},"component":{}}],["clonesourceenv",{"_index":1030,"title":{},"name":{},"text":{"14":{},"50":{},"96":{}},"component":{}}],["closur",{"_index":989,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["cloud",{"_index":3257,"title":{"181-7":{},"247-7":{}},"name":{},"text":{"150":{},"154":{},"160":{},"181":{},"216":{},"220":{},"226":{},"247":{}},"component":{}}],["cloudform",{"_index":3716,"title":{},"name":{},"text":{"187":{},"253":{}},"component":{}}],["cluster",{"_index":249,"title":{"24":{},"60":{},"77-8":{},"95-11":{},"149-11":{},"215-11":{}},"name":{"60":{}},"text":{"2":{},"6":{},"7":{},"13":{},"21":{},"24":{},"31":{},"32":{},"41":{},"45":{},"46":{},"49":{},"57":{},"60":{},"67":{},"68":{},"77":{},"80":{},"83":{},"85":{},"94":{},"95":{},"96":{},"98":{},"99":{},"101":{},"116":{},"117":{},"126":{},"127":{},"128":{},"130":{},"133":{},"136":{},"138":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"178":{},"192":{},"193":{},"194":{},"196":{},"199":{},"202":{},"204":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"244":{},"258":{}},"component":{}}],["cluster.com",{"_index":2725,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["cluster/bas",{"_index":2001,"title":{},"name":{},"text":{"60":{}},"component":{}}],["cluster=airflow",{"_index":1420,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["cne",{"_index":718,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"204":{}},"component":{}}],["code",{"_index":183,"title":{"5-8":{},"19-2":{},"19-3":{},"32-7":{},"44-8":{},"55-2":{},"55-3":{},"68-7":{},"96-9":{},"98-19":{},"100-3":{},"100-4":{},"117-7":{},"151-9":{},"154-22":{},"156-3":{},"156-4":{},"217-9":{},"220-22":{},"222-3":{},"222-4":{}},"name":{},"text":{"2":{},"6":{},"7":{},"13":{},"14":{},"15":{},"17":{},"19":{},"21":{},"24":{},"26":{},"27":{},"28":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"45":{},"46":{},"49":{},"50":{},"51":{},"53":{},"55":{},"57":{},"60":{},"61":{},"62":{},"65":{},"67":{},"68":{},"70":{},"72":{},"73":{},"75":{},"77":{},"80":{},"81":{},"82":{},"93":{},"96":{},"98":{},"100":{},"102":{},"103":{},"104":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"116":{},"117":{},"119":{},"121":{},"122":{},"123":{},"126":{},"130":{},"133":{},"135":{},"136":{},"147":{},"151":{},"153":{},"154":{},"156":{},"158":{},"159":{},"160":{},"161":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"178":{},"180":{},"181":{},"184":{},"185":{},"186":{},"189":{},"192":{},"196":{},"199":{},"201":{},"202":{},"213":{},"217":{},"219":{},"220":{},"222":{},"224":{},"225":{},"226":{},"227":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"244":{},"246":{},"247":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["code\":\"exception\",\"error",{"_index":2881,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["code\":\"unexistant_user\",\"error",{"_index":2878,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["code/analysi",{"_index":3221,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["code=\"$http_resp_cod",{"_index":2856,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["codebas",{"_index":1301,"title":{},"name":{},"text":{"21":{},"36":{},"57":{},"72":{},"101":{},"122":{},"157":{},"185":{},"223":{},"251":{}},"component":{}}],["coher",{"_index":3186,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["collect",{"_index":1004,"title":{"19-6":{},"55-6":{},"100-11":{},"156-11":{},"222-11":{}},"name":{},"text":{"14":{},"19":{},"50":{},"55":{},"82":{},"96":{},"99":{},"100":{},"135":{},"151":{},"155":{},"156":{},"174":{},"201":{},"217":{},"221":{},"222":{},"240":{}},"component":{}}],["color",{"_index":3316,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["column",{"_index":1672,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"182":{},"248":{}},"component":{}}],["com",{"_index":1602,"title":{},"name":{},"text":{"30":{},"64":{},"109":{},"170":{},"236":{}},"component":{}}],["combin",{"_index":2103,"title":{},"name":{},"text":{"79":{},"126":{},"132":{},"187":{},"188":{},"192":{},"198":{},"253":{},"254":{},"258":{}},"component":{}}],["come",{"_index":1287,"title":{},"name":{},"text":{"21":{},"22":{},"36":{},"37":{},"57":{},"58":{},"72":{},"73":{},"98":{},"102":{},"109":{},"122":{},"150":{},"154":{},"158":{},"170":{},"173":{},"174":{},"185":{},"187":{},"188":{},"216":{},"220":{},"224":{},"236":{},"239":{},"240":{},"251":{},"253":{},"254":{}},"component":{}}],["comma",{"_index":771,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"93":{},"96":{},"141":{},"147":{},"151":{},"207":{},"213":{},"217":{}},"component":{}}],["command",{"_index":1150,"title":{},"name":{},"text":{"19":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"55":{},"62":{},"63":{},"64":{},"65":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"80":{},"93":{},"94":{},"100":{},"111":{},"112":{},"113":{},"114":{},"117":{},"119":{},"120":{},"121":{},"122":{},"133":{},"137":{},"147":{},"148":{},"151":{},"156":{},"161":{},"172":{},"175":{},"176":{},"183":{},"184":{},"185":{},"199":{},"203":{},"213":{},"214":{},"217":{},"222":{},"227":{},"234":{},"238":{},"241":{},"242":{},"249":{},"250":{},"251":{}},"component":{}}],["command=\"${1",{"_index":2831,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["commands.j",{"_index":1761,"title":{},"name":{},"text":{"34":{},"38":{},"70":{},"74":{},"119":{}},"component":{}}],["commands.t",{"_index":1767,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"181":{},"247":{}},"component":{}}],["comment",{"_index":1519,"title":{},"name":{},"text":{"27":{},"62":{},"96":{},"109":{},"111":{},"151":{},"170":{},"172":{},"217":{},"236":{},"238":{},"240":{}},"component":{}}],["commerci",{"_index":2551,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["commit",{"_index":239,"title":{"5-3":{},"44-3":{},"83-6":{},"136-5":{},"202-5":{}},"name":{},"text":{"2":{},"14":{},"21":{},"24":{},"28":{},"32":{},"38":{},"39":{},"41":{},"47":{},"50":{},"57":{},"60":{},"65":{},"68":{},"74":{},"75":{},"77":{},"79":{},"80":{},"81":{},"88":{},"95":{},"96":{},"98":{},"100":{},"102":{},"114":{},"117":{},"130":{},"132":{},"133":{},"137":{},"141":{},"142":{},"146":{},"149":{},"151":{},"154":{},"156":{},"158":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"196":{},"198":{},"199":{},"203":{},"207":{},"208":{},"212":{},"215":{},"217":{},"220":{},"222":{},"224":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["commitgitworkingtre",{"_index":3267,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["common",{"_index":672,"title":{"94-14":{},"148-14":{},"214-14":{}},"name":{},"text":{"5":{},"32":{},"37":{},"44":{},"68":{},"73":{},"83":{},"94":{},"117":{},"148":{},"151":{},"153":{},"158":{},"174":{},"187":{},"188":{},"214":{},"217":{},"219":{},"224":{},"240":{},"253":{},"254":{}},"component":{}}],["common.r",{"_index":3570,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["common/foobar",{"_index":2789,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["common/prepar",{"_index":1959,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["commonj",{"_index":3084,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["commun",{"_index":403,"title":{},"name":{},"text":{"2":{},"20":{},"41":{},"56":{},"96":{},"101":{},"127":{},"151":{},"153":{},"157":{},"174":{},"189":{},"193":{},"217":{},"219":{},"223":{},"240":{},"255":{}},"component":{}}],["compar",{"_index":906,"title":{},"name":{},"text":{"13":{},"49":{},"123":{},"186":{},"252":{}},"component":{}}],["compat",{"_index":2301,"title":{},"name":{},"text":{"83":{},"95":{},"114":{},"136":{},"149":{},"161":{},"172":{},"176":{},"202":{},"215":{},"227":{},"234":{},"238":{},"242":{}},"component":{}}],["compil",{"_index":1514,"title":{},"name":{},"text":{"27":{},"38":{},"62":{},"74":{},"111":{},"113":{},"114":{},"172":{},"174":{},"175":{},"176":{},"238":{},"240":{},"241":{},"242":{}},"component":{}}],["compile:clean",{"_index":3752,"title":{},"name":{},"text":{"234":{}},"component":{}}],["compileropt",{"_index":3081,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["complet",{"_index":282,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"15":{},"32":{},"41":{},"44":{},"50":{},"51":{},"68":{},"77":{},"80":{},"83":{},"95":{},"96":{},"98":{},"99":{},"100":{},"117":{},"123":{},"127":{},"128":{},"130":{},"133":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"186":{},"193":{},"194":{},"196":{},"199":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"252":{}},"component":{}}],["complex",{"_index":1292,"title":{},"name":{},"text":{"21":{},"57":{}},"component":{}}],["complianc",{"_index":2630,"title":{"98-14":{},"126-12":{},"154-17":{},"192-12":{},"220-17":{},"258-12":{}},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["compliant",{"_index":3737,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["complic",{"_index":1673,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["compon",{"_index":26,"title":{"96":{},"151":{},"189":{},"217":{},"255":{},"80-23":{},"83-4":{},"94-5":{},"94-7":{},"98-12":{},"133-23":{},"148-5":{},"148-7":{},"154-15":{},"158-2":{},"199-23":{},"214-5":{},"214-7":{},"220-15":{},"224-2":{}},"name":{"96":{},"151":{},"217":{}},"text":{"1":{},"3":{},"12":{},"14":{},"15":{},"21":{},"22":{},"24":{},"37":{},"38":{},"39":{},"40":{},"42":{},"47":{},"50":{},"51":{},"57":{},"58":{},"60":{},"73":{},"74":{},"75":{},"76":{},"78":{},"80":{},"82":{},"83":{},"87":{},"88":{},"90":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"102":{},"108":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"131":{},"133":{},"135":{},"136":{},"140":{},"141":{},"144":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"186":{},"189":{},"192":{},"193":{},"194":{},"195":{},"197":{},"199":{},"201":{},"202":{},"206":{},"207":{},"210":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["component'",{"_index":3764,"title":{},"name":{},"text":{"240":{}},"component":{}}],["component106",{"_index":2888,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["component_id",{"_index":1964,"title":{},"name":{},"text":{"39":{},"75":{},"99":{},"100":{},"155":{},"156":{},"221":{},"222":{}},"component":{}}],["component_id\":\"b",{"_index":2869,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["component_suffix",{"_index":2517,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["component_suffix=${componentsuffix",{"_index":2516,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["component_typ",{"_index":2797,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["component_type\":\"dock",{"_index":2868,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["componentid",{"_index":936,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"99":{},"149":{},"150":{},"151":{},"155":{},"215":{},"216":{},"217":{},"221":{}},"component":{}}],["componentid=exampl",{"_index":3313,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["componentsuffix",{"_index":2508,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["component’",{"_index":2635,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["compris",{"_index":3187,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["compulsori",{"_index":3403,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["comput",{"_index":174,"title":{},"name":{},"text":{"2":{},"31":{},"32":{},"41":{},"67":{},"68":{},"116":{},"117":{},"174":{},"178":{},"240":{},"244":{}},"component":{}}],["computer.jnlpmac",{"_index":1997,"title":{},"name":{},"text":{"50":{},"96":{},"151":{},"217":{}},"component":{}}],["computer.nam",{"_index":1998,"title":{},"name":{},"text":{"50":{},"96":{},"151":{},"217":{}},"component":{}}],["concept",{"_index":235,"title":{},"name":{},"text":{"2":{},"41":{},"83":{},"136":{},"202":{}},"component":{}}],["conceptu",{"_index":2693,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["concret",{"_index":716,"title":{},"name":{},"text":{"6":{},"30":{},"45":{},"64":{},"85":{},"98":{},"138":{},"154":{},"204":{},"220":{}},"component":{}}],["concurr",{"_index":887,"title":{},"name":{},"text":{"12":{}},"component":{}}],["conda",{"_index":1725,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["condit",{"_index":2874,"title":{},"name":{},"text":{"100":{},"151":{},"156":{},"217":{},"222":{}},"component":{}}],["conditionalonproperti",{"_index":1176,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["conditionalonproperty(nam",{"_index":1183,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["conf",{"_index":3049,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["confidenti",{"_index":1653,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["confidentiality/data",{"_index":1683,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["config",{"_index":549,"title":{},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"19":{},"21":{},"22":{},"24":{},"31":{},"32":{},"36":{},"41":{},"43":{},"45":{},"49":{},"50":{},"55":{},"57":{},"58":{},"60":{},"68":{},"72":{},"77":{},"79":{},"80":{},"83":{},"91":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"107":{},"108":{},"117":{},"122":{},"130":{},"132":{},"133":{},"145":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"168":{},"169":{},"174":{},"181":{},"185":{},"196":{},"198":{},"199":{},"211":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"234":{},"235":{},"240":{},"247":{},"251":{}},"component":{}}],["config.application.url",{"_index":3114,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["config.pi",{"_index":3630,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["config.txt",{"_index":2826,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["config.xml",{"_index":1842,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["config.yaml",{"_index":3506,"title":{},"name":{},"text":{"170":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"236":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["config/application.properti",{"_index":1156,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["config/imag",{"_index":2386,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["config/nextest.toml",{"_index":3593,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["configmap",{"_index":1155,"title":{},"name":{},"text":{"19":{},"55":{},"60":{},"80":{},"98":{},"100":{},"101":{},"133":{},"151":{},"154":{},"156":{},"157":{},"199":{},"217":{},"220":{},"222":{},"223":{}},"component":{}}],["configur",{"_index":88,"title":{"20":{},"56":{},"101":{},"157":{},"223":{},"2-12":{},"2-14":{},"2-17":{},"2-23":{},"2-24":{},"2-30":{},"2-31":{},"2-36":{},"2-41":{},"2-42":{},"2-46":{},"2-50":{},"2-51":{},"2-53":{},"2-54":{},"2-55":{},"2-64":{},"2-65":{},"6-2":{},"20-1":{},"20-2":{},"20-3":{},"24-10":{},"27-6":{},"41-12":{},"41-14":{},"41-17":{},"41-23":{},"41-24":{},"41-30":{},"41-31":{},"41-36":{},"41-41":{},"41-42":{},"41-46":{},"41-50":{},"41-51":{},"41-53":{},"41-54":{},"41-55":{},"41-64":{},"41-65":{},"45-2":{},"56-1":{},"56-2":{},"56-3":{},"60-10":{},"62-6":{},"77-4":{},"79-5":{},"80-6":{},"80-17":{},"87-1":{},"98-2":{},"98-24":{},"101-5":{},"101-10":{},"101-11":{},"101-12":{},"111-6":{},"120-5":{},"120-8":{},"126-2":{},"130-4":{},"132-5":{},"133-6":{},"133-17":{},"140-1":{},"146-1":{},"154-2":{},"154-25":{},"154-29":{},"157-8":{},"157-13":{},"157-14":{},"157-15":{},"157-18":{},"172-6":{},"183-5":{},"183-8":{},"192-2":{},"196-4":{},"198-5":{},"199-6":{},"199-17":{},"206-1":{},"212-1":{},"220-2":{},"220-25":{},"220-29":{},"223-8":{},"223-13":{},"223-14":{},"223-15":{},"223-18":{},"238-6":{},"249-5":{},"249-8":{},"258-2":{}},"name":{"20":{},"56":{},"101":{},"157":{},"223":{}},"text":{"2":{},"6":{},"11":{},"12":{},"13":{},"14":{},"16":{},"17":{},"19":{},"20":{},"21":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"45":{},"49":{},"50":{},"52":{},"53":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{},"62":{},"63":{},"65":{},"66":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"85":{},"87":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"192":{},"194":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"258":{}},"component":{}}],["configuraiton",{"_index":1507,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["configuration/od",{"_index":2072,"title":{},"name":{},"text":{"77":{},"100":{},"130":{},"137":{},"142":{},"146":{},"156":{},"196":{},"203":{},"208":{},"212":{},"222":{}},"component":{}}],["confirm",{"_index":281,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["conflict",{"_index":1970,"title":{},"name":{},"text":{"47":{},"81":{},"88":{},"141":{},"151":{},"207":{},"217":{}},"component":{}}],["confluenc",{"_index":60,"title":{"2-45":{},"2-47":{},"41-45":{},"41-47":{}},"name":{},"text":{"1":{},"2":{},"3":{},"19":{},"20":{},"22":{},"40":{},"41":{},"42":{},"55":{},"56":{},"58":{},"76":{},"83":{},"90":{},"100":{},"101":{},"102":{},"129":{},"130":{},"136":{},"144":{},"156":{},"157":{},"158":{},"195":{},"196":{},"202":{},"210":{},"222":{},"223":{},"224":{}},"component":{}}],["confluence.admin_password",{"_index":1262,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.admin_password=confluence_admin",{"_index":1267,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.admin_us",{"_index":1261,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.admin_user=confluence_admin",{"_index":1268,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.blueprint.key.=com.atlassian.confluence.plugins.conflu",{"_index":1344,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.blueprint.key=com.atlassian.confluence.plugins.conflu",{"_index":1338,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["confluence.yml",{"_index":59,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["confluence_enable_sso.yml",{"_index":61,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["congratul",{"_index":2074,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["connect",{"_index":164,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"2":{},"4":{},"11":{},"19":{},"24":{},"32":{},"41":{},"43":{},"47":{},"55":{},"60":{},"68":{},"78":{},"88":{},"91":{},"93":{},"100":{},"101":{},"117":{},"131":{},"141":{},"145":{},"147":{},"156":{},"157":{},"174":{},"197":{},"207":{},"211":{},"213":{},"222":{},"223":{},"240":{}},"component":{}}],["connect/auth",{"_index":1236,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connect/cert",{"_index":1244,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connect/token",{"_index":1239,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connect/userinfo",{"_index":1242,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["connection.yaml",{"_index":3559,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["connector",{"_index":868,"title":{},"name":{},"text":{"12":{},"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["consequ",{"_index":2230,"title":{},"name":{},"text":{"81":{},"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["consetetur",{"_index":796,"title":{},"name":{},"text":{"10":{}},"component":{}}],["consid",{"_index":1620,"title":{},"name":{},"text":{"31":{},"32":{},"67":{},"68":{},"98":{},"116":{},"117":{},"154":{},"162":{},"163":{},"164":{},"165":{},"178":{},"181":{},"184":{},"220":{},"228":{},"229":{},"230":{},"231":{},"244":{},"247":{},"250":{},"258":{}},"component":{}}],["consider",{"_index":1685,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["consist",{"_index":324,"title":{},"name":{},"text":{"2":{},"39":{},"41":{},"75":{},"80":{},"95":{},"100":{},"113":{},"133":{},"149":{},"156":{},"158":{},"175":{},"199":{},"215":{},"222":{},"224":{},"241":{}},"component":{}}],["consol",{"_index":108,"title":{"2-22":{},"41-22":{}},"name":{},"text":{"2":{},"28":{},"29":{},"41":{},"47":{},"60":{},"63":{},"65":{},"88":{},"96":{},"108":{},"114":{},"141":{},"151":{},"169":{},"176":{},"207":{},"217":{},"235":{},"242":{}},"component":{}}],["constrain",{"_index":2796,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["constraint",{"_index":2372,"title":{"94-5":{},"148-5":{},"214-5":{}},"name":{},"text":{"94":{},"95":{},"96":{},"99":{},"148":{},"149":{},"151":{},"155":{},"214":{},"215":{},"217":{},"221":{}},"component":{}}],["consum",{"_index":1130,"title":{"19-5":{},"55-5":{},"100-6":{},"100-7":{},"156-6":{},"156-7":{},"222-6":{},"222-7":{}},"name":{},"text":{"19":{},"23":{},"28":{},"32":{},"55":{},"59":{},"65":{},"68":{},"83":{},"98":{},"100":{},"101":{},"114":{},"117":{},"128":{},"130":{},"136":{},"154":{},"156":{},"157":{},"176":{},"194":{},"196":{},"202":{},"220":{},"222":{},"223":{},"242":{}},"component":{}}],["contact",{"_index":1828,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["contaienr",{"_index":3140,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["contain",{"_index":5,"title":{"32-2":{},"68-2":{},"93-4":{},"117-2":{},"147-4":{},"213-4":{}},"name":{},"text":{"1":{},"5":{},"6":{},"8":{},"13":{},"14":{},"19":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"32":{},"33":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"44":{},"45":{},"49":{},"50":{},"55":{},"60":{},"61":{},"62":{},"63":{},"65":{},"66":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"79":{},"80":{},"81":{},"82":{},"84":{},"85":{},"86":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"117":{},"118":{},"121":{},"122":{},"123":{},"128":{},"129":{},"132":{},"133":{},"135":{},"136":{},"138":{},"139":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"179":{},"180":{},"182":{},"184":{},"185":{},"186":{},"187":{},"188":{},"194":{},"195":{},"198":{},"199":{},"201":{},"202":{},"204":{},"205":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"245":{},"246":{},"248":{},"250":{},"251":{},"252":{},"253":{},"254":{}},"component":{}}],["container(",{"_index":2489,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["containertempl",{"_index":1981,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["container’",{"_index":2994,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["content",{"_index":128,"title":{"2-52":{},"24-2":{},"41-52":{},"60-2":{}},"name":{},"text":{"2":{},"19":{},"20":{},"22":{},"39":{},"41":{},"55":{},"56":{},"58":{},"75":{},"78":{},"80":{},"82":{},"94":{},"95":{},"96":{},"100":{},"101":{},"102":{},"109":{},"123":{},"131":{},"133":{},"135":{},"148":{},"149":{},"150":{},"151":{},"156":{},"157":{},"170":{},"182":{},"186":{},"197":{},"199":{},"201":{},"214":{},"215":{},"216":{},"217":{},"222":{},"223":{},"236":{},"248":{},"252":{}},"component":{}}],["content_by_lua_block",{"_index":3010,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["context",{"_index":949,"title":{"95-7":{},"96-3":{},"99-3":{},"149-7":{},"151-3":{},"155-3":{},"215-7":{},"217-3":{},"221-3":{}},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"87":{},"95":{},"96":{},"99":{},"101":{},"108":{},"115":{},"140":{},"149":{},"151":{},"155":{},"157":{},"169":{},"174":{},"177":{},"206":{},"215":{},"217":{},"221":{},"223":{},"235":{},"240":{},"243":{}},"component":{}}],["context.agentimagetag",{"_index":3435,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["context.bitbuckethost",{"_index":2435,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.bitbuckethostwithoutschem",{"_index":2437,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.cdproject",{"_index":3334,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["context.componentid",{"_index":2511,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["context.environ",{"_index":2522,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.gitbranch",{"_index":3680,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["context.gitbranch.startswith('releas",{"_index":3681,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["context.gitcommitrawmessag",{"_index":2527,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.giturlhttp",{"_index":2800,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.issueid",{"_index":2509,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.nexuspassword",{"_index":2451,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.nexusurl",{"_index":2449,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.nexususernam",{"_index":2450,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["context.odsgitref",{"_index":2802,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.odsimagetag",{"_index":2801,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.projectid",{"_index":1088,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["context.reponam",{"_index":2526,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.selector",{"_index":3342,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["context.sharedlibraryref",{"_index":3436,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["context.shortgitcommit",{"_index":2565,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.sourcedir",{"_index":2798,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.sourcedir}/fil",{"_index":2790,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.sourcedir}/ocp.env",{"_index":2795,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.sourcedir}/openshift",{"_index":2793,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.tagvers",{"_index":2439,"title":{},"name":{},"text":{"95":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["context.tagversion}.tar.gz",{"_index":3344,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["context.targetdir",{"_index":2791,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["context.targetproject",{"_index":2530,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["context.testresult",{"_index":3089,"title":{},"name":{},"text":{"115":{},"177":{},"243":{}},"component":{}}],["contin",{"_index":645,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"113":{},"136":{},"175":{},"202":{},"241":{}},"component":{}}],["continu",{"_index":152,"title":{},"name":{},"text":{"2":{},"4":{},"13":{},"39":{},"41":{},"43":{},"49":{},"75":{},"81":{},"91":{},"93":{},"127":{},"137":{},"145":{},"147":{},"157":{},"193":{},"203":{},"211":{},"213":{},"223":{}},"component":{}}],["contrast",{"_index":1280,"title":{},"name":{},"text":{"21":{},"57":{},"102":{},"151":{},"153":{},"158":{},"217":{},"219":{},"224":{}},"component":{}}],["contrib",{"_index":2136,"title":{},"name":{},"text":{"79":{},"80":{},"108":{},"132":{},"133":{},"169":{},"198":{},"199":{},"235":{}},"component":{}}],["contrib/tree/master/quickstart",{"_index":2814,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["contribut",{"_index":1936,"title":{"124":{},"125":{},"190":{},"191":{},"256":{},"257":{},"39-8":{},"75-8":{},"81-2":{},"81-3":{},"82-4":{},"123-7":{},"135-4":{},"186-8":{},"201-4":{},"252-8":{}},"name":{},"text":{"39":{},"75":{},"81":{},"108":{},"123":{},"124":{},"125":{},"134":{},"169":{},"186":{},"190":{},"191":{},"200":{},"235":{},"252":{},"256":{},"257":{}},"component":{}}],["control",{"_index":19,"title":{},"name":{},"text":{"1":{},"2":{},"14":{},"19":{},"34":{},"40":{},"41":{},"50":{},"55":{},"70":{},"76":{},"82":{},"96":{},"98":{},"99":{},"100":{},"101":{},"113":{},"119":{},"128":{},"129":{},"135":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"175":{},"194":{},"195":{},"201":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"241":{}},"component":{}}],["conveni",{"_index":1946,"title":{},"name":{},"text":{"39":{},"75":{},"96":{},"123":{},"128":{},"151":{},"186":{},"194":{},"217":{},"252":{}},"component":{}}],["convent",{"_index":2716,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["convert",{"_index":1204,"title":{},"name":{},"text":{"19":{},"55":{},"82":{},"100":{},"135":{},"156":{},"201":{},"222":{}},"component":{}}],["cooki",{"_index":1364,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["cookies=${jsession_id}${crowd_cooki",{"_index":1371,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["copi",{"_index":408,"title":{},"name":{},"text":{"2":{},"22":{},"25":{},"27":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"58":{},"62":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"79":{},"80":{},"99":{},"101":{},"108":{},"111":{},"112":{},"113":{},"114":{},"115":{},"121":{},"122":{},"129":{},"132":{},"133":{},"151":{},"155":{},"157":{},"169":{},"172":{},"173":{},"175":{},"176":{},"177":{},"180":{},"184":{},"185":{},"195":{},"198":{},"199":{},"217":{},"221":{},"223":{},"235":{},"238":{},"239":{},"241":{},"242":{},"243":{},"246":{},"250":{},"251":{}},"component":{}}],["copydockerfil",{"_index":3753,"title":{},"name":{},"text":{"234":{}},"component":{}}],["core",{"_index":234,"title":{},"name":{},"text":{"2":{},"5":{},"20":{},"27":{},"36":{},"37":{},"41":{},"44":{},"56":{},"62":{},"72":{},"73":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"84":{},"92":{},"101":{},"111":{},"122":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"146":{},"157":{},"172":{},"173":{},"180":{},"185":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"212":{},"223":{},"238":{},"239":{},"246":{},"251":{}},"component":{}}],["core#253",{"_index":2396,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["core#290",{"_index":2390,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["core#293",{"_index":2381,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["core,od",{"_index":3203,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["core.env",{"_index":2055,"title":{},"name":{},"text":{"77":{},"100":{},"130":{},"137":{},"142":{},"146":{},"156":{},"196":{},"203":{},"208":{},"212":{},"222":{}},"component":{}}],["core.git",{"_index":269,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["core/$git_ref/scripts/repos.sh",{"_index":3171,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovi",{"_index":2215,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/blob/master/ocp",{"_index":2697,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["core/blob/master/scripts/tailor2helm.sh",{"_index":3137,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["core/check",{"_index":2153,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/configur",{"_index":2147,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/infrastructur",{"_index":448,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["core/issues/229",{"_index":2163,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/issues/293",{"_index":2162,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/jenkin",{"_index":693,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["core/jenkins/ocp",{"_index":2204,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/master/od",{"_index":2048,"title":{},"name":{},"text":{"77":{}},"component":{}}],["core/pull/280",{"_index":2156,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["core/shar",{"_index":831,"title":{},"name":{},"text":{"11":{}},"component":{}}],["core/tree/master/infrastructur",{"_index":3173,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["core/tree/master/scripts/migr",{"_index":3216,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["core/tree/master/shar",{"_index":1414,"title":{},"name":{},"text":{"24":{}},"component":{}}],["core\\shar",{"_index":554,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["correct",{"_index":1643,"title":{},"name":{},"text":{"32":{},"68":{},"98":{},"117":{},"126":{},"154":{},"174":{},"181":{},"192":{},"220":{},"240":{},"247":{},"258":{}},"component":{}}],["correctli",{"_index":2133,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["correspond",{"_index":732,"title":{},"name":{},"text":{"6":{},"8":{},"14":{},"20":{},"45":{},"47":{},"50":{},"56":{},"77":{},"80":{},"88":{},"96":{},"98":{},"101":{},"115":{},"130":{},"133":{},"141":{},"151":{},"154":{},"157":{},"177":{},"196":{},"199":{},"207":{},"217":{},"220":{},"223":{},"243":{}},"component":{}}],["correspondingli",{"_index":1333,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["corrupt",{"_index":1384,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["cours",{"_index":2069,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["cov",{"_index":3040,"title":{},"name":{},"text":{"112":{},"173":{},"174":{},"239":{},"240":{}},"component":{}}],["cov=src",{"_index":3533,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["cover",{"_index":3190,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["coverag",{"_index":1555,"title":{},"name":{},"text":{"28":{},"65":{},"108":{},"112":{},"114":{},"121":{},"122":{},"123":{},"167":{},"169":{},"173":{},"174":{},"176":{},"180":{},"184":{},"185":{},"186":{},"233":{},"234":{},"235":{},"239":{},"240":{},"242":{},"246":{},"250":{},"251":{},"252":{}},"component":{}}],["coverage_output",{"_index":3086,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["coverageoff",{"_index":3751,"title":{},"name":{},"text":{"234":{}},"component":{}}],["coveragerc",{"_index":3028,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["coveragereport",{"_index":3750,"title":{},"name":{},"text":{"234":{}},"component":{}}],["cp",{"_index":1467,"title":{},"name":{},"text":{"25":{},"66":{},"79":{},"87":{},"115":{},"132":{},"140":{},"177":{},"198":{},"206":{},"243":{}},"component":{}}],["cpu",{"_index":1533,"title":{},"name":{},"text":{"28":{},"65":{},"83":{},"94":{},"96":{},"99":{},"114":{},"136":{},"148":{},"151":{},"155":{},"176":{},"202":{},"214":{},"217":{},"221":{},"242":{}},"component":{}}],["cr",{"_index":837,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["crate",{"_index":3550,"title":{"240-10":{},"240-12":{},"240-13":{},"240-14":{},"240-15":{}},"name":{},"text":{"174":{},"240":{}},"component":{}}],["crates.io",{"_index":3775,"title":{},"name":{},"text":{"240":{}},"component":{}}],["crate’",{"_index":3780,"title":{},"name":{},"text":{"240":{}},"component":{}}],["crazy_python.pi",{"_index":1437,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["creat",{"_index":117,"title":{"2-33":{},"5-5":{},"41-33":{},"44-5":{},"83-3":{},"83-4":{},"108-1":{},"108-2":{},"158-1":{},"158-2":{},"169-1":{},"169-2":{},"224-1":{},"224-2":{},"235-1":{},"235-2":{}},"name":{},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"13":{},"14":{},"15":{},"19":{},"21":{},"22":{},"24":{},"27":{},"29":{},"31":{},"32":{},"36":{},"39":{},"41":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"51":{},"55":{},"57":{},"58":{},"60":{},"62":{},"63":{},"67":{},"68":{},"72":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"111":{},"112":{},"113":{},"116":{},"117":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"173":{},"175":{},"178":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"189":{},"190":{},"191":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"239":{},"241":{},"244":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["create.txt",{"_index":1372,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["created/trigg",{"_index":1971,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["createpermissionset",{"_index":1323,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["createpullrequest(str",{"_index":3270,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["creation",{"_index":338,"title":{"98-23":{},"154-28":{},"220-28":{}},"name":{},"text":{"2":{},"5":{},"41":{},"44":{},"83":{},"98":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["creationtimestamp",{"_index":2190,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["creator",{"_index":389,"title":{},"name":{},"text":{"2":{},"41":{},"101":{},"157":{},"223":{}},"component":{}}],["credenti",{"_index":166,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"20":{},"24":{},"31":{},"34":{},"41":{},"45":{},"50":{},"56":{},"60":{},"70":{},"87":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"119":{},"126":{},"140":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"188":{},"192":{},"206":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"254":{},"258":{}},"component":{}}],["credential.sync.jenkins.openshift.io=tru",{"_index":2507,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["credentialsid",{"_index":938,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"95":{},"96":{},"98":{},"148":{},"149":{},"151":{},"154":{},"214":{},"215":{},"217":{},"220":{}},"component":{}}],["crlf",{"_index":2059,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["cron",{"_index":2155,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["cronjob",{"_index":2270,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["cross",{"_index":1820,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["crowd",{"_index":48,"title":{"11":{},"2-13":{},"2-16":{},"2-22":{},"2-23":{},"2-28":{},"2-31":{},"20-2":{},"41-13":{},"41-16":{},"41-22":{},"41-23":{},"41-28":{},"41-31":{},"56-2":{},"101-11":{},"157-14":{},"223-14":{}},"name":{"11":{}},"text":{"1":{},"2":{},"3":{},"11":{},"12":{},"19":{},"20":{},"22":{},"31":{},"33":{},"40":{},"41":{},"42":{},"55":{},"56":{},"58":{},"76":{},"77":{},"78":{},"83":{},"90":{},"100":{},"101":{},"129":{},"130":{},"131":{},"144":{},"146":{},"156":{},"157":{},"195":{},"196":{},"197":{},"210":{},"212":{},"222":{},"223":{}},"component":{}}],["crowd.application.nam",{"_index":2965,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.application.password",{"_index":2966,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.cookie.domain",{"_index":2968,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.local.directory=~/dev/temp",{"_index":2964,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.properti",{"_index":1218,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["crowd.server.url",{"_index":2967,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["crowd.yml",{"_index":47,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["crowd_cookie=$(cat",{"_index":1370,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["crowd_password",{"_index":858,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowd_post_setup.yml",{"_index":67,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["crowd_realm_nam",{"_index":852,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowd_servic",{"_index":857,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowd_url",{"_index":856,"title":{},"name":{},"text":{"11":{}},"component":{}}],["crowdsecurityconfigur",{"_index":1186,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["crowd’",{"_index":329,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["crucial",{"_index":2500,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["cryptograph",{"_index":3779,"title":{},"name":{},"text":{"240":{}},"component":{}}],["csr",{"_index":866,"title":{},"name":{},"text":{"12":{}},"component":{}}],["css",{"_index":1565,"title":{},"name":{},"text":{"29":{},"35":{},"36":{},"63":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["csv",{"_index":1649,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["cumbersom",{"_index":3152,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["curl",{"_index":227,"title":{"100-7":{},"156-7":{},"222-7":{}},"name":{},"text":{"2":{},"22":{},"32":{},"41":{},"58":{},"68":{},"77":{},"100":{},"101":{},"117":{},"130":{},"137":{},"142":{},"146":{},"156":{},"157":{},"174":{},"196":{},"203":{},"208":{},"212":{},"222":{},"223":{},"240":{}},"component":{}}],["current",{"_index":31,"title":{},"name":{},"text":{"1":{},"12":{},"13":{},"14":{},"20":{},"32":{},"40":{},"49":{},"50":{},"56":{},"68":{},"76":{},"83":{},"93":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"117":{},"126":{},"128":{},"129":{},"136":{},"137":{},"142":{},"146":{},"147":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"160":{},"167":{},"192":{},"194":{},"195":{},"202":{},"203":{},"208":{},"212":{},"213":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"226":{},"233":{},"258":{}},"component":{}}],["custom",{"_index":36,"title":{"8-3":{},"14-8":{},"47-7":{},"50-8":{},"88-7":{},"96-7":{},"98-23":{},"99-5":{},"101-4":{},"101-5":{},"101-7":{},"120-8":{},"141-7":{},"151-7":{},"154-25":{},"154-28":{},"155-5":{},"157-7":{},"157-8":{},"157-10":{},"183-8":{},"207-7":{},"217-7":{},"220-25":{},"220-28":{},"221-5":{},"223-7":{},"223-8":{},"223-10":{},"249-8":{}},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"12":{},"14":{},"27":{},"32":{},"36":{},"37":{},"40":{},"41":{},"45":{},"47":{},"50":{},"62":{},"68":{},"72":{},"73":{},"76":{},"77":{},"79":{},"80":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"109":{},"111":{},"114":{},"117":{},"122":{},"126":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"149":{},"151":{},"154":{},"155":{},"157":{},"169":{},"170":{},"172":{},"176":{},"181":{},"185":{},"192":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"215":{},"217":{},"220":{},"221":{},"223":{},"235":{},"236":{},"238":{},"242":{},"247":{},"251":{},"258":{}},"component":{}}],["customis",{"_index":1099,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"128":{},"137":{},"142":{},"153":{},"155":{},"194":{},"203":{},"208":{},"219":{},"221":{}},"component":{}}],["cut",{"_index":1367,"title":{},"name":{},"text":{"22":{},"58":{},"83":{},"136":{},"202":{}},"component":{}}],["cyclonedx",{"_index":3290,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["cygwin",{"_index":83,"title":{"2-7":{},"4-1":{},"41-7":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"77":{},"91":{},"130":{},"145":{},"196":{},"211":{}},"component":{}}],["cypress",{"_index":1758,"title":{"34":{},"70":{},"119":{},"181":{},"247":{},"181-6":{},"181-7":{},"247-6":{},"247-7":{}},"name":{"34":{},"70":{},"119":{},"181":{},"247":{}},"text":{"34":{},"39":{},"70":{},"75":{},"105":{},"119":{},"123":{},"162":{},"163":{},"164":{},"165":{},"181":{},"186":{},"228":{},"229":{},"230":{},"231":{},"247":{},"252":{}},"component":{}}],["cypress#advanc",{"_index":3657,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress.config.t",{"_index":3816,"title":{},"name":{},"text":{"247":{}},"component":{}}],["cypress.env.json.templ",{"_index":3647,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress.json",{"_index":1763,"title":{},"name":{},"text":{"34":{},"38":{},"70":{},"74":{},"119":{},"181":{}},"component":{}}],["cypress@vers",{"_index":3661,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress_cache_folder=/home/jenkins/.cache/cypress",{"_index":3664,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress_install_binary=0",{"_index":3663,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypress_record_key",{"_index":3678,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypresshash",{"_index":3660,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["cypressversion=13.13.1",{"_index":3818,"title":{},"name":{},"text":{"247":{}},"component":{}}],["cypressversion=13.6.0",{"_index":3659,"title":{},"name":{},"text":{"181":{}},"component":{}}],["d",{"_index":1348,"title":{},"name":{},"text":{"22":{},"58":{},"93":{},"98":{},"147":{},"154":{},"181":{},"213":{},"220":{},"247":{}},"component":{}}],["daemon",{"_index":3469,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["dag",{"_index":1401,"title":{"24-9":{},"60-9":{}},"name":{},"text":{"24":{},"60":{}},"component":{}}],["dag_dep",{"_index":1433,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["dag_deps_packag",{"_index":1435,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["daili",{"_index":2269,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["dash",{"_index":2890,"title":{},"name":{},"text":{"100":{},"153":{},"156":{},"189":{},"219":{},"222":{},"255":{}},"component":{}}],["dashboard",{"_index":3624,"title":{},"name":{},"text":{"180":{},"181":{},"246":{},"247":{}},"component":{}}],["data",{"_index":311,"title":{"31":{},"32":{},"33":{},"67":{},"68":{},"69":{},"116":{},"117":{},"118":{},"178":{},"179":{},"180":{},"244":{},"245":{},"246":{},"32-9":{},"39-4":{},"68-9":{},"75-4":{},"117-9":{},"123-5":{},"186-5":{},"252-5":{}},"name":{},"text":{"2":{},"31":{},"32":{},"39":{},"41":{},"67":{},"68":{},"75":{},"79":{},"98":{},"100":{},"116":{},"117":{},"121":{},"122":{},"123":{},"126":{},"132":{},"151":{},"153":{},"154":{},"156":{},"178":{},"182":{},"184":{},"185":{},"186":{},"189":{},"192":{},"198":{},"217":{},"219":{},"220":{},"222":{},"244":{},"248":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["data/blobs/atlassian_publ",{"_index":473,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["data/blobs/candid",{"_index":469,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["data/blobs/releas",{"_index":471,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["databas",{"_index":76,"title":{"2-17":{},"2-50":{},"2-51":{},"41-17":{},"41-50":{},"41-51":{}},"name":{},"text":{"1":{},"2":{},"14":{},"16":{},"24":{},"40":{},"41":{},"50":{},"52":{},"60":{},"76":{},"79":{},"93":{},"96":{},"99":{},"129":{},"132":{},"147":{},"151":{},"153":{},"155":{},"182":{},"189":{},"195":{},"198":{},"213":{},"217":{},"219":{},"221":{},"248":{},"255":{}},"component":{}}],["database/postgr",{"_index":3543,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["database](https://github.com/rustsec/rustsec",{"_index":3774,"title":{},"name":{},"text":{"240":{}},"component":{}}],["datafram",{"_index":1666,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dataset",{"_index":1626,"title":{"32-10":{},"68-10":{},"117-10":{}},"name":{},"text":{},"component":{}}],["datasync",{"_index":1696,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["datasync(dvc_data_repo",{"_index":1698,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["datatbas",{"_index":276,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["date",{"_index":209,"title":{"83-9":{},"136-8":{},"202-8":{}},"name":{},"text":{"2":{},"41":{},"96":{},"137":{},"142":{},"146":{},"151":{},"162":{},"163":{},"164":{},"165":{},"203":{},"208":{},"212":{},"217":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["day",{"_index":208,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"127":{},"133":{},"193":{},"199":{}},"component":{}}],["db",{"_index":3377,"title":{},"name":{},"text":{"153":{},"219":{},"240":{}},"component":{}}],["dc",{"_index":2106,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["deactiv",{"_index":381,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{}},"component":{}}],["deal",{"_index":1980,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["debug",{"_index":1108,"title":{},"name":{},"text":{"14":{},"17":{},"29":{},"32":{},"50":{},"53":{},"63":{},"68":{},"80":{},"96":{},"98":{},"117":{},"133":{},"151":{},"154":{},"174":{},"199":{},"217":{},"220":{},"240":{}},"component":{}}],["debug=tru",{"_index":1577,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["decemb",{"_index":2274,"title":{"83-9":{},"83-11":{},"136-11":{},"202-11":{}},"name":{},"text":{},"component":{}}],["decid",{"_index":28,"title":{},"name":{},"text":{"1":{},"2":{},"40":{},"41":{},"76":{},"129":{},"195":{}},"component":{}}],["decis",{"_index":3367,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["declar",{"_index":1120,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["declin",{"_index":738,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["declined/merg",{"_index":737,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["decor",{"_index":2308,"title":{},"name":{},"text":{"83":{},"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["decreas",{"_index":2662,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"219":{},"220":{}},"component":{}}],["decrypt",{"_index":2502,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["dedic",{"_index":2082,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["deem",{"_index":2669,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["def",{"_index":932,"title":{},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"95":{},"96":{},"98":{},"99":{},"115":{},"149":{},"151":{},"154":{},"155":{},"161":{},"172":{},"177":{},"181":{},"215":{},"217":{},"220":{},"221":{},"227":{},"234":{},"238":{},"243":{},"247":{}},"component":{}}],["default",{"_index":101,"title":{"2-20":{},"41-20":{}},"name":{},"text":{"2":{},"4":{},"8":{},"11":{},"12":{},"14":{},"20":{},"22":{},"27":{},"32":{},"38":{},"41":{},"43":{},"47":{},"50":{},"56":{},"58":{},"62":{},"68":{},"74":{},"83":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"109":{},"111":{},"115":{},"117":{},"120":{},"121":{},"122":{},"126":{},"141":{},"145":{},"147":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"169":{},"170":{},"172":{},"173":{},"174":{},"177":{},"183":{},"184":{},"185":{},"192":{},"207":{},"211":{},"213":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"232":{},"234":{},"235":{},"236":{},"238":{},"239":{},"240":{},"243":{},"249":{},"250":{},"251":{},"258":{}},"component":{}}],["default/main.yml",{"_index":39,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["defin",{"_index":316,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"16":{},"20":{},"21":{},"22":{},"24":{},"27":{},"28":{},"31":{},"32":{},"33":{},"34":{},"39":{},"41":{},"44":{},"50":{},"52":{},"56":{},"57":{},"58":{},"60":{},"62":{},"65":{},"67":{},"68":{},"69":{},"70":{},"75":{},"79":{},"87":{},"94":{},"96":{},"98":{},"100":{},"101":{},"109":{},"111":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"126":{},"127":{},"128":{},"132":{},"140":{},"148":{},"150":{},"151":{},"154":{},"156":{},"157":{},"170":{},"172":{},"174":{},"176":{},"177":{},"178":{},"179":{},"183":{},"184":{},"192":{},"193":{},"194":{},"198":{},"206":{},"214":{},"216":{},"217":{},"220":{},"222":{},"223":{},"236":{},"238":{},"240":{},"242":{},"243":{},"244":{},"245":{},"249":{},"250":{},"258":{}},"component":{}}],["defind",{"_index":1215,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["definin",{"_index":2327,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["definit",{"_index":1492,"title":{},"name":{},"text":{"27":{},"62":{},"76":{},"81":{},"109":{},"111":{},"120":{},"127":{},"129":{},"170":{},"172":{},"183":{},"193":{},"195":{},"236":{},"238":{},"249":{}},"component":{}}],["defint",{"_index":1885,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["deleg",{"_index":1306,"title":{},"name":{},"text":{"22":{},"39":{},"58":{},"75":{},"102":{},"123":{},"158":{},"186":{},"224":{},"252":{}},"component":{}}],["delet",{"_index":735,"title":{},"name":{},"text":{"6":{},"8":{},"24":{},"45":{},"47":{},"60":{},"79":{},"80":{},"88":{},"96":{},"100":{},"108":{},"132":{},"133":{},"141":{},"150":{},"151":{},"153":{},"156":{},"169":{},"198":{},"199":{},"207":{},"216":{},"217":{},"219":{},"222":{},"235":{}},"component":{}}],["deliv",{"_index":2634,"title":{},"name":{},"text":{"98":{},"115":{},"126":{},"137":{},"154":{},"177":{},"192":{},"203":{},"220":{},"243":{},"258":{}},"component":{}}],["deliveri",{"_index":153,"title":{},"name":{},"text":{"2":{},"5":{},"41":{},"44":{},"83":{},"98":{},"126":{},"136":{},"154":{},"157":{},"192":{},"202":{},"220":{},"223":{},"258":{}},"component":{}}],["demand",{"_index":1408,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["demo",{"_index":3105,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demo*spec.groovi",{"_index":3113,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demo*test.java",{"_index":3112,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptance.xml",{"_index":3106,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptancespec.groovi",{"_index":3095,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptancetest.java",{"_index":3096,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoacceptancetest.xml",{"_index":3107,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallation.xml",{"_index":3108,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallationspec.groovi",{"_index":3097,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallationtest.java",{"_index":3098,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demoinstallationtest.xml",{"_index":3109,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegration.xml",{"_index":3110,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegrationspec.groovi",{"_index":3099,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegrationtest.java",{"_index":3100,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demointegrationtest.xml",{"_index":3111,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["demonstr",{"_index":1648,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["deni",{"_index":578,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"240":{}},"component":{}}],["deny.toml",{"_index":3767,"title":{},"name":{},"text":{"240":{}},"component":{}}],["deny](https://github.com/embarkstudios/cargo",{"_index":3777,"title":{},"name":{},"text":{"240":{}},"component":{}}],["depend",{"_index":30,"title":{"27-8":{},"62-8":{},"98-3":{},"111-8":{},"126-3":{},"154-3":{},"172-8":{},"192-3":{},"220-3":{},"238-8":{},"240-12":{},"240-13":{},"258-3":{}},"name":{},"text":{"1":{},"6":{},"7":{},"14":{},"16":{},"19":{},"21":{},"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"35":{},"36":{},"37":{},"38":{},"40":{},"45":{},"46":{},"50":{},"52":{},"55":{},"57":{},"60":{},"62":{},"63":{},"64":{},"65":{},"68":{},"71":{},"72":{},"73":{},"74":{},"76":{},"79":{},"80":{},"81":{},"85":{},"95":{},"96":{},"98":{},"100":{},"102":{},"105":{},"108":{},"109":{},"111":{},"114":{},"117":{},"121":{},"122":{},"126":{},"128":{},"129":{},"132":{},"133":{},"137":{},"138":{},"142":{},"146":{},"149":{},"151":{},"154":{},"156":{},"157":{},"158":{},"162":{},"163":{},"164":{},"165":{},"169":{},"170":{},"172":{},"174":{},"176":{},"181":{},"184":{},"185":{},"192":{},"194":{},"195":{},"198":{},"199":{},"203":{},"204":{},"208":{},"212":{},"215":{},"217":{},"220":{},"222":{},"223":{},"224":{},"228":{},"229":{},"230":{},"231":{},"235":{},"236":{},"238":{},"240":{},"242":{},"247":{},"250":{},"251":{},"258":{}},"component":{}}],["dependeci",{"_index":1432,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["dependencies=\"web,data",{"_index":3518,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["dependencies=\"web,jersey,data",{"_index":1510,"title":{},"name":{},"text":{"27":{},"62":{},"111":{}},"component":{}}],["dependencycheckbranch",{"_index":1050,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["deploy",{"_index":308,"title":{"5-3":{},"44-3":{},"83-6":{},"94-2":{},"94-7":{},"95-2":{},"96-9":{},"98-12":{},"100-2":{},"136-5":{},"148-2":{},"148-7":{},"149-2":{},"150-1":{},"150-4":{},"151-9":{},"151-29":{},"156-2":{},"202-5":{},"214-2":{},"214-7":{},"215-2":{},"216-1":{},"216-4":{},"217-9":{},"217-29":{},"222-2":{}},"name":{},"text":{"2":{},"5":{},"6":{},"14":{},"15":{},"16":{},"19":{},"21":{},"24":{},"26":{},"27":{},"31":{},"32":{},"33":{},"41":{},"44":{},"45":{},"50":{},"51":{},"52":{},"55":{},"57":{},"60":{},"61":{},"62":{},"67":{},"68":{},"69":{},"77":{},"79":{},"83":{},"87":{},"93":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"109":{},"110":{},"111":{},"112":{},"114":{},"116":{},"117":{},"118":{},"123":{},"126":{},"127":{},"128":{},"130":{},"132":{},"136":{},"137":{},"140":{},"142":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"158":{},"160":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"178":{},"179":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"196":{},"198":{},"202":{},"203":{},"206":{},"208":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"224":{},"226":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"244":{},"245":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["deployment.yaml",{"_index":3561,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["deployment.yml",{"_index":3557,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["deployment/foo",{"_index":3251,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["deploymentconfig",{"_index":744,"title":{},"name":{},"text":{"6":{},"8":{},"39":{},"45":{},"75":{},"88":{},"94":{},"95":{},"96":{},"128":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"194":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{}},"component":{}}],["deploymentconfig/bar",{"_index":3252,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["deploytimeoutminut",{"_index":2475,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["deploytimeoutretri",{"_index":2609,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["deprec",{"_index":2137,"title":{"80-13":{},"94-10":{},"133-13":{},"148-10":{},"199-13":{},"214-10":{}},"name":{},"text":{"94":{},"95":{},"96":{},"148":{},"149":{},"150":{},"151":{},"160":{},"181":{},"214":{},"215":{},"216":{},"217":{},"226":{},"247":{}},"component":{}}],["deps.jar",{"_index":2246,"title":{},"name":{},"text":{"81":{}},"component":{}}],["deriv",{"_index":1674,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["describ",{"_index":903,"title":{},"name":{},"text":{"13":{},"23":{},"27":{},"35":{},"36":{},"39":{},"49":{},"59":{},"62":{},"71":{},"72":{},"75":{},"79":{},"80":{},"81":{},"92":{},"98":{},"108":{},"111":{},"121":{},"122":{},"127":{},"130":{},"132":{},"133":{},"137":{},"142":{},"146":{},"154":{},"169":{},"172":{},"182":{},"184":{},"185":{},"187":{},"188":{},"193":{},"196":{},"198":{},"199":{},"203":{},"208":{},"212":{},"220":{},"235":{},"238":{},"248":{},"250":{},"251":{},"253":{},"254":{}},"component":{}}],["descript",{"_index":331,"title":{"153-3":{},"189-2":{},"189-4":{},"219-3":{},"255-2":{},"255-4":{}},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"32":{},"41":{},"45":{},"47":{},"50":{},"68":{},"80":{},"87":{},"88":{},"96":{},"99":{},"100":{},"115":{},"117":{},"133":{},"140":{},"141":{},"151":{},"153":{},"155":{},"156":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"189":{},"199":{},"206":{},"207":{},"217":{},"219":{},"221":{},"222":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"255":{}},"component":{}}],["design",{"_index":1282,"title":{},"name":{},"text":{"21":{},"22":{},"57":{},"58":{},"98":{},"102":{},"126":{},"154":{},"158":{},"192":{},"220":{},"224":{},"258":{}},"component":{}}],["desir",{"_index":909,"title":{},"name":{},"text":{"13":{},"49":{},"79":{},"81":{},"95":{},"96":{},"102":{},"128":{},"132":{},"137":{},"142":{},"146":{},"149":{},"151":{},"194":{},"198":{},"203":{},"208":{},"212":{},"215":{},"217":{}},"component":{}}],["despit",{"_index":3419,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["destin",{"_index":1774,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["destroy",{"_index":1406,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["detail",{"_index":341,"title":{"153-3":{},"189-2":{},"219-3":{},"255-2":{}},"name":{},"text":{"2":{},"14":{},"20":{},"27":{},"41":{},"50":{},"56":{},"62":{},"79":{},"93":{},"95":{},"96":{},"99":{},"101":{},"111":{},"128":{},"132":{},"136":{},"147":{},"149":{},"151":{},"153":{},"155":{},"157":{},"158":{},"161":{},"172":{},"181":{},"189":{},"194":{},"198":{},"202":{},"213":{},"215":{},"217":{},"219":{},"221":{},"223":{},"224":{},"238":{},"247":{},"255":{}},"component":{}}],["detect",{"_index":897,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"151":{},"213":{},"217":{}},"component":{}}],["determin",{"_index":733,"title":{},"name":{},"text":{"6":{},"8":{},"14":{},"45":{},"47":{},"50":{},"88":{},"96":{},"99":{},"108":{},"137":{},"141":{},"142":{},"151":{},"153":{},"155":{},"169":{},"203":{},"207":{},"208":{},"217":{},"219":{},"221":{},"235":{}},"component":{}}],["dev",{"_index":670,"title":{"128-4":{},"194-4":{}},"name":{},"text":{"5":{},"14":{},"21":{},"22":{},"35":{},"36":{},"37":{},"44":{},"50":{},"57":{},"58":{},"71":{},"72":{},"73":{},"79":{},"80":{},"83":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"121":{},"122":{},"126":{},"128":{},"132":{},"133":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"184":{},"185":{},"188":{},"192":{},"194":{},"198":{},"199":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"250":{},"251":{},"254":{},"258":{}},"component":{}}],["dev.dev",{"_index":2724,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["dev.env",{"_index":2729,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["dev.json",{"_index":3692,"title":{},"name":{},"text":{"182":{},"187":{},"188":{},"248":{},"253":{},"254":{}},"component":{}}],["dev.tfbackend.config",{"_index":3726,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["dev.yml",{"_index":3729,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["dev/docgen:latest",{"_index":2200,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["dev/test",{"_index":1302,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["devel",{"_index":3474,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["develop",{"_index":502,"title":{"81":{},"100":{},"134":{},"156":{},"200":{},"222":{},"8-4":{},"14-17":{},"19-1":{},"32-8":{},"47-8":{},"50-17":{},"55-1":{},"68-8":{},"88-8":{},"100-1":{},"117-8":{},"141-8":{},"156-1":{},"207-8":{},"222-1":{}},"name":{"81":{},"134":{},"200":{}},"text":{"2":{},"13":{},"14":{},"16":{},"19":{},"21":{},"24":{},"27":{},"32":{},"34":{},"36":{},"37":{},"38":{},"41":{},"49":{},"50":{},"52":{},"55":{},"57":{},"60":{},"62":{},"68":{},"70":{},"72":{},"73":{},"74":{},"81":{},"93":{},"96":{},"98":{},"100":{},"101":{},"109":{},"111":{},"112":{},"113":{},"114":{},"117":{},"119":{},"120":{},"122":{},"126":{},"127":{},"136":{},"147":{},"150":{},"151":{},"154":{},"156":{},"157":{},"170":{},"172":{},"173":{},"175":{},"176":{},"178":{},"180":{},"181":{},"182":{},"183":{},"185":{},"187":{},"188":{},"189":{},"192":{},"193":{},"202":{},"213":{},"216":{},"217":{},"220":{},"222":{},"223":{},"236":{},"238":{},"239":{},"241":{},"242":{},"244":{},"246":{},"247":{},"248":{},"249":{},"251":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["dev→test",{"_index":2470,"title":{},"name":{},"text":{"96":{}},"component":{}}],["diagram",{"_index":2253,"title":{},"name":{},"text":{"81":{},"136":{},"202":{}},"component":{}}],["dialect",{"_index":306,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["dialogu",{"_index":410,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["diam",{"_index":800,"title":{},"name":{},"text":{"10":{}},"component":{}}],["dictionari",{"_index":1668,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["diff",{"_index":2108,"title":{},"name":{},"text":{"79":{},"80":{},"96":{},"132":{},"133":{},"150":{},"151":{},"198":{},"199":{},"216":{},"217":{}},"component":{}}],["differ",{"_index":0,"title":{"1-1":{},"40-1":{},"76-1":{},"95-8":{},"129-1":{},"149-8":{},"151-29":{},"195-1":{},"215-8":{},"217-29":{}},"name":{},"text":{"1":{},"6":{},"11":{},"12":{},"19":{},"29":{},"32":{},"40":{},"45":{},"55":{},"63":{},"68":{},"76":{},"85":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"108":{},"109":{},"112":{},"114":{},"117":{},"126":{},"127":{},"128":{},"129":{},"136":{},"138":{},"148":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"170":{},"173":{},"174":{},"176":{},"192":{},"193":{},"194":{},"195":{},"202":{},"204":{},"214":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"236":{},"239":{},"240":{},"242":{},"258":{}},"component":{}}],["differenti",{"_index":1977,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["difficult",{"_index":2441,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["digit",{"_index":1304,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["digital/od",{"_index":2135,"title":{},"name":{},"text":{"79":{},"80":{},"100":{},"108":{},"132":{},"133":{},"156":{},"169":{},"198":{},"199":{},"222":{},"235":{}},"component":{}}],["dir",{"_index":2829,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["dir(context.targetdir",{"_index":2774,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["direct",{"_index":457,"title":{"22-5":{},"58-5":{}},"name":{},"text":{"2":{},"19":{},"22":{},"32":{},"38":{},"41":{},"55":{},"58":{},"68":{},"74":{},"100":{},"109":{},"117":{},"156":{},"170":{},"222":{},"236":{}},"component":{}}],["directli",{"_index":1948,"title":{},"name":{},"text":{"39":{},"75":{},"79":{},"132":{},"151":{},"153":{},"198":{},"217":{},"219":{}},"component":{}}],["directori",{"_index":99,"title":{"2-19":{},"2-42":{},"2-55":{},"41-19":{},"41-42":{},"41-55":{}},"name":{},"text":{"2":{},"4":{},"6":{},"19":{},"26":{},"28":{},"30":{},"31":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"45":{},"55":{},"61":{},"64":{},"65":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"91":{},"93":{},"96":{},"99":{},"100":{},"109":{},"110":{},"113":{},"116":{},"117":{},"119":{},"120":{},"121":{},"122":{},"130":{},"132":{},"137":{},"142":{},"145":{},"146":{},"147":{},"151":{},"155":{},"156":{},"170":{},"171":{},"175":{},"178":{},"183":{},"184":{},"185":{},"196":{},"198":{},"203":{},"208":{},"211":{},"212":{},"213":{},"217":{},"221":{},"222":{},"236":{},"237":{},"241":{},"244":{},"249":{},"250":{},"251":{}},"component":{}}],["disabl",{"_index":482,"title":{},"name":{},"text":{"2":{},"11":{},"12":{},"14":{},"16":{},"19":{},"27":{},"29":{},"32":{},"41":{},"50":{},"52":{},"55":{},"62":{},"63":{},"68":{},"98":{},"100":{},"107":{},"111":{},"117":{},"126":{},"151":{},"154":{},"156":{},"157":{},"168":{},"172":{},"181":{},"192":{},"217":{},"220":{},"222":{},"223":{},"234":{},"238":{},"240":{},"247":{},"258":{}},"component":{}}],["disasbl",{"_index":1739,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["disclaim",{"_index":2971,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["discontinu",{"_index":2388,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["discuss",{"_index":1634,"title":{},"name":{},"text":{"32":{},"38":{},"68":{},"74":{},"81":{},"117":{}},"component":{}}],["disk",{"_index":2033,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["display",{"_index":1083,"title":{},"name":{},"text":{"14":{},"27":{},"50":{},"62":{},"96":{},"100":{},"101":{},"111":{},"151":{},"156":{},"157":{},"172":{},"217":{},"222":{},"223":{},"238":{}},"component":{}}],["dist",{"_index":1590,"title":{},"name":{},"text":{"29":{},"35":{},"38":{},"63":{},"71":{},"74":{},"114":{},"121":{},"176":{},"184":{},"242":{},"250":{}},"component":{}}],["distinguish",{"_index":2405,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["distribut",{"_index":1402,"title":{"24-9":{},"60-9":{}},"name":{},"text":{"27":{},"62":{},"82":{},"111":{},"120":{},"135":{},"172":{},"183":{},"189":{},"201":{},"238":{},"249":{},"255":{}},"component":{}}],["distributionfil",{"_index":2617,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["do",{"_index":1529,"title":{},"name":{},"text":{"28":{},"32":{},"65":{},"68":{},"96":{},"114":{},"117":{},"151":{},"176":{},"217":{},"240":{},"242":{}},"component":{}}],["doc",{"_index":1211,"title":{},"name":{},"text":{"19":{},"55":{},"77":{},"79":{},"80":{},"82":{},"93":{},"98":{},"100":{},"126":{},"130":{},"132":{},"133":{},"135":{},"151":{},"154":{},"156":{},"174":{},"192":{},"196":{},"198":{},"199":{},"201":{},"217":{},"220":{},"222":{},"240":{},"258":{}},"component":{}}],["docgen",{"_index":2170,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["docgen:latest",{"_index":2195,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["docker",{"_index":138,"title":{"25":{},"66":{},"115":{},"177":{},"243":{},"2-63":{},"41-63":{},"93-4":{},"147-4":{},"213-4":{}},"name":{"25":{},"66":{},"115":{},"177":{},"243":{}},"text":{"5":{},"6":{},"11":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"44":{},"45":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"80":{},"83":{},"93":{},"96":{},"98":{},"100":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"133":{},"147":{},"151":{},"153":{},"154":{},"156":{},"158":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"184":{},"185":{},"189":{},"199":{},"213":{},"217":{},"219":{},"220":{},"222":{},"224":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"250":{},"251":{},"255":{}},"component":{}}],["docker/dist",{"_index":1469,"title":{},"name":{},"text":{"25":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"112":{},"114":{},"115":{},"121":{},"122":{},"173":{},"176":{},"177":{},"184":{},"185":{},"239":{},"242":{},"243":{},"250":{},"251":{}},"component":{}}],["docker/dockerfil",{"_index":2213,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["docker/plain",{"_index":1937,"title":{},"name":{},"text":{"39":{},"75":{},"123":{},"186":{},"252":{}},"component":{}}],["docker_oauth",{"_index":3626,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["docker_registri",{"_index":2428,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["docker_streamlit",{"_index":3625,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["docker_streamlit/dist",{"_index":3637,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["dockerdir",{"_index":2463,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["dockerfil",{"_index":695,"title":{},"name":{},"text":{"6":{},"12":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"31":{},"32":{},"33":{},"35":{},"36":{},"37":{},"38":{},"45":{},"60":{},"61":{},"62":{},"63":{},"65":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"79":{},"80":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"121":{},"122":{},"128":{},"132":{},"133":{},"146":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"194":{},"198":{},"199":{},"212":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{}},"component":{}}],["dockerfile.centos7",{"_index":2101,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["dockerfile.rhel7",{"_index":2102,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["dockerfile.ubi8",{"_index":3472,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["dockerhub",{"_index":3143,"title":{},"name":{},"text":{"128":{},"142":{},"194":{},"208":{}},"component":{}}],["dockerimagerepositori",{"_index":2197,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["dockerregistri",{"_index":940,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"215":{}},"component":{}}],["dockerregistry}/cd/jenkin",{"_index":948,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["dockerregistry}/foo",{"_index":2490,"title":{},"name":{},"text":{"96":{}},"component":{}}],["dockerregistry}/hugo/jenkin",{"_index":1985,"title":{},"name":{},"text":{"50":{}},"component":{}}],["dockerstrategi",{"_index":2196,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["document",{"_index":23,"title":{"82":{},"124":{},"135":{},"190":{},"201":{},"256":{},"77-15":{},"82-2":{},"82-4":{},"82-5":{},"98-14":{},"126-12":{},"130-13":{},"135-2":{},"135-4":{},"135-5":{},"154-17":{},"192-12":{},"196-13":{},"201-2":{},"201-4":{},"201-5":{},"220-17":{},"258-12":{}},"name":{"82":{},"124":{},"135":{},"190":{},"201":{},"256":{}},"text":{"1":{},"12":{},"14":{},"20":{},"24":{},"40":{},"50":{},"56":{},"60":{},"76":{},"77":{},"78":{},"80":{},"82":{},"83":{},"92":{},"93":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"133":{},"135":{},"136":{},"142":{},"146":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"169":{},"174":{},"181":{},"186":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"199":{},"201":{},"202":{},"208":{},"212":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"235":{},"240":{},"247":{},"252":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["documentation/od",{"_index":2354,"title":{},"name":{},"text":{"93":{}},"component":{}}],["documentation/opendevstack/5.x/administration/helm",{"_index":3211,"title":{},"name":{},"text":{"142":{},"146":{},"208":{},"212":{}},"component":{}}],["documentation/opendevstack/latest/jenkin",{"_index":3222,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["documet",{"_index":2263,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["doesn’t",{"_index":598,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"151":{},"211":{},"217":{}},"component":{}}],["dolor",{"_index":793,"title":{},"name":{},"text":{"10":{}},"component":{}}],["domain",{"_index":612,"title":{},"name":{},"text":{"4":{},"6":{},"43":{},"45":{},"85":{},"91":{},"138":{},"145":{},"204":{},"211":{}},"component":{}}],["don't",{"_index":3627,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["done",{"_index":443,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"13":{},"20":{},"21":{},"22":{},"27":{},"41":{},"45":{},"49":{},"56":{},"57":{},"58":{},"62":{},"77":{},"78":{},"79":{},"80":{},"92":{},"95":{},"96":{},"98":{},"101":{},"102":{},"108":{},"111":{},"130":{},"131":{},"132":{},"133":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"153":{},"154":{},"157":{},"158":{},"161":{},"169":{},"172":{},"196":{},"197":{},"198":{},"199":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"219":{},"220":{},"223":{},"224":{},"227":{},"234":{},"235":{},"238":{}},"component":{}}],["don´t",{"_index":1081,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["don’t",{"_index":203,"title":{},"name":{},"text":{"2":{},"4":{},"32":{},"41":{},"43":{},"68":{},"77":{},"79":{},"80":{},"82":{},"91":{},"100":{},"108":{},"117":{},"121":{},"122":{},"130":{},"132":{},"133":{},"135":{},"137":{},"142":{},"145":{},"146":{},"151":{},"156":{},"169":{},"184":{},"185":{},"196":{},"198":{},"199":{},"201":{},"203":{},"208":{},"211":{},"212":{},"217":{},"222":{},"235":{},"250":{},"251":{}},"component":{}}],["dot",{"_index":3391,"title":{},"name":{},"text":{"153":{},"178":{},"189":{},"219":{},"244":{},"255":{}},"component":{}}],["down",{"_index":2118,"title":{},"name":{},"text":{"79":{},"95":{},"98":{},"132":{},"149":{},"154":{},"198":{},"215":{},"220":{}},"component":{}}],["download",{"_index":751,"title":{},"name":{},"text":{"7":{},"32":{},"46":{},"68":{},"76":{},"117":{},"129":{},"130":{},"181":{},"195":{},"196":{},"247":{}},"component":{}}],["downsid",{"_index":2592,"title":{},"name":{},"text":{"96":{},"128":{},"151":{},"194":{},"217":{}},"component":{}}],["dramat",{"_index":1290,"title":{},"name":{},"text":{"21":{},"57":{},"95":{},"149":{},"215":{}},"component":{}}],["drift",{"_index":908,"title":{},"name":{},"text":{"13":{},"49":{},"96":{},"151":{},"217":{}},"component":{}}],["driver",{"_index":299,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["drop",{"_index":2126,"title":{},"name":{},"text":{"79":{},"132":{},"136":{},"198":{},"202":{}},"component":{}}],["ds",{"_index":1612,"title":{"150-10":{},"150-11":{},"216-10":{},"216-11":{}},"name":{"31":{},"32":{},"33":{},"67":{},"68":{},"69":{},"116":{},"117":{},"118":{},"178":{},"179":{},"180":{},"244":{},"245":{},"246":{}},"text":{"67":{},"69":{},"94":{},"95":{},"98":{},"116":{},"118":{},"126":{},"148":{},"149":{},"150":{},"153":{},"154":{},"178":{},"179":{},"180":{},"192":{},"214":{},"215":{},"216":{},"219":{},"220":{},"244":{},"245":{},"246":{},"258":{}},"component":{}}],["dsi_debug_mod",{"_index":1737,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_dvc_remot",{"_index":1702,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_execute_on",{"_index":1718,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_execute_on=ssh",{"_index":1740,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_prediction_service_password",{"_index":1724,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_prediction_service_usernam",{"_index":1723,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_host",{"_index":1728,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_http_proxi",{"_index":1742,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_https_proxi",{"_index":1743,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_password",{"_index":1704,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_port",{"_index":1729,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_ssh_usernam",{"_index":1703,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_training_base_url",{"_index":1721,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_training_service_password",{"_index":1720,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsi_training_service_usernam",{"_index":1719,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dsl",{"_index":1598,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["due",{"_index":1682,"title":{},"name":{},"text":{"32":{},"68":{},"96":{},"100":{},"117":{},"150":{},"151":{},"154":{},"156":{},"216":{},"217":{},"220":{},"222":{}},"component":{}}],["dummi",{"_index":1536,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["dump",{"_index":2843,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["duo",{"_index":816,"title":{},"name":{},"text":{"10":{}},"component":{}}],["duplic",{"_index":928,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"97":{},"99":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["durabl",{"_index":2320,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["dure",{"_index":278,"title":{"4-4":{},"43-4":{},"91-4":{},"145-4":{},"211-4":{}},"name":{},"text":{"2":{},"7":{},"14":{},"27":{},"32":{},"41":{},"46":{},"50":{},"62":{},"68":{},"80":{},"95":{},"96":{},"98":{},"102":{},"111":{},"117":{},"121":{},"128":{},"133":{},"136":{},"149":{},"151":{},"153":{},"154":{},"172":{},"184":{},"194":{},"199":{},"202":{},"215":{},"217":{},"219":{},"220":{},"238":{},"250":{}},"component":{}}],["dvc",{"_index":1686,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dvc_ssh_password",{"_index":1700,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dvc_ssh_user",{"_index":1699,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["dynam",{"_index":844,"title":{},"name":{},"text":{"11":{},"12":{},"96":{},"109":{},"151":{},"170":{},"217":{},"236":{}},"component":{}}],["e",{"_index":2325,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["e.g",{"_index":263,"title":{},"name":{},"text":{"2":{},"8":{},"13":{},"14":{},"21":{},"22":{},"26":{},"32":{},"34":{},"39":{},"41":{},"47":{},"49":{},"50":{},"57":{},"58":{},"61":{},"68":{},"70":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"103":{},"108":{},"110":{},"117":{},"119":{},"128":{},"129":{},"130":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"159":{},"160":{},"161":{},"169":{},"171":{},"181":{},"182":{},"194":{},"195":{},"196":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"225":{},"226":{},"227":{},"234":{},"235":{},"237":{},"247":{},"248":{}},"component":{}}],["e.g.0.1.1",{"_index":1067,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["e2",{"_index":1759,"title":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{},"123-6":{},"186-6":{},"252-6":{}},"name":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{}},"text":{"34":{},"35":{},"36":{},"38":{},"39":{},"70":{},"71":{},"72":{},"74":{},"75":{},"98":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"154":{},"181":{},"183":{},"185":{},"186":{},"192":{},"220":{},"247":{},"249":{},"251":{},"252":{},"258":{}},"component":{}}],["e2e.t",{"_index":3808,"title":{},"name":{},"text":{"247":{}},"component":{}}],["e2e:jenkins:record",{"_index":3682,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["ea",{"_index":817,"title":{},"name":{},"text":{"10":{}},"component":{}}],["each",{"_index":24,"title":{"128-3":{},"194-3":{}},"name":{},"text":{"1":{},"5":{},"14":{},"24":{},"32":{},"39":{},"40":{},"44":{},"50":{},"60":{},"68":{},"75":{},"76":{},"77":{},"80":{},"82":{},"83":{},"93":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"117":{},"128":{},"129":{},"130":{},"133":{},"135":{},"136":{},"137":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"174":{},"194":{},"195":{},"196":{},"199":{},"201":{},"202":{},"203":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"240":{},"258":{}},"component":{}}],["earlier",{"_index":542,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"154":{},"220":{}},"component":{}}],["eas",{"_index":1195,"title":{},"name":{},"text":{"19":{},"29":{},"30":{},"34":{},"35":{},"38":{},"55":{},"63":{},"64":{},"70":{},"71":{},"74":{},"100":{},"112":{},"113":{},"119":{},"120":{},"151":{},"153":{},"155":{},"156":{},"173":{},"174":{},"175":{},"180":{},"181":{},"183":{},"187":{},"188":{},"217":{},"219":{},"221":{},"222":{},"239":{},"240":{},"241":{},"246":{},"247":{},"249":{},"253":{},"254":{}},"component":{}}],["easi",{"_index":930,"title":{},"name":{},"text":{"14":{},"50":{},"80":{},"96":{},"97":{},"98":{},"128":{},"133":{},"151":{},"152":{},"154":{},"179":{},"194":{},"199":{},"217":{},"218":{},"220":{},"245":{}},"component":{}}],["easier",{"_index":2409,"title":{},"name":{},"text":{"95":{},"128":{},"149":{},"194":{},"215":{}},"component":{}}],["easiest",{"_index":2503,"title":{},"name":{},"text":{"96":{},"98":{},"108":{},"151":{},"154":{},"169":{},"217":{},"220":{},"235":{}},"component":{}}],["easili",{"_index":1490,"title":{},"name":{},"text":{"27":{},"29":{},"32":{},"62":{},"63":{},"68":{},"79":{},"80":{},"111":{},"112":{},"117":{},"120":{},"124":{},"125":{},"130":{},"132":{},"133":{},"172":{},"173":{},"174":{},"183":{},"190":{},"191":{},"196":{},"198":{},"199":{},"238":{},"239":{},"240":{},"249":{},"256":{},"257":{}},"component":{}}],["echo",{"_index":1361,"title":{},"name":{},"text":{"22":{},"58":{},"96":{},"100":{},"151":{},"156":{},"181":{},"217":{},"222":{},"247":{}},"component":{}}],["eclips",{"_index":2358,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["edg",{"_index":2053,"title":{},"name":{},"text":{"77":{},"80":{},"81":{},"83":{},"133":{},"136":{},"199":{},"202":{}},"component":{}}],["edit",{"_index":440,"title":{},"name":{},"text":{"2":{},"14":{},"22":{},"32":{},"41":{},"50":{},"58":{},"68":{},"80":{},"94":{},"95":{},"96":{},"98":{},"101":{},"117":{},"133":{},"148":{},"149":{},"150":{},"151":{},"154":{},"157":{},"167":{},"199":{},"214":{},"215":{},"216":{},"217":{},"220":{},"223":{},"233":{}},"component":{}}],["edit/admin",{"_index":2751,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["editor",{"_index":3184,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["editorconfig",{"_index":3766,"title":{},"name":{},"text":{"240":{}},"component":{}}],["effect",{"_index":2448,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"101":{},"128":{},"149":{},"151":{},"154":{},"157":{},"194":{},"215":{},"217":{},"220":{},"223":{}},"component":{}}],["effort",{"_index":3132,"title":{},"name":{},"text":{"127":{},"153":{},"155":{},"193":{},"219":{},"221":{}},"component":{}}],["eigher",{"_index":1171,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["eighter",{"_index":1216,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["eigther",{"_index":2075,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["eirmod",{"_index":802,"title":{},"name":{},"text":{"10":{}},"component":{}}],["elabor",{"_index":3717,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["elasticsearch",{"_index":1409,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["elif",{"_index":2846,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["elitr",{"_index":798,"title":{},"name":{},"text":{"10":{}},"component":{}}],["email",{"_index":123,"title":{"2-40":{},"41-40":{},"87-3":{},"140-3":{},"206-3":{}},"name":{},"text":{"6":{},"14":{},"16":{},"22":{},"45":{},"50":{},"52":{},"58":{},"87":{},"96":{},"101":{},"140":{},"151":{},"157":{},"206":{},"217":{},"223":{}},"component":{}}],["email1@foo.bar",{"_index":2330,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["email2@foo.bar",{"_index":2331,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["emailextrecipi",{"_index":2328,"title":{},"name":{},"text":{"87":{},"96":{},"140":{},"151":{},"206":{},"217":{}},"component":{}}],["embed",{"_index":2369,"title":{},"name":{},"text":{"93":{},"147":{},"170":{},"181":{},"213":{},"236":{},"247":{}},"component":{}}],["empow",{"_index":650,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["empti",{"_index":348,"title":{"4-1":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"2":{},"41":{},"77":{},"79":{},"96":{},"98":{},"126":{},"130":{},"132":{},"151":{},"153":{},"154":{},"157":{},"189":{},"192":{},"196":{},"198":{},"217":{},"219":{},"220":{},"223":{},"255":{},"258":{}},"component":{}}],["en",{"_index":1923,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["enabl",{"_index":57,"title":{},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"11":{},"12":{},"14":{},"24":{},"27":{},"32":{},"40":{},"41":{},"44":{},"45":{},"50":{},"60":{},"62":{},"68":{},"76":{},"83":{},"87":{},"94":{},"96":{},"98":{},"100":{},"101":{},"109":{},"111":{},"117":{},"129":{},"136":{},"140":{},"148":{},"151":{},"154":{},"156":{},"157":{},"170":{},"172":{},"181":{},"195":{},"202":{},"206":{},"214":{},"217":{},"220":{},"222":{},"223":{},"236":{},"238":{},"240":{},"247":{}},"component":{}}],["enable/dis",{"_index":3444,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["enablecach",{"_index":1181,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["enableencryptableproperti",{"_index":1182,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["enableoauth2cli",{"_index":1192,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["enablewebsecur",{"_index":1180,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["encod",{"_index":2342,"title":{},"name":{},"text":{"93":{},"100":{},"113":{},"147":{},"156":{},"175":{},"213":{},"222":{},"241":{}},"component":{}}],["encount",{"_index":1748,"title":{},"name":{},"text":{"32":{},"68":{},"81":{},"117":{}},"component":{}}],["encrypt",{"_index":246,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["end",{"_index":968,"title":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{},"136-8":{},"202-8":{}},"name":{},"text":{"14":{},"18":{},"34":{},"38":{},"50":{},"54":{},"70":{},"74":{},"77":{},"81":{},"96":{},"97":{},"98":{},"101":{},"108":{},"119":{},"120":{},"127":{},"130":{},"151":{},"152":{},"153":{},"154":{},"157":{},"162":{},"163":{},"164":{},"165":{},"169":{},"181":{},"182":{},"183":{},"184":{},"189":{},"193":{},"196":{},"217":{},"218":{},"219":{},"220":{},"223":{},"228":{},"229":{},"230":{},"231":{},"235":{},"247":{},"248":{},"249":{},"250":{},"255":{}},"component":{}}],["endoint",{"_index":1628,"title":{"32-13":{},"68-13":{},"117-13":{}},"name":{},"text":{},"component":{}}],["endpoint",{"_index":729,"title":{"32-14":{},"32-15":{},"47-1":{},"68-14":{},"68-15":{},"88-1":{},"117-14":{},"117-15":{},"141-1":{},"207-1":{}},"name":{},"text":{"6":{},"8":{},"19":{},"32":{},"45":{},"47":{},"55":{},"68":{},"88":{},"100":{},"101":{},"117":{},"123":{},"141":{},"156":{},"157":{},"174":{},"186":{},"207":{},"222":{},"223":{},"240":{},"252":{}},"component":{}}],["endpoint\":\"add_project\",\"stage\":\"check_preconditions\",\"status\":\"failed\",\"errors\":[{\"error",{"_index":2877,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["enforc",{"_index":2595,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["engin",{"_index":659,"title":{},"name":{},"text":{"5":{},"21":{},"32":{},"44":{},"57":{},"68":{},"82":{},"83":{},"117":{},"127":{},"135":{},"170":{},"193":{},"201":{},"236":{}},"component":{}}],["enhanc",{"_index":664,"title":{},"name":{},"text":{"5":{},"21":{},"44":{},"57":{},"83":{},"101":{},"157":{},"170":{},"174":{},"223":{},"236":{}},"component":{}}],["enjoy",{"_index":3545,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["ensur",{"_index":431,"title":{},"name":{},"text":{"2":{},"32":{},"36":{},"37":{},"39":{},"41":{},"68":{},"72":{},"73":{},"75":{},"77":{},"80":{},"81":{},"95":{},"96":{},"98":{},"117":{},"122":{},"128":{},"130":{},"133":{},"137":{},"142":{},"146":{},"149":{},"151":{},"154":{},"173":{},"180":{},"181":{},"185":{},"194":{},"196":{},"199":{},"203":{},"208":{},"212":{},"215":{},"217":{},"220":{},"239":{},"246":{},"247":{},"251":{}},"component":{}}],["enter",{"_index":294,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{}},"component":{}}],["enterpris",{"_index":722,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"204":{}},"component":{}}],["entir",{"_index":2225,"title":{},"name":{},"text":{"81":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["entri",{"_index":322,"title":{},"name":{},"text":{"2":{},"12":{},"29":{},"41":{},"63":{},"81":{},"101":{},"112":{},"136":{},"151":{},"153":{},"157":{},"173":{},"189":{},"202":{},"217":{},"219":{},"223":{},"239":{},"255":{}},"component":{}}],["entrypoint",{"_index":1305,"title":{},"name":{},"text":{"22":{},"28":{},"38":{},"58":{},"65":{},"74":{},"102":{},"114":{},"158":{},"176":{},"224":{},"242":{}},"component":{}}],["entrypoint.sh",{"_index":2992,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["env",{"_index":973,"title":{},"name":{},"text":{"14":{},"47":{},"50":{},"80":{},"88":{},"96":{},"109":{},"133":{},"141":{},"151":{},"170":{},"199":{},"207":{},"217":{},"236":{}},"component":{}}],["env.docker_registri",{"_index":942,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"215":{}},"component":{}}],["env.docker_registry}/foo",{"_index":2788,"title":{},"name":{},"text":{"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["env.enc",{"_index":2748,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["env.ods_git_ref",{"_index":2765,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["env.ods_image_tag",{"_index":2766,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["env.ods_namespac",{"_index":2763,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["env.shared_library_repositori",{"_index":941,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["env.snyk_authentication_cod",{"_index":1085,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["env.yml",{"_index":3324,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["envfil",{"_index":2794,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["environ",{"_index":32,"title":{"3":{},"42":{},"90":{},"144":{},"210":{},"2-9":{},"2-57":{},"11-1":{},"32-16":{},"32-17":{},"41-9":{},"41-57":{},"68-16":{},"68-17":{},"77-10":{},"96-4":{},"96-12":{},"98-17":{},"98-18":{},"98-21":{},"117-16":{},"117-17":{},"126-13":{},"130-7":{},"151-4":{},"154-20":{},"154-21":{},"154-24":{},"192-13":{},"196-7":{},"217-4":{},"220-20":{},"220-21":{},"220-24":{},"258-13":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"6":{},"8":{},"11":{},"12":{},"14":{},"16":{},"19":{},"20":{},"21":{},"24":{},"27":{},"29":{},"32":{},"35":{},"36":{},"37":{},"40":{},"41":{},"43":{},"44":{},"45":{},"47":{},"50":{},"52":{},"55":{},"56":{},"57":{},"60":{},"62":{},"63":{},"68":{},"71":{},"72":{},"73":{},"76":{},"80":{},"83":{},"87":{},"88":{},"91":{},"95":{},"96":{},"98":{},"100":{},"101":{},"107":{},"109":{},"111":{},"112":{},"117":{},"121":{},"122":{},"126":{},"129":{},"130":{},"133":{},"136":{},"140":{},"141":{},"145":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"161":{},"168":{},"170":{},"172":{},"173":{},"174":{},"178":{},"180":{},"181":{},"182":{},"184":{},"185":{},"187":{},"188":{},"192":{},"195":{},"196":{},"199":{},"202":{},"206":{},"207":{},"211":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"227":{},"234":{},"236":{},"238":{},"239":{},"240":{},"244":{},"246":{},"247":{},"248":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["environemnt",{"_index":1424,"title":{},"name":{},"text":{"24":{},"60":{},"136":{},"202":{}},"component":{}}],["environment.dev.t",{"_index":1835,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["environment.e2e.t",{"_index":1837,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["environment.prod.t",{"_index":1804,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["environment.sh",{"_index":274,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["environment.t",{"_index":1805,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["environment=dev",{"_index":2691,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["environment=prod",{"_index":2720,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["environment=qa",{"_index":2719,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["environmentcr",{"_index":1058,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["environmentlimit",{"_index":1051,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["environments/kernel",{"_index":3610,"title":{"178-5":{},"244-5":{}},"name":{},"text":{},"component":{}}],["eo",{"_index":813,"title":{},"name":{},"text":{"10":{}},"component":{}}],["eol",{"_index":3491,"title":{},"name":{},"text":{"166":{},"232":{}},"component":{}}],["epic",{"_index":1864,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["equal",{"_index":353,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"128":{},"151":{},"194":{},"217":{}},"component":{}}],["erat",{"_index":810,"title":{},"name":{},"text":{"10":{}},"component":{}}],["ergonom",{"_index":3596,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["errimgpul",{"_index":584,"title":{"4-6":{},"43-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{},"component":{}}],["error",{"_index":528,"title":{"4-2":{},"4-6":{},"22-6":{},"43-2":{},"43-6":{},"58-6":{},"80-26":{},"91-2":{},"91-6":{},"101-9":{},"133-26":{},"145-2":{},"145-6":{},"157-12":{},"199-26":{},"211-2":{},"211-6":{},"223-12":{}},"name":{},"text":{"2":{},"4":{},"22":{},"41":{},"43":{},"58":{},"80":{},"91":{},"100":{},"101":{},"109":{},"114":{},"133":{},"145":{},"151":{},"153":{},"154":{},"156":{},"157":{},"170":{},"172":{},"176":{},"199":{},"211":{},"217":{},"219":{},"220":{},"222":{},"223":{},"236":{},"238":{},"242":{}},"component":{}}],["error\").make_error",{"_index":3013,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["error.lua",{"_index":2991,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["es2018",{"_index":3083,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["eslint",{"_index":3650,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["eslint/schemat",{"_index":3699,"title":{},"name":{},"text":{"184":{},"250":{}},"component":{}}],["especi",{"_index":2149,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["essenti",{"_index":2721,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["est",{"_index":826,"title":{},"name":{},"text":{"10":{}},"component":{}}],["establish",{"_index":3428,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["et",{"_index":807,"title":{},"name":{},"text":{"10":{}},"component":{}}],["etc",{"_index":910,"title":{"146-1":{},"212-1":{}},"name":{},"text":{"13":{},"20":{},"22":{},"49":{},"56":{},"58":{},"81":{},"83":{},"92":{},"95":{},"98":{},"100":{},"101":{},"115":{},"136":{},"146":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"177":{},"182":{},"189":{},"202":{},"212":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"243":{},"248":{},"255":{}},"component":{}}],["etc/ans",{"_index":605,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["etl",{"_index":3685,"title":{"182":{},"248":{}},"name":{"182":{},"248":{}},"text":{"182":{},"186":{},"248":{},"252":{}},"component":{}}],["eu",{"_index":2821,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["evalu",{"_index":197,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["evalut",{"_index":198,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["even",{"_index":238,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"83":{},"96":{},"98":{},"101":{},"128":{},"132":{},"151":{},"154":{},"157":{},"194":{},"198":{},"217":{},"220":{},"223":{}},"component":{}}],["event",{"_index":622,"title":{},"name":{},"text":{"4":{},"6":{},"8":{},"22":{},"43":{},"45":{},"47":{},"58":{},"80":{},"88":{},"91":{},"133":{},"141":{},"145":{},"199":{},"207":{},"211":{}},"component":{}}],["events.add(\"pr:declin",{"_index":1317,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["events.add(\"pr:merg",{"_index":1316,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["events.add(\"repo:refs_chang",{"_index":1315,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["everyt",{"_index":2284,"title":{},"name":{},"text":{"83":{}},"component":{}}],["everyth",{"_index":641,"title":{},"name":{},"text":{"5":{},"14":{},"44":{},"50":{},"83":{},"98":{},"154":{},"220":{}},"component":{}}],["everywher",{"_index":2519,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["evidence.t",{"_index":3640,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["exact",{"_index":774,"title":{},"name":{},"text":{"8":{},"35":{},"47":{},"71":{},"83":{},"88":{},"96":{},"98":{},"121":{},"130":{},"136":{},"137":{},"141":{},"150":{},"151":{},"154":{},"184":{},"196":{},"202":{},"203":{},"207":{},"216":{},"217":{},"220":{},"250":{}},"component":{}}],["exactli",{"_index":1082,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"108":{},"151":{},"154":{},"169":{},"217":{},"220":{},"235":{}},"component":{}}],["exampl",{"_index":351,"title":{"14-6":{},"24-5":{},"32-10":{},"50-6":{},"60-5":{},"68-10":{},"96-5":{},"96-13":{},"98-8":{},"98-9":{},"100-9":{},"117-10":{},"126-8":{},"126-9":{},"151-5":{},"154-11":{},"154-12":{},"156-9":{},"192-8":{},"192-9":{},"217-5":{},"220-11":{},"220-12":{},"222-9":{},"258-8":{},"258-9":{}},"name":{},"text":{"2":{},"12":{},"13":{},"14":{},"18":{},"19":{},"20":{},"24":{},"26":{},"30":{},"32":{},"41":{},"47":{},"49":{},"50":{},"54":{},"55":{},"56":{},"60":{},"61":{},"64":{},"68":{},"76":{},"81":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"109":{},"110":{},"113":{},"115":{},"117":{},"126":{},"128":{},"129":{},"130":{},"136":{},"141":{},"147":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"170":{},"171":{},"173":{},"174":{},"175":{},"177":{},"180":{},"189":{},"192":{},"194":{},"195":{},"196":{},"202":{},"207":{},"213":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"236":{},"237":{},"239":{},"240":{},"241":{},"243":{},"246":{},"255":{},"258":{}},"component":{}}],["example.com/foo/bar",{"_index":2775,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["example.com/project/compon",{"_index":1480,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["example.json",{"_index":1765,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"181":{},"247":{}},"component":{}}],["example.spec.t",{"_index":1926,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["except",{"_index":459,"title":{"4-6":{},"43-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{"2":{},"25":{},"26":{},"32":{},"41":{},"61":{},"66":{},"68":{},"95":{},"100":{},"110":{},"115":{},"117":{},"121":{},"124":{},"125":{},"149":{},"156":{},"171":{},"177":{},"184":{},"190":{},"191":{},"215":{},"222":{},"237":{},"243":{},"250":{},"256":{},"257":{}},"component":{}}],["exclud",{"_index":2736,"title":{},"name":{},"text":{"98":{},"121":{},"122":{},"154":{},"184":{},"185":{},"220":{},"250":{},"251":{}},"component":{}}],["exclus",{"_index":2613,"title":{},"name":{},"text":{"96":{},"121":{},"122":{},"151":{},"184":{},"185":{},"217":{},"250":{},"251":{}},"component":{}}],["execut",{"_index":279,"title":{"4-4":{},"43-4":{},"91-4":{},"145-4":{},"211-4":{}},"name":{},"text":{"2":{},"4":{},"8":{},"19":{},"22":{},"24":{},"25":{},"27":{},"28":{},"29":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"47":{},"55":{},"58":{},"60":{},"62":{},"63":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"79":{},"80":{},"88":{},"91":{},"96":{},"98":{},"100":{},"106":{},"109":{},"111":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"126":{},"132":{},"133":{},"137":{},"141":{},"142":{},"145":{},"146":{},"150":{},"151":{},"154":{},"156":{},"166":{},"167":{},"170":{},"172":{},"173":{},"176":{},"177":{},"180":{},"181":{},"183":{},"184":{},"185":{},"192":{},"198":{},"199":{},"203":{},"207":{},"208":{},"211":{},"212":{},"216":{},"217":{},"220":{},"222":{},"232":{},"233":{},"236":{},"238":{},"239":{},"242":{},"243":{},"246":{},"247":{},"249":{},"250":{},"251":{},"258":{}},"component":{}}],["execute/reproduc",{"_index":1745,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["executor",{"_index":1404,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["exeuct",{"_index":3679,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["exist",{"_index":163,"title":{"39-7":{},"39-9":{},"75-7":{},"75-9":{}},"name":{},"text":{"2":{},"5":{},"14":{},"22":{},"39":{},"41":{},"44":{},"47":{},"50":{},"58":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"115":{},"123":{},"126":{},"127":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"169":{},"177":{},"186":{},"189":{},"192":{},"193":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"235":{},"240":{},"243":{},"252":{},"255":{},"258":{}},"component":{}}],["existing/multipl",{"_index":3792,"title":{},"name":{},"text":{"240":{}},"component":{}}],["exit",{"_index":1356,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"154":{},"156":{},"220":{},"222":{}},"component":{}}],["expand",{"_index":3328,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["expec",{"_index":3696,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["expect",{"_index":1647,"title":{"182":{},"248":{}},"name":{},"text":{"32":{},"68":{},"93":{},"98":{},"100":{},"117":{},"126":{},"130":{},"147":{},"151":{},"154":{},"156":{},"172":{},"182":{},"192":{},"196":{},"213":{},"217":{},"220":{},"222":{},"238":{},"248":{},"258":{}},"component":{}}],["experi",{"_index":3789,"title":{},"name":{},"text":{"240":{}},"component":{}}],["experiment",{"_index":2817,"title":{"154-9":{},"220-9":{}},"name":{},"text":{"100":{},"128":{},"156":{},"194":{},"222":{}},"component":{}}],["explain",{"_index":285,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"81":{},"96":{},"100":{},"101":{},"151":{},"156":{},"157":{},"217":{},"222":{},"223":{}},"component":{}}],["explicit",{"_index":2294,"title":{},"name":{},"text":{"83":{},"98":{},"136":{},"154":{},"202":{},"220":{}},"component":{}}],["explicitli",{"_index":2299,"title":{},"name":{},"text":{"83":{},"95":{},"136":{},"149":{},"202":{},"215":{}},"component":{}}],["exploit",{"_index":3739,"title":{},"name":{},"text":{"217":{}},"component":{}}],["explor",{"_index":1429,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["export",{"_index":141,"title":{"2-65":{},"41-65":{}},"name":{},"text":{"2":{},"41":{},"76":{},"79":{},"80":{},"96":{},"98":{},"129":{},"132":{},"133":{},"151":{},"154":{},"195":{},"198":{},"199":{},"217":{},"220":{}},"component":{}}],["export/import",{"_index":2973,"title":{},"name":{},"text":{"102":{}},"component":{}}],["expos",{"_index":1138,"title":{},"name":{},"text":{"19":{},"24":{},"32":{},"55":{},"60":{},"68":{},"80":{},"87":{},"95":{},"100":{},"117":{},"133":{},"140":{},"149":{},"156":{},"174":{},"199":{},"206":{},"215":{},"222":{},"240":{}},"component":{}}],["express",{"_index":937,"title":{"28":{},"65":{},"114":{},"176":{},"242":{}},"name":{"28":{},"65":{},"114":{},"176":{},"242":{}},"text":{"14":{},"20":{},"28":{},"39":{},"50":{},"56":{},"65":{},"75":{},"98":{},"101":{},"114":{},"154":{},"157":{},"176":{},"220":{},"223":{},"242":{}},"component":{}}],["ext",{"_index":1105,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"96":{},"151":{},"217":{}},"component":{}}],["ext:2.63",{"_index":702,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["extend",{"_index":1187,"title":{},"name":{},"text":{"19":{},"26":{},"55":{},"61":{},"83":{},"87":{},"100":{},"110":{},"136":{},"140":{},"156":{},"171":{},"174":{},"202":{},"206":{},"222":{},"237":{},"240":{}},"component":{}}],["extens",{"_index":922,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"174":{},"178":{},"240":{},"244":{}},"component":{}}],["extensionimagelabel",{"_index":2570,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["extent",{"_index":3181,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["extern",{"_index":430,"title":{"32-4":{},"68-4":{},"117-4":{}},"name":{},"text":{"2":{},"24":{},"32":{},"41":{},"47":{},"60":{},"68":{},"80":{},"88":{},"98":{},"117":{},"133":{},"141":{},"151":{},"154":{},"199":{},"207":{},"217":{},"220":{}},"component":{}}],["extra",{"_index":2457,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["extract",{"_index":1249,"title":{},"name":{},"text":{"20":{},"56":{},"76":{},"96":{},"101":{},"129":{},"151":{},"157":{},"195":{},"217":{},"223":{}},"component":{}}],["ey",{"_index":3214,"title":{},"name":{},"text":{"142":{},"208":{}},"component":{}}],["f",{"_index":2173,"title":{},"name":{},"text":{"80":{},"100":{},"133":{},"151":{},"156":{},"199":{},"217":{},"222":{}},"component":{}}],["f1",{"_index":1368,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["f2",{"_index":1369,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["fact",{"_index":3240,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["fail",{"_index":577,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"4":{},"14":{},"16":{},"22":{},"36":{},"37":{},"43":{},"50":{},"52":{},"58":{},"72":{},"73":{},"91":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"122":{},"145":{},"148":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"185":{},"211":{},"214":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"251":{}},"component":{}}],["failedbuildshistorylimit",{"_index":2192,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["failonsnykscanvulner",{"_index":1046,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"96":{},"151":{},"217":{}},"component":{}}],["failonvulner",{"_index":2472,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["failur",{"_index":1049,"title":{},"name":{},"text":{"14":{},"22":{},"50":{},"58":{},"96":{},"101":{},"151":{},"157":{},"217":{},"223":{}},"component":{}}],["failurethreshold",{"_index":2607,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["fall",{"_index":2665,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["fals",{"_index":575,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"22":{},"28":{},"29":{},"58":{},"63":{},"65":{},"80":{},"96":{},"101":{},"133":{},"151":{},"157":{},"199":{},"217":{},"223":{},"240":{}},"component":{}}],["familiar",{"_index":184,"title":{},"name":{},"text":{"2":{},"27":{},"41":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["faq",{"_index":1276,"title":{"21":{},"57":{},"101-15":{},"102-2":{},"157-19":{},"158-3":{},"223-19":{},"224-3":{}},"name":{"21":{},"57":{}},"text":{"101":{},"102":{},"157":{},"223":{}},"component":{}}],["far",{"_index":447,"title":{},"name":{},"text":{"2":{},"41":{},"150":{},"216":{}},"component":{}}],["fashion",{"_index":3156,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["fast",{"_index":2596,"title":{},"name":{},"text":{"96":{},"151":{},"174":{},"217":{},"240":{}},"component":{}}],["fastest",{"_index":2745,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["fatal",{"_index":572,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["favicon",{"_index":1900,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["favicon.ico",{"_index":1806,"title":{},"name":{},"text":{"35":{},"37":{},"38":{},"71":{},"73":{},"74":{},"121":{},"184":{},"250":{}},"component":{}}],["favicon.png",{"_index":3052,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["favor",{"_index":3649,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["favorit",{"_index":529,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["fe",{"_index":1786,"title":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"name":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"text":{"94":{},"95":{},"98":{},"126":{},"148":{},"149":{},"150":{},"153":{},"154":{},"192":{},"214":{},"215":{},"216":{},"219":{},"220":{},"258":{}},"component":{}}],["featur",{"_index":745,"title":{"7-2":{},"24-6":{},"46-2":{},"60-6":{},"94-11":{},"98-18":{},"103-2":{},"104-2":{},"105-2":{},"106-2":{},"107-2":{},"148-11":{},"154-9":{},"154-21":{},"159-2":{},"160-2":{},"161-2":{},"162-2":{},"163-2":{},"164-2":{},"165-2":{},"166-2":{},"167-2":{},"168-2":{},"214-11":{},"220-9":{},"220-21":{},"225-2":{},"226-2":{},"227-2":{},"228-2":{},"229-2":{},"230-2":{},"231-2":{},"232-2":{},"233-2":{},"234-2":{}},"name":{},"text":{"8":{},"14":{},"16":{},"25":{},"32":{},"47":{},"50":{},"52":{},"66":{},"68":{},"80":{},"81":{},"83":{},"88":{},"94":{},"96":{},"98":{},"100":{},"108":{},"115":{},"117":{},"127":{},"133":{},"136":{},"141":{},"148":{},"150":{},"151":{},"154":{},"156":{},"169":{},"174":{},"177":{},"193":{},"199":{},"202":{},"207":{},"214":{},"216":{},"217":{},"220":{},"222":{},"235":{},"240":{},"243":{}},"component":{}}],["feature/foo",{"_index":974,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["feature/foobar",{"_index":3236,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["feb",{"_index":3178,"title":{"136-8":{},"202-8":{}},"name":{},"text":{},"component":{}}],["fed",{"_index":2792,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["feedback",{"_index":2552,"title":{},"name":{},"text":{"96":{},"98":{},"126":{},"151":{},"154":{},"192":{},"217":{},"220":{},"258":{}},"component":{}}],["feel",{"_index":3090,"title":{},"name":{},"text":{"115":{},"177":{},"243":{}},"component":{}}],["fernet",{"_index":1423,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["fernetkey",{"_index":1422,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["fetch",{"_index":724,"title":{},"name":{},"text":{"6":{},"45":{},"80":{},"81":{},"85":{},"133":{},"138":{},"199":{},"204":{}},"component":{}}],["fetchuserrepos.j",{"_index":1865,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["few",{"_index":1196,"title":{},"name":{},"text":{"19":{},"55":{},"96":{},"100":{},"128":{},"151":{},"156":{},"194":{},"217":{},"222":{}},"component":{}}],["ff",{"_index":2591,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["fi",{"_index":1362,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["field",{"_index":347,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"88":{},"96":{},"98":{},"141":{},"151":{},"154":{},"207":{},"217":{},"220":{}},"component":{}}],["file",{"_index":406,"title":{"14-10":{},"24-4":{},"25-2":{},"26-2":{},"27-2":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"32-4":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"50-10":{},"60-4":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-2":{},"66-2":{},"67-2":{},"68-4":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"93-1":{},"96-8":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-2":{},"115-2":{},"116-2":{},"117-4":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"126-1":{},"147-1":{},"151-8":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"192-1":{},"213-1":{},"217-8":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"253-2":{},"254-2":{},"256-2":{},"257-2":{},"258-1":{}},"name":{},"text":{"2":{},"4":{},"11":{},"12":{},"14":{},"17":{},"20":{},"22":{},"24":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"50":{},"53":{},"56":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"79":{},"81":{},"82":{},"91":{},"93":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"129":{},"130":{},"132":{},"135":{},"136":{},"145":{},"147":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"189":{},"195":{},"196":{},"198":{},"201":{},"202":{},"211":{},"213":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"253":{},"254":{},"255":{}},"component":{}}],["file=ssh",{"_index":2505,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["filenam",{"_index":2803,"title":{},"name":{},"text":{"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["files/metadata.yml",{"_index":3505,"title":{},"name":{},"text":{"169":{},"235":{}},"component":{}}],["files/releas",{"_index":3088,"title":{},"name":{},"text":{"115":{},"177":{},"243":{}},"component":{}}],["filesystem",{"_index":1166,"title":{},"name":{},"text":{"19":{},"39":{},"55":{},"75":{},"100":{},"138":{},"151":{},"156":{},"204":{},"217":{},"222":{}},"component":{}}],["fill",{"_index":418,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"77":{},"88":{},"108":{},"130":{},"141":{},"169":{},"196":{},"207":{},"235":{}},"component":{}}],["filter",{"_index":425,"title":{},"name":{},"text":{"2":{},"41":{},"109":{},"170":{},"236":{}},"component":{}}],["filtering/rewrit",{"_index":3017,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["final",{"_index":933,"title":{},"name":{},"text":{"14":{},"36":{},"37":{},"50":{},"60":{},"72":{},"73":{},"95":{},"96":{},"122":{},"128":{},"130":{},"137":{},"142":{},"146":{},"149":{},"151":{},"174":{},"185":{},"194":{},"196":{},"203":{},"208":{},"212":{},"215":{},"217":{},"240":{},"251":{}},"component":{}}],["find",{"_index":272,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"17":{},"21":{},"27":{},"41":{},"45":{},"50":{},"53":{},"57":{},"62":{},"76":{},"77":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"120":{},"129":{},"130":{},"149":{},"151":{},"153":{},"154":{},"157":{},"169":{},"172":{},"173":{},"174":{},"180":{},"181":{},"182":{},"183":{},"187":{},"188":{},"195":{},"196":{},"215":{},"217":{},"219":{},"220":{},"223":{},"235":{},"238":{},"239":{},"240":{},"246":{},"247":{},"248":{},"249":{},"253":{},"254":{}},"component":{}}],["findpullrequest(str",{"_index":2535,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["fingerprint",{"_index":3335,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["finish",{"_index":413,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"98":{},"117":{},"154":{},"220":{}},"component":{}}],["first",{"_index":262,"title":{"240-11":{}},"name":{},"text":{"2":{},"14":{},"18":{},"24":{},"28":{},"29":{},"38":{},"41":{},"50":{},"54":{},"60":{},"63":{},"65":{},"74":{},"77":{},"80":{},"81":{},"96":{},"98":{},"100":{},"101":{},"114":{},"128":{},"130":{},"133":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"176":{},"189":{},"194":{},"196":{},"199":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"240":{},"242":{},"255":{}},"component":{}}],["fit",{"_index":676,"title":{},"name":{},"text":{"5":{},"14":{},"28":{},"39":{},"44":{},"50":{},"65":{},"75":{},"80":{},"83":{},"96":{},"97":{},"109":{},"114":{},"133":{},"151":{},"152":{},"158":{},"170":{},"176":{},"199":{},"217":{},"218":{},"224":{},"236":{},"242":{}},"component":{}}],["fix",{"_index":603,"title":{"80-25":{},"80-26":{},"133-25":{},"133-26":{},"199-25":{},"199-26":{}},"name":{},"text":{"4":{},"14":{},"43":{},"50":{},"79":{},"80":{},"81":{},"83":{},"91":{},"95":{},"96":{},"98":{},"128":{},"132":{},"133":{},"136":{},"145":{},"149":{},"151":{},"154":{},"172":{},"181":{},"194":{},"198":{},"199":{},"202":{},"211":{},"215":{},"217":{},"220":{},"238":{},"247":{}},"component":{}}],["fixtur",{"_index":1764,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"181":{},"247":{}},"component":{}}],["fixtures/default",{"_index":3719,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["flag",{"_index":1048,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"81":{},"96":{},"100":{},"151":{},"156":{},"217":{},"222":{},"240":{}},"component":{}}],["flags.t",{"_index":3710,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["flake8",{"_index":3032,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["flask",{"_index":1559,"title":{"29":{},"63":{},"112":{},"173":{},"239":{}},"name":{"29":{},"63":{},"112":{},"173":{},"239":{}},"text":{"29":{},"32":{},"63":{},"68":{},"95":{},"112":{},"117":{},"136":{},"149":{},"173":{},"202":{},"215":{},"239":{}},"component":{}}],["fli",{"_index":734,"title":{"96-12":{}},"name":{},"text":{"6":{},"8":{},"14":{},"45":{},"47":{},"50":{},"80":{},"88":{},"96":{},"98":{},"126":{},"133":{},"141":{},"154":{},"192":{},"199":{},"207":{},"220":{},"258":{}},"component":{}}],["flight",{"_index":2806,"title":{"100-8":{},"156-8":{},"222-8":{}},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["flow",{"_index":962,"title":{"81-3":{}},"name":{},"text":{"14":{},"50":{},"80":{},"96":{},"133":{},"136":{},"151":{},"199":{},"202":{},"217":{}},"component":{}}],["flower",{"_index":1711,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["fmt",{"_index":3587,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["focus",{"_index":3595,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["folder",{"_index":271,"title":{},"name":{},"text":{"2":{},"4":{},"12":{},"14":{},"24":{},"25":{},"27":{},"28":{},"29":{},"32":{},"33":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"50":{},"60":{},"62":{},"63":{},"65":{},"66":{},"68":{},"69":{},"71":{},"72":{},"73":{},"74":{},"75":{},"80":{},"82":{},"91":{},"98":{},"100":{},"101":{},"108":{},"111":{},"112":{},"114":{},"115":{},"117":{},"118":{},"120":{},"121":{},"122":{},"126":{},"133":{},"135":{},"145":{},"154":{},"156":{},"157":{},"161":{},"169":{},"172":{},"173":{},"174":{},"176":{},"177":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"199":{},"201":{},"211":{},"220":{},"222":{},"223":{},"227":{},"234":{},"235":{},"238":{},"239":{},"240":{},"242":{},"243":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["folk",{"_index":2264,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["follow",{"_index":172,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"19":{},"24":{},"27":{},"32":{},"34":{},"36":{},"37":{},"38":{},"39":{},"41":{},"45":{},"47":{},"50":{},"55":{},"60":{},"62":{},"68":{},"70":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"87":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"117":{},"119":{},"120":{},"122":{},"126":{},"127":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"141":{},"142":{},"146":{},"148":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"183":{},"184":{},"185":{},"189":{},"192":{},"193":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"207":{},"208":{},"212":{},"214":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"249":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["follw",{"_index":1886,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["foo",{"_index":1033,"title":{},"name":{},"text":{"14":{},"47":{},"50":{},"88":{},"95":{},"96":{},"98":{},"99":{},"108":{},"141":{},"149":{},"151":{},"154":{},"155":{},"169":{},"207":{},"215":{},"217":{},"220":{},"221":{},"235":{}},"component":{}}],["foo_bar",{"_index":1968,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["foobar",{"_index":986,"title":{},"name":{},"text":{"14":{},"50":{},"96":{}},"component":{}}],["forc",{"_index":913,"title":{},"name":{},"text":{"13":{},"41":{},"49":{},"93":{},"98":{},"147":{},"151":{},"154":{},"213":{},"217":{},"220":{}},"component":{}}],["forcerebuild",{"_index":2661,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["forcibl",{"_index":3374,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["forget",{"_index":3293,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["fork",{"_index":2234,"title":{},"name":{},"text":{"81":{},"99":{},"123":{},"124":{},"125":{},"155":{},"186":{},"190":{},"191":{},"221":{},"252":{},"256":{},"257":{}},"component":{}}],["form",{"_index":378,"title":{},"name":{},"text":{"2":{},"22":{},"28":{},"41":{},"47":{},"58":{},"65":{},"80":{},"88":{},"98":{},"114":{},"126":{},"133":{},"141":{},"154":{},"176":{},"192":{},"199":{},"207":{},"220":{},"242":{},"258":{}},"component":{}}],["format",{"_index":474,"title":{},"name":{},"text":{"2":{},"34":{},"41":{},"70":{},"81":{},"100":{},"108":{},"113":{},"115":{},"119":{},"151":{},"156":{},"169":{},"174":{},"175":{},"177":{},"217":{},"222":{},"235":{},"240":{},"241":{},"243":{}},"component":{}}],["formatt",{"_index":3652,"title":{},"name":{},"text":{"181":{},"184":{},"240":{},"247":{},"250":{}},"component":{}}],["forward",{"_index":731,"title":{},"name":{},"text":{"6":{},"8":{},"45":{},"47":{},"88":{},"96":{},"141":{},"150":{},"151":{},"207":{},"216":{},"217":{}},"component":{}}],["found",{"_index":570,"title":{"4-2":{},"43-2":{},"91-2":{},"145-2":{},"211-2":{}},"name":{},"text":{"14":{},"16":{},"19":{},"20":{},"21":{},"24":{},"25":{},"50":{},"52":{},"55":{},"56":{},"57":{},"60":{},"66":{},"87":{},"93":{},"96":{},"99":{},"100":{},"101":{},"102":{},"115":{},"140":{},"151":{},"155":{},"156":{},"157":{},"158":{},"161":{},"177":{},"206":{},"217":{},"221":{},"222":{},"223":{},"224":{},"243":{}},"component":{}}],["four",{"_index":2682,"title":{},"name":{},"text":{"98":{},"154":{},"181":{},"220":{},"247":{}},"component":{}}],["framework",{"_index":150,"title":{"25-3":{},"26-3":{},"27-8":{},"28-3":{},"29-3":{},"30-3":{},"31-3":{},"32-20":{},"33-3":{},"34-3":{},"35-3":{},"36-3":{},"37-3":{},"38-3":{},"61-3":{},"62-8":{},"63-3":{},"64-3":{},"65-3":{},"66-3":{},"67-3":{},"68-20":{},"69-3":{},"70-3":{},"71-3":{},"72-3":{},"73-3":{},"74-3":{},"109-3":{},"110-3":{},"111-8":{},"112-3":{},"113-3":{},"114-3":{},"115-3":{},"116-3":{},"117-20":{},"118-3":{},"119-3":{},"120-6":{},"121-3":{},"122-3":{},"124-3":{},"125-3":{},"170-3":{},"171-3":{},"172-8":{},"173-3":{},"174-3":{},"175-3":{},"176-3":{},"177-3":{},"178-3":{},"179-3":{},"180-3":{},"181-3":{},"182-3":{},"183-6":{},"184-3":{},"185-3":{},"187-3":{},"188-3":{},"190-3":{},"191-3":{},"236-3":{},"237-3":{},"238-8":{},"239-3":{},"240-3":{},"241-3":{},"242-3":{},"243-3":{},"244-3":{},"245-3":{},"246-3":{},"247-3":{},"248-3":{},"249-6":{},"250-3":{},"251-3":{},"253-3":{},"254-3":{},"256-3":{},"257-3":{}},"name":{},"text":{"2":{},"5":{},"25":{},"29":{},"32":{},"36":{},"41":{},"44":{},"63":{},"66":{},"68":{},"72":{},"83":{},"108":{},"112":{},"113":{},"114":{},"115":{},"117":{},"122":{},"123":{},"136":{},"153":{},"158":{},"160":{},"169":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"185":{},"186":{},"189":{},"202":{},"219":{},"224":{},"226":{},"235":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"251":{},"252":{},"255":{}},"component":{}}],["free",{"_index":205,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"115":{},"128":{},"154":{},"177":{},"185":{},"194":{},"220":{},"243":{},"251":{}},"component":{}}],["freedom",{"_index":671,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"158":{},"224":{}},"component":{}}],["fromref",{"_index":3271,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["front",{"_index":1770,"title":{},"name":{},"text":{"34":{},"70":{},"101":{},"119":{},"157":{},"184":{},"223":{},"250":{}},"component":{}}],["frontend",{"_index":1128,"title":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{},"19-2":{},"39-3":{},"55-2":{},"75-3":{},"100-3":{},"123-4":{},"156-3":{},"186-4":{},"222-3":{},"252-4":{}},"name":{},"text":{"19":{},"35":{},"39":{},"55":{},"71":{},"75":{},"98":{},"100":{},"121":{},"123":{},"126":{},"153":{},"154":{},"156":{},"184":{},"185":{},"186":{},"189":{},"192":{},"219":{},"220":{},"222":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["frontend.spa.en",{"_index":2818,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["full",{"_index":181,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"41":{},"44":{},"50":{},"79":{},"83":{},"121":{},"132":{},"158":{},"174":{},"184":{},"198":{},"224":{},"240":{},"250":{}},"component":{}}],["function",{"_index":58,"title":{},"name":{},"text":{"1":{},"2":{},"11":{},"12":{},"22":{},"32":{},"40":{},"41":{},"58":{},"68":{},"76":{},"80":{},"81":{},"82":{},"101":{},"114":{},"115":{},"117":{},"129":{},"133":{},"135":{},"136":{},"157":{},"174":{},"176":{},"177":{},"181":{},"195":{},"199":{},"201":{},"202":{},"223":{},"240":{},"242":{},"243":{},"247":{}},"component":{}}],["further",{"_index":451,"title":{},"name":{},"text":{"2":{},"11":{},"12":{},"13":{},"14":{},"21":{},"26":{},"27":{},"32":{},"41":{},"47":{},"49":{},"50":{},"57":{},"61":{},"62":{},"68":{},"77":{},"78":{},"79":{},"80":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"102":{},"110":{},"111":{},"117":{},"120":{},"127":{},"128":{},"130":{},"131":{},"132":{},"133":{},"141":{},"147":{},"149":{},"151":{},"154":{},"155":{},"158":{},"166":{},"167":{},"171":{},"172":{},"173":{},"181":{},"182":{},"183":{},"193":{},"194":{},"196":{},"197":{},"198":{},"199":{},"207":{},"213":{},"215":{},"217":{},"220":{},"221":{},"224":{},"232":{},"233":{},"237":{},"238":{},"239":{},"240":{},"247":{},"248":{},"249":{}},"component":{}}],["furthermor",{"_index":2910,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["futur",{"_index":513,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"126":{},"150":{},"154":{},"192":{},"216":{},"220":{},"258":{}},"component":{}}],["g",{"_index":1847,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["g=u",{"_index":3672,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["galaxi",{"_index":2012,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["gate",{"_index":2375,"title":{"94-12":{},"148-12":{},"214-12":{}},"name":{},"text":{"94":{},"96":{},"148":{},"151":{},"214":{},"217":{}},"component":{}}],["gateway",{"_index":862,"title":{"109":{},"170":{},"236":{}},"name":{"109":{},"170":{},"236":{}},"text":{"12":{},"109":{},"126":{},"153":{},"170":{},"189":{},"192":{},"219":{},"236":{},"255":{},"258":{}},"component":{}}],["gateway/nginx",{"_index":3122,"title":{},"name":{},"text":{"123":{},"186":{},"252":{}},"component":{}}],["gather",{"_index":2559,"title":{},"name":{},"text":{"96":{},"151":{},"181":{},"217":{},"247":{}},"component":{}}],["gb",{"_index":176,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["geb",{"_index":3093,"title":{"120":{},"183":{},"249":{}},"name":{"120":{},"183":{},"249":{}},"text":{"120":{},"123":{},"183":{},"186":{},"249":{},"252":{}},"component":{}}],["gebconfig.groovi",{"_index":3101,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["geerlingguy",{"_index":2025,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["geerlingguy.dock",{"_index":2022,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["geerlingguy.git",{"_index":2011,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["geerlingguy.nginx",{"_index":2020,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["gen",{"_index":2073,"title":{"124":{},"190":{},"256":{}},"name":{"124":{},"190":{},"256":{}},"text":{"77":{},"79":{},"130":{},"132":{},"196":{},"198":{}},"component":{}}],["gener",{"_index":40,"title":{"124":{},"190":{},"256":{},"25-2":{},"26-2":{},"27-2":{},"28-2":{},"29-2":{},"30-2":{},"31-2":{},"33-2":{},"34-2":{},"35-2":{},"36-2":{},"37-2":{},"38-2":{},"61-2":{},"62-2":{},"63-2":{},"64-2":{},"65-2":{},"66-2":{},"67-2":{},"69-2":{},"70-2":{},"71-2":{},"72-2":{},"73-2":{},"74-2":{},"77-15":{},"80-3":{},"95-10":{},"98-14":{},"109-2":{},"110-2":{},"111-2":{},"112-2":{},"113-2":{},"114-2":{},"115-2":{},"116-2":{},"118-2":{},"119-2":{},"120-2":{},"121-2":{},"122-2":{},"124-2":{},"125-2":{},"126-12":{},"130-13":{},"133-3":{},"149-10":{},"154-17":{},"170-2":{},"171-2":{},"172-2":{},"173-2":{},"174-2":{},"175-2":{},"176-2":{},"177-2":{},"178-2":{},"179-2":{},"180-2":{},"181-2":{},"182-2":{},"183-2":{},"184-2":{},"185-2":{},"187-2":{},"188-2":{},"190-2":{},"191-2":{},"192-12":{},"196-13":{},"199-3":{},"215-10":{},"220-17":{},"236-2":{},"237-2":{},"238-2":{},"239-2":{},"240-2":{},"241-2":{},"242-2":{},"243-2":{},"244-2":{},"245-2":{},"246-2":{},"247-2":{},"248-2":{},"249-2":{},"250-2":{},"251-2":{},"253-2":{},"254-2":{},"256-2":{},"257-2":{},"258-12":{}},"name":{},"text":{"1":{},"2":{},"6":{},"13":{},"14":{},"18":{},"19":{},"22":{},"25":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"45":{},"49":{},"50":{},"54":{},"55":{},"58":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"80":{},"81":{},"82":{},"83":{},"87":{},"93":{},"95":{},"96":{},"98":{},"100":{},"101":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"133":{},"135":{},"136":{},"138":{},"140":{},"147":{},"149":{},"151":{},"153":{},"154":{},"156":{},"157":{},"167":{},"169":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"194":{},"195":{},"196":{},"199":{},"201":{},"202":{},"204":{},"206":{},"213":{},"215":{},"217":{},"219":{},"220":{},"222":{},"223":{},"233":{},"235":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["genrat",{"_index":1932,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["genreat",{"_index":1931,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["gerardcl",{"_index":1637,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["get",{"_index":147,"title":{"2":{},"41":{}},"name":{},"text":{"4":{},"19":{},"32":{},"43":{},"55":{},"68":{},"81":{},"91":{},"98":{},"100":{},"117":{},"128":{},"137":{},"142":{},"145":{},"146":{},"154":{},"156":{},"157":{},"181":{},"194":{},"203":{},"208":{},"211":{},"212":{},"220":{},"222":{},"223":{},"247":{}},"component":{}}],["getdefaultreviewerconditions(str",{"_index":3274,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["getdefaultreviewers(str",{"_index":3273,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["getmodel",{"_index":1732,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["getpullrequests(str",{"_index":2532,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["getusernam",{"_index":1272,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["getuserpassword",{"_index":1273,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["git",{"_index":79,"title":{"2-3":{},"14-10":{},"39-9":{},"41-3":{},"50-10":{},"75-9":{},"94-3":{},"96-4":{},"96-8":{},"98-7":{},"98-8":{},"98-9":{},"126-7":{},"126-8":{},"126-9":{},"148-3":{},"151-4":{},"151-8":{},"154-10":{},"154-11":{},"154-12":{},"192-7":{},"192-8":{},"192-9":{},"214-3":{},"217-4":{},"217-8":{},"220-10":{},"220-11":{},"220-12":{},"258-7":{},"258-8":{},"258-9":{}},"name":{},"text":{"2":{},"13":{},"14":{},"17":{},"19":{},"27":{},"31":{},"32":{},"36":{},"37":{},"39":{},"41":{},"49":{},"50":{},"53":{},"55":{},"62":{},"67":{},"68":{},"72":{},"73":{},"75":{},"76":{},"77":{},"80":{},"81":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"111":{},"116":{},"117":{},"122":{},"126":{},"129":{},"130":{},"133":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"172":{},"174":{},"178":{},"180":{},"185":{},"192":{},"195":{},"196":{},"199":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"238":{},"240":{},"244":{},"246":{},"251":{},"258":{}},"component":{}}],["git/archive/2.1.0.tar.gz",{"_index":2027,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["git_ref",{"_index":3172,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["git_ref=mast",{"_index":3169,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["git_ref=v3.0.0",{"_index":3201,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["git_url_http",{"_index":2799,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["git_url_http/ssh",{"_index":1966,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["gitbranch",{"_index":1037,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommit",{"_index":1038,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommitauthor",{"_index":1039,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommitmessag",{"_index":1041,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["gitcommitrawmessag",{"_index":2486,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["gitcommittim",{"_index":1042,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["github",{"_index":521,"title":{"82-5":{},"135-5":{},"201-5":{}},"name":{},"text":{"2":{},"14":{},"19":{},"25":{},"41":{},"50":{},"55":{},"66":{},"81":{},"83":{},"96":{},"99":{},"100":{},"115":{},"136":{},"151":{},"155":{},"156":{},"177":{},"202":{},"217":{},"221":{},"222":{},"243":{}},"component":{}}],["github.com/acm",{"_index":2235,"title":{},"name":{},"text":{"81":{}},"component":{}}],["github.com/opendevstack",{"_index":2084,"title":{},"name":{},"text":{"79":{},"80":{},"81":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["github/opendevstack/od",{"_index":3127,"title":{},"name":{},"text":{"124":{},"125":{},"190":{},"191":{},"256":{},"257":{}},"component":{}}],["gitignor",{"_index":1691,"title":{},"name":{},"text":{"32":{},"34":{},"38":{},"68":{},"70":{},"74":{},"117":{},"119":{},"180":{},"240":{},"246":{}},"component":{}}],["gitleak",{"_index":3556,"title":{},"name":{},"text":{"174":{}},"component":{}}],["gitleaks.adoc",{"_index":3512,"title":{},"name":{},"text":{"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["gitmodul",{"_index":3227,"title":{"150-7":{},"216-7":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["gitscmsourc",{"_index":946,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"148":{},"214":{}},"component":{}}],["giturl",{"_index":1036,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["giturlhttp",{"_index":2787,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["give",{"_index":661,"title":{},"name":{},"text":{"5":{},"21":{},"39":{},"44":{},"57":{},"75":{},"83":{},"102":{},"158":{},"224":{}},"component":{}}],["given",{"_index":1219,"title":{},"name":{},"text":{"20":{},"32":{},"47":{},"56":{},"68":{},"88":{},"96":{},"98":{},"100":{},"101":{},"117":{},"141":{},"151":{},"153":{},"154":{},"156":{},"157":{},"189":{},"207":{},"217":{},"219":{},"220":{},"222":{},"223":{},"255":{}},"component":{}}],["global",{"_index":388,"title":{},"name":{},"text":{"2":{},"14":{},"36":{},"41":{},"50":{},"72":{},"80":{},"87":{},"103":{},"104":{},"105":{},"106":{},"107":{},"122":{},"133":{},"140":{},"157":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"185":{},"199":{},"206":{},"223":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"251":{}},"component":{}}],["global.keyuser.role.nam",{"_index":3439,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["global.scss",{"_index":3708,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["go",{"_index":178,"title":{"26":{},"61":{},"103":{},"110":{},"159":{},"171":{},"225":{},"237":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"12":{},"13":{},"14":{},"22":{},"26":{},"32":{},"39":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"58":{},"61":{},"68":{},"75":{},"77":{},"80":{},"81":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"103":{},"108":{},"110":{},"117":{},"123":{},"130":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"154":{},"155":{},"159":{},"169":{},"171":{},"186":{},"196":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"220":{},"221":{},"225":{},"235":{},"237":{},"252":{}},"component":{}}],["go.mod",{"_index":2773,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["goal",{"_index":927,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"96":{},"97":{},"99":{},"117":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["gofmt’d",{"_index":1482,"title":{},"name":{},"text":{"26":{},"61":{},"81":{},"110":{},"171":{},"237":{}},"component":{}}],["golang",{"_index":1473,"title":{"26":{},"61":{},"110":{},"171":{},"237":{}},"name":{"26":{},"61":{},"103":{},"110":{},"159":{},"171":{},"225":{},"237":{}},"text":{"26":{},"39":{},"61":{},"75":{},"95":{},"103":{},"110":{},"149":{},"159":{},"171":{},"215":{},"225":{},"237":{}},"component":{}}],["golang:${odsimagetag",{"_index":2770,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["golang:2.x",{"_index":2420,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["golang:3.x",{"_index":2423,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"149":{},"150":{},"151":{},"155":{},"215":{},"216":{},"217":{},"221":{}},"component":{}}],["golang:4.x",{"_index":3239,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["golang:latest",{"_index":2974,"title":{},"name":{},"text":{"103":{},"159":{},"225":{}},"component":{}}],["golangci",{"_index":2976,"title":{},"name":{},"text":{"103":{},"159":{},"225":{}},"component":{}}],["good",{"_index":1458,"title":{},"name":{},"text":{"25":{},"32":{},"66":{},"68":{},"115":{},"117":{},"177":{},"243":{}},"component":{}}],["googl",{"_index":2244,"title":{},"name":{},"text":{"81":{},"120":{},"183":{},"249":{}},"component":{}}],["govern",{"_index":651,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["gpg",{"_index":2747,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["grab",{"_index":1355,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["gradl",{"_index":1145,"title":{"104":{},"27-4":{},"27-5":{},"27-7":{},"62-4":{},"62-5":{},"62-7":{},"111-4":{},"111-5":{},"111-7":{},"120-3":{},"120-4":{},"172-4":{},"172-5":{},"172-7":{},"183-3":{},"183-4":{},"238-4":{},"238-5":{},"238-7":{},"249-3":{},"249-4":{}},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"100":{},"104":{},"111":{},"120":{},"153":{},"156":{},"161":{},"172":{},"183":{},"189":{},"219":{},"222":{},"227":{},"238":{},"249":{},"255":{}},"component":{}}],["gradle.properti",{"_index":532,"title":{"27-6":{},"62-6":{},"111-6":{},"120-5":{},"172-6":{},"183-5":{},"238-6":{},"249-5":{}},"name":{},"text":{"2":{},"19":{},"27":{},"41":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["gradle/wrapper/gradl",{"_index":1494,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["gradle/wrapper/gradle.properti",{"_index":1496,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["gradlew",{"_index":1151,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"93":{},"100":{},"111":{},"120":{},"147":{},"156":{},"161":{},"172":{},"183":{},"213":{},"222":{},"227":{},"238":{},"249":{}},"component":{}}],["gradlew.bat",{"_index":1493,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["grant",{"_index":429,"title":{"94-4":{},"148-4":{},"214-4":{}},"name":{},"text":{"2":{},"4":{},"20":{},"41":{},"43":{},"56":{},"80":{},"91":{},"94":{},"98":{},"101":{},"133":{},"145":{},"148":{},"154":{},"157":{},"199":{},"211":{},"214":{},"220":{},"223":{}},"component":{}}],["graph",{"_index":2945,"title":{},"name":{},"text":{"101":{},"157":{},"223":{},"240":{}},"component":{}}],["graphic",{"_index":2254,"title":{},"name":{},"text":{"81":{}},"component":{}}],["great",{"_index":3234,"title":{"182":{},"248":{}},"name":{},"text":{"150":{},"174":{},"182":{},"216":{},"240":{},"248":{}},"component":{}}],["greenballs:1.15",{"_index":700,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["greeter",{"_index":1542,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["greeter.t",{"_index":1539,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["grep",{"_index":1358,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["groovi",{"_index":688,"title":{"6-3":{},"45-3":{}},"name":{},"text":{"14":{},"50":{},"81":{},"97":{},"120":{},"152":{},"183":{},"218":{},"249":{}},"component":{}}],["group",{"_index":111,"title":{"2-25":{},"2-27":{},"41-25":{},"41-27":{},"78-4":{},"101-4":{},"101-6":{},"101-7":{},"131-4":{},"157-7":{},"157-9":{},"157-10":{},"197-4":{},"223-7":{},"223-9":{},"223-10":{}},"name":{},"text":{"2":{},"4":{},"14":{},"22":{},"41":{},"43":{},"50":{},"58":{},"78":{},"80":{},"91":{},"94":{},"96":{},"98":{},"99":{},"101":{},"126":{},"131":{},"133":{},"145":{},"148":{},"151":{},"153":{},"154":{},"155":{},"157":{},"188":{},"189":{},"192":{},"197":{},"199":{},"211":{},"214":{},"217":{},"219":{},"220":{},"221":{},"223":{},"254":{},"255":{},"258":{}},"component":{}}],["group.allow",{"_index":2941,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["group.key=@odata.typ",{"_index":2946,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["group.object",{"_index":2948,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["group.value=#microsoft.graph.group",{"_index":2947,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["groupid",{"_index":1034,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["groups=admingroup",{"_index":2913,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["groups=opendevstack",{"_index":2942,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["grow",{"_index":3131,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["guarante",{"_index":2232,"title":{},"name":{},"text":{"81":{}},"component":{}}],["guard",{"_index":456,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["gubergren",{"_index":822,"title":{},"name":{},"text":{"10":{}},"component":{}}],["guess",{"_index":3308,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["gui",{"_index":667,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"158":{},"224":{}},"component":{}}],["guid",{"_index":158,"title":{"20":{},"56":{},"80":{},"81":{},"94":{},"95":{},"101":{},"133":{},"134":{},"148":{},"149":{},"150":{},"157":{},"199":{},"200":{},"214":{},"215":{},"216":{},"223":{}},"name":{},"text":{"2":{},"24":{},"36":{},"41":{},"60":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"98":{},"108":{},"122":{},"123":{},"129":{},"130":{},"131":{},"134":{},"135":{},"136":{},"137":{},"142":{},"146":{},"150":{},"154":{},"167":{},"169":{},"185":{},"186":{},"195":{},"196":{},"197":{},"200":{},"201":{},"202":{},"203":{},"208":{},"212":{},"216":{},"220":{},"233":{},"235":{},"251":{},"252":{}},"component":{}}],["guidanc",{"_index":3521,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["guidelin",{"_index":3735,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["gunicorn",{"_index":3031,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["gxp",{"_index":3191,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["h",{"_index":885,"title":{},"name":{},"text":{"12":{},"22":{},"58":{}},"component":{}}],["half",{"_index":2287,"title":{},"name":{},"text":{"83":{}},"component":{}}],["hand",{"_index":1784,"title":{},"name":{},"text":{"34":{},"70":{},"98":{},"119":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["handl",{"_index":245,"title":{"101-9":{},"157-12":{},"223-12":{}},"name":{},"text":{"2":{},"41":{},"77":{},"88":{},"99":{},"101":{},"109":{},"130":{},"141":{},"151":{},"155":{},"157":{},"170":{},"196":{},"207":{},"217":{},"221":{},"223":{},"236":{}},"component":{}}],["happen",{"_index":596,"title":{"22-6":{},"58-6":{}},"name":{},"text":{"4":{},"14":{},"17":{},"19":{},"22":{},"43":{},"50":{},"53":{},"55":{},"58":{},"83":{},"88":{},"91":{},"96":{},"98":{},"100":{},"141":{},"145":{},"151":{},"153":{},"154":{},"156":{},"174":{},"207":{},"211":{},"217":{},"219":{},"220":{},"222":{},"240":{}},"component":{}}],["hard",{"_index":1782,"title":{},"name":{},"text":{"34":{},"70":{},"80":{},"119":{},"133":{},"199":{}},"component":{}}],["hardcod",{"_index":2728,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["harder",{"_index":3160,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["harmon",{"_index":655,"title":{},"name":{},"text":{"5":{},"44":{},"83":{}},"component":{}}],["hash",{"_index":3394,"title":{},"name":{},"text":{"153":{},"174":{},"219":{},"240":{}},"component":{}}],["hashicorp",{"_index":193,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["have",{"_index":1077,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"96":{},"128":{},"148":{},"151":{},"154":{},"194":{},"214":{},"217":{},"220":{}},"component":{}}],["have’v",{"_index":2963,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["havingvalu",{"_index":1185,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["header",{"_index":846,"title":{},"name":{},"text":{"11":{},"100":{},"156":{},"222":{}},"component":{}}],["headers\").run_filt",{"_index":3019,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["headers.txt",{"_index":1349,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["health",{"_index":2305,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["heart",{"_index":1624,"title":{"32-5":{},"68-5":{},"117-5":{}},"name":{},"text":{},"component":{}}],["heavi",{"_index":1531,"title":{},"name":{},"text":{"28":{},"65":{},"95":{},"114":{},"149":{},"176":{},"215":{},"242":{}},"component":{}}],["held",{"_index":3730,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["hello",{"_index":2545,"title":{},"name":{},"text":{"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["hello_dag.pi",{"_index":1438,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["hello_kubernetes_operator.pi",{"_index":1439,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["hello_python_dag.pi",{"_index":1440,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["helloworld.vu",{"_index":1913,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["helm",{"_index":3129,"title":{"127":{},"193":{},"150-5":{},"151-26":{},"151-29":{},"216-5":{},"217-26":{},"217-29":{}},"name":{"127":{},"193":{}},"text":{"127":{},"136":{},"138":{},"142":{},"146":{},"150":{},"151":{},"153":{},"174":{},"189":{},"193":{},"202":{},"204":{},"208":{},"212":{},"216":{},"217":{},"219":{},"240":{},"255":{}},"component":{}}],["helm.sh/chart",{"_index":3362,"title":{"153-12":{},"219-12":{}},"name":{},"text":{"153":{},"219":{}},"component":{}}],["helm_diff_ignore_unknown_flags=tru",{"_index":3310,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmadditionalflag",{"_index":3319,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmdefaultflag",{"_index":3321,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmdiff",{"_index":3322,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmenvbasedvaluesfil",{"_index":3323,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmignor",{"_index":3763,"title":{},"name":{},"text":{"240":{}},"component":{}}],["helmprivatekeycredentialsid",{"_index":3333,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmreleasenam",{"_index":3337,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmvalu",{"_index":3339,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmvaluefil",{"_index":3325,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["helmvaluesfil",{"_index":3341,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["help",{"_index":151,"title":{},"name":{},"text":{"2":{},"4":{},"19":{},"38":{},"39":{},"41":{},"43":{},"55":{},"74":{},"75":{},"91":{},"100":{},"108":{},"123":{},"145":{},"156":{},"157":{},"169":{},"186":{},"211":{},"222":{},"223":{},"235":{},"252":{}},"component":{}}],["helper",{"_index":1693,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"174":{},"240":{}},"component":{}}],["henc",{"_index":3790,"title":{},"name":{},"text":{"240":{}},"component":{}}],["here",{"_index":199,"title":{},"name":{},"text":{"2":{},"20":{},"22":{},"25":{},"36":{},"38":{},"41":{},"56":{},"58":{},"66":{},"72":{},"74":{},"98":{},"101":{},"114":{},"115":{},"122":{},"126":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"174":{},"176":{},"177":{},"185":{},"189":{},"192":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"240":{},"242":{},"243":{},"251":{},"255":{},"258":{}},"component":{}}],["here’",{"_index":2365,"title":{},"name":{},"text":{"93":{},"95":{},"147":{},"149":{},"213":{},"215":{}},"component":{}}],["hibern",{"_index":305,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["high",{"_index":1750,"title":{"136-3":{},"202-3":{}},"name":{},"text":{"32":{},"68":{},"96":{},"117":{},"128":{},"151":{},"174":{},"185":{},"194":{},"217":{},"240":{},"251":{}},"component":{}}],["higher",{"_index":2562,"title":{},"name":{},"text":{"96":{},"151":{},"153":{},"157":{},"167":{},"189":{},"217":{},"219":{},"223":{},"233":{},"255":{}},"component":{}}],["highli",{"_index":1516,"title":{},"name":{},"text":{"27":{},"62":{},"80":{},"108":{},"111":{},"133":{},"169":{},"172":{},"199":{},"235":{},"238":{}},"component":{}}],["highlight",{"_index":3418,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["histogram.pi",{"_index":3631,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["histor",{"_index":2371,"title":{},"name":{},"text":{"93":{},"98":{},"147":{},"154":{},"213":{},"220":{}},"component":{}}],["histori",{"_index":2112,"title":{},"name":{},"text":{"79":{},"96":{},"132":{},"151":{},"198":{},"217":{}},"component":{}}],["history.j",{"_index":1861,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["hit",{"_index":393,"title":{},"name":{},"text":{"2":{},"41":{},"154":{},"220":{}},"component":{}}],["hoc",{"_index":3247,"title":{},"name":{},"text":{"150":{},"153":{},"216":{},"219":{}},"component":{}}],["hold",{"_index":2067,"title":{},"name":{},"text":{"77":{},"130":{},"153":{},"181":{},"196":{},"219":{},"247":{}},"component":{}}],["home",{"_index":1827,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"120":{},"122":{},"161":{},"181":{},"183":{},"185":{},"227":{},"234":{},"247":{},"249":{},"251":{}},"component":{}}],["home.module.t",{"_index":3702,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.html",{"_index":3703,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.scss",{"_index":3704,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.spec.t",{"_index":3705,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.page.t",{"_index":3706,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["home.vu",{"_index":1922,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["home/jenkins/.cache/cypress/${cypressvers",{"_index":3669,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/jenkins/.cache/cypress/${cypressversion}/cypress/cypress",{"_index":3674,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/jenkins/.cache/cypress/version/cypress",{"_index":3662,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/jenkins/cypress/cypress",{"_index":3666,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["home/us",{"_index":3467,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["homecontroller.scala",{"_index":3046,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["homecontrollerspec.scala",{"_index":3055,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["hook",{"_index":1486,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"180":{},"246":{}},"component":{}}],["host",{"_index":20,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"1":{},"2":{},"8":{},"12":{},"14":{},"21":{},"24":{},"32":{},"40":{},"41":{},"47":{},"50":{},"57":{},"60":{},"68":{},"76":{},"77":{},"79":{},"88":{},"93":{},"95":{},"96":{},"102":{},"109":{},"117":{},"123":{},"129":{},"132":{},"141":{},"147":{},"149":{},"151":{},"158":{},"170":{},"172":{},"186":{},"195":{},"198":{},"207":{},"213":{},"215":{},"217":{},"224":{},"236":{},"238":{},"252":{}},"component":{}}],["hot",{"_index":1929,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["hotfix",{"_index":965,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["howto",{"_index":1072,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["html",{"_index":1168,"title":{},"name":{},"text":{"19":{},"36":{},"55":{},"72":{},"82":{},"100":{},"122":{},"135":{},"151":{},"156":{},"185":{},"201":{},"217":{},"222":{},"251":{}},"component":{}}],["http",{"_index":827,"title":{"11":{},"30":{},"64":{}},"name":{},"text":{"11":{},"12":{},"19":{},"20":{},"30":{},"32":{},"55":{},"56":{},"64":{},"68":{},"96":{},"99":{},"100":{},"101":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"117":{},"151":{},"154":{},"155":{},"156":{},"157":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"174":{},"217":{},"220":{},"221":{},"222":{},"223":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"240":{}},"component":{}}],["http/tcp/udp",{"_index":2990,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["http://192.168.56.1:8088",{"_index":369,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:4440",{"_index":368,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:7990",{"_index":367,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8080",{"_index":364,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8090",{"_index":366,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8095/crowd",{"_index":310,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://192.168.56.31:8095/crowd/consol",{"_index":290,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://buildserver/jenkins/job/myjobname/123",{"_index":1002,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["http://dl.bintray.com/sbt/sbt",{"_index":494,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http://localhost:8080",{"_index":541,"title":{},"name":{},"text":{"2":{},"19":{},"37":{},"41":{},"55":{},"73":{},"100":{},"113":{},"156":{},"175":{},"222":{},"241":{}},"component":{}}],["http://localhost:8100",{"_index":1848,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["http://localhost:9000",{"_index":2368,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["http://nexu",{"_index":462,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["http_code",{"_index":2845,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["http_proxi",{"_index":757,"title":{},"name":{},"text":{"7":{},"46":{},"85":{},"138":{},"204":{}},"component":{}}],["http_resp_cod",{"_index":2853,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["http_resp_code=$(curl",{"_index":2840,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["http_resp_code=${http_resp_cod",{"_index":2852,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["https://$bitbucket_host/scm/$bitbucket_project",{"_index":3205,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["https://api.example.com",{"_index":2701,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["https://cd_user@bitbucket.domain.com/scm",{"_index":2188,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["https://centos.pkgs.org",{"_index":3476,"title":{},"name":{},"text":{"161":{}},"component":{}}],["https://cloud.cypress.io",{"_index":3677,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://dl.bintray.com/typesafe/ivi",{"_index":499,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://docs.cypress.io/guides/cloud/introduct",{"_index":3684,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://docs.cypress.io/guides/get",{"_index":3655,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://docs.openshift.com/contain",{"_index":1974,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"150":{},"207":{},"216":{}},"component":{}}],["https://docs.sonarqube.org/display/plug/java+plugin+and+bytecod",{"_index":2350,"title":{},"name":{},"text":{"93":{}},"component":{}}],["https://docs.sonarqube.org/display/sonar/analysis+paramet",{"_index":2349,"title":{},"name":{},"text":{"93":{}},"component":{}}],["https://docs.sonarsource.com/sonarqube/9.9/analyz",{"_index":3220,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["https://domain.com",{"_index":1785,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["https://download.cypress.io/desktop/${cypressversion}?platform=linux&arch=x64",{"_index":3665,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://en",{"_index":1716,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["https://example.com",{"_index":3513,"title":{},"name":{},"text":{"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"184":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"250":{}},"component":{}}],["https://github.com/acme/.git",{"_index":2236,"title":{},"name":{},"text":{"81":{}},"component":{}}],["https://github.com/bix",{"_index":2134,"title":{},"name":{},"text":{"79":{},"80":{},"100":{},"132":{},"133":{},"156":{},"198":{},"199":{},"222":{}},"component":{}}],["https://github.com/geerlingguy/ans",{"_index":2026,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["https://github.com/hashicorp/vagrant/issues/9143#issuecom",{"_index":594,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["https://github.com/jenkinsci/kubernet",{"_index":1983,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["https://github.com/mi",{"_index":2638,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["https://github.com/opendevstack/.git",{"_index":2140,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["https://github.com/opendevstack/od",{"_index":268,"title":{},"name":{},"text":{"2":{},"19":{},"24":{},"41":{},"55":{},"80":{},"94":{},"98":{},"100":{},"108":{},"124":{},"125":{},"127":{},"130":{},"133":{},"146":{},"148":{},"150":{},"154":{},"156":{},"169":{},"190":{},"191":{},"193":{},"196":{},"199":{},"212":{},"214":{},"216":{},"220":{},"222":{},"235":{},"256":{},"257":{}},"component":{}}],["https://github.com/opendevstack/tailor#templ",{"_index":2746,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["https://github.com/opendevstack/tailor/wiki/migr",{"_index":3138,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["https://github.com/watchexec/cargo",{"_index":3589,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["https://help.sonatype.com/repomanager3/rest",{"_index":2614,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["https://hub.docker.com/_/sonarqub",{"_index":3215,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["https://ionicframework.com",{"_index":3715,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["https://jcenter.bintray.com",{"_index":491,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://jenkins.io/doc/book/pipeline/syntax/#script",{"_index":1124,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["https://jupyter.org",{"_index":3617,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["https://maven.atlassian.com/content/repositories/atlassian",{"_index":489,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://openresty.org",{"_index":3510,"title":{},"name":{},"text":{"170":{},"236":{}},"component":{}}],["https://prettier.io/docs/en/install.html",{"_index":3654,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["https://prov",{"_index":526,"title":{},"name":{},"text":{"2":{},"5":{},"21":{},"41":{},"44":{},"57":{},"83":{},"101":{},"157":{},"223":{}},"component":{}}],["https://pypi.org",{"_index":501,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://raw.githubusercontent.com/opendevstack/od",{"_index":2047,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["https://registry.npmjs.org",{"_index":488,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://repo.scala",{"_index":496,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://sh.rustup.r",{"_index":3583,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["https://sonarqub",{"_index":371,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["https://start.spring.io",{"_index":3515,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["https://stedolan.github.io/jq",{"_index":2041,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["https://training.openshift.svc",{"_index":1744,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["https://webhook",{"_index":1978,"title":{},"name":{},"text":{"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["https://www.mongodb.com",{"_index":3733,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["https://www.npmjs.com/package/eslint#instal",{"_index":3651,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["https://www.opendevstack.org/od",{"_index":2353,"title":{},"name":{},"text":{"93":{},"142":{},"146":{},"147":{},"208":{},"212":{},"213":{}},"component":{}}],["https://www.relaxdiego.com/2018/02/jenkin",{"_index":1116,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["https://www.rstudio.com",{"_index":3620,"title":{},"name":{},"text":{"179":{},"245":{}},"component":{}}],["https://www.sonarlint.org/intellij/howto.html",{"_index":2364,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["huge",{"_index":2443,"title":{},"name":{},"text":{"95":{},"127":{},"128":{},"149":{},"193":{},"194":{},"215":{}},"component":{}}],["hugo",{"_index":935,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["hugowschneid",{"_index":1635,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["hyper",{"_index":3602,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["i.",{"_index":1509,"title":{},"name":{},"text":{"27":{},"62":{},"81":{},"111":{},"172":{},"174":{},"180":{},"238":{},"240":{},"246":{}},"component":{}}],["icon",{"_index":1888,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["icon.png",{"_index":1899,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["icontext",{"_index":2416,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["id",{"_index":143,"title":{"2-67":{},"41-67":{},"93-3":{},"101-5":{},"101-7":{},"147-3":{},"157-8":{},"157-10":{},"213-3":{},"223-8":{},"223-10":{}},"name":{},"text":{"2":{},"14":{},"20":{},"22":{},"32":{},"38":{},"41":{},"50":{},"56":{},"58":{},"68":{},"74":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"101":{},"112":{},"117":{},"126":{},"147":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"173":{},"181":{},"189":{},"192":{},"213":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"239":{},"240":{},"247":{},"255":{},"258":{}},"component":{}}],["id=od",{"_index":1226,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["id_rsa_bitbucket.pub",{"_index":407,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["idea",{"_index":691,"title":{"22-1":{},"58-1":{},"102-1":{}},"name":{},"text":{"6":{},"22":{},"45":{},"58":{},"102":{}},"component":{}}],["ideal",{"_index":1534,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"176":{},"242":{}},"component":{}}],["idempot",{"_index":2070,"title":{},"name":{},"text":{"77":{},"130":{},"142":{},"196":{},"208":{}},"component":{}}],["ident",{"_index":49,"title":{},"name":{},"text":{"1":{},"35":{},"40":{},"71":{},"76":{},"78":{},"83":{},"101":{},"109":{},"121":{},"129":{},"131":{},"157":{},"170":{},"184":{},"195":{},"197":{},"223":{},"236":{},"250":{}},"component":{}}],["identifi",{"_index":943,"title":{},"name":{},"text":{"14":{},"50":{},"83":{},"94":{},"96":{},"98":{},"99":{},"126":{},"136":{},"148":{},"151":{},"153":{},"154":{},"155":{},"181":{},"189":{},"192":{},"202":{},"214":{},"217":{},"219":{},"220":{},"221":{},"247":{},"255":{},"258":{}},"component":{}}],["idm=tru",{"_index":2957,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["idmanag",{"_index":1221,"title":{},"name":{},"text":{"20":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["idmanager.dis",{"_index":2955,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["idmanager.group.opendevstack",{"_index":1307,"title":{},"name":{},"text":{"22":{},"58":{},"157":{},"223":{}},"component":{}}],["idmanager.realm=${spring.security.oauth2.client.registration.azure.cli",{"_index":2954,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["idmanager.realm=provis",{"_index":1223,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["idmanager.url=http://192.168.56.32:8080",{"_index":1222,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["idmanager.url=https://login.microsoftonline.com",{"_index":2953,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["id}.git",{"_index":2649,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["ie",{"_index":1502,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["ignor",{"_index":599,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"151":{},"211":{},"217":{},"240":{}},"component":{}}],["ii",{"_index":1579,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["illustr",{"_index":1410,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["imag",{"_index":139,"title":{"10":{},"12":{},"25":{},"66":{},"115":{},"128":{},"177":{},"194":{},"243":{},"2-63":{},"2-68":{},"4-6":{},"13-3":{},"41-63":{},"41-68":{},"43-6":{},"49-3":{},"80-8":{},"80-13":{},"80-15":{},"84-2":{},"84-3":{},"84-4":{},"91-6":{},"92-1":{},"94-2":{},"94-4":{},"95-2":{},"95-6":{},"95-8":{},"95-9":{},"108-2":{},"128-1":{},"128-2":{},"128-3":{},"128-4":{},"128-5":{},"133-8":{},"133-13":{},"133-15":{},"145-6":{},"148-2":{},"148-4":{},"149-2":{},"149-6":{},"149-8":{},"149-9":{},"150-1":{},"169-2":{},"194-1":{},"194-2":{},"194-3":{},"194-4":{},"194-5":{},"199-8":{},"199-13":{},"199-15":{},"211-6":{},"214-2":{},"214-4":{},"215-2":{},"215-6":{},"215-8":{},"215-9":{},"216-1":{},"235-2":{}},"name":{"128":{},"194":{}},"text":{"2":{},"4":{},"5":{},"6":{},"12":{},"14":{},"18":{},"21":{},"24":{},"26":{},"27":{},"31":{},"32":{},"33":{},"39":{},"41":{},"43":{},"44":{},"45":{},"50":{},"54":{},"57":{},"60":{},"61":{},"62":{},"67":{},"68":{},"69":{},"75":{},"77":{},"79":{},"80":{},"83":{},"84":{},"85":{},"86":{},"91":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"113":{},"116":{},"117":{},"118":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"138":{},"139":{},"142":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"175":{},"178":{},"179":{},"189":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{},"208":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"241":{},"244":{},"245":{},"255":{}},"component":{}}],["image.openshift.io/v1",{"_index":3175,"title":{},"name":{},"text":{"133":{},"199":{}},"component":{}}],["imagelabel",{"_index":1103,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"96":{},"151":{},"217":{}},"component":{}}],["imagenamespace=exampl",{"_index":3314,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagenamespace=play",{"_index":3318,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagepromotionsequ",{"_index":2469,"title":{},"name":{},"text":{"96":{},"150":{},"216":{}},"component":{}}],["imagepullback",{"_index":585,"title":{"4-6":{},"43-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{},"component":{}}],["imagepullersecret",{"_index":3307,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagepullpolici",{"_index":2403,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["imageref",{"_index":3279,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["images/airflow",{"_index":1415,"title":{},"name":{},"text":{"24":{}},"component":{}}],["images/nginx",{"_index":870,"title":{},"name":{},"text":{"12":{}},"component":{}}],["images/openresti",{"_index":832,"title":{},"name":{},"text":{"11":{}},"component":{}}],["images\\nginx",{"_index":555,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["imagestream",{"_index":742,"title":{},"name":{},"text":{"6":{},"8":{},"39":{},"45":{},"75":{},"80":{},"96":{},"99":{},"100":{},"128":{},"133":{},"150":{},"151":{},"155":{},"156":{},"194":{},"199":{},"216":{},"217":{},"221":{},"222":{}},"component":{}}],["imagestreamtag",{"_index":2194,"title":{},"name":{},"text":{"80":{},"95":{},"96":{},"99":{},"108":{},"133":{},"149":{},"150":{},"151":{},"155":{},"169":{},"199":{},"215":{},"216":{},"217":{},"221":{},"235":{}},"component":{}}],["imagetag",{"_index":2569,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["imagetag=deadbeef69cafebab",{"_index":3315,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["imagetrigg",{"_index":2603,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["imagin",{"_index":2894,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["img",{"_index":1567,"title":{},"name":{},"text":{"29":{},"38":{},"63":{},"74":{}},"component":{}}],["immedi",{"_index":3193,"title":{},"name":{},"text":{"136":{},"158":{},"202":{},"224":{}},"component":{}}],["impact",{"_index":1398,"title":{},"name":{},"text":{"23":{},"59":{},"98":{},"128":{},"154":{},"194":{},"220":{}},"component":{}}],["implement",{"_index":835,"title":{"19-4":{},"55-4":{},"100-5":{},"156-5":{},"222-5":{}},"name":{},"text":{"11":{},"14":{},"19":{},"20":{},"27":{},"30":{},"32":{},"36":{},"37":{},"50":{},"55":{},"56":{},"62":{},"64":{},"68":{},"72":{},"73":{},"81":{},"83":{},"96":{},"97":{},"100":{},"101":{},"108":{},"109":{},"111":{},"117":{},"122":{},"136":{},"151":{},"152":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"185":{},"202":{},"217":{},"218":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"251":{}},"component":{}}],["impli",{"_index":3407,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["implic",{"_index":851,"title":{},"name":{},"text":{"11":{},"32":{},"68":{},"117":{}},"component":{}}],["implicit",{"_index":2298,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["import",{"_index":165,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"47":{},"68":{},"79":{},"81":{},"88":{},"96":{},"109":{},"117":{},"128":{},"132":{},"141":{},"150":{},"151":{},"154":{},"170":{},"181":{},"194":{},"198":{},"207":{},"216":{},"217":{},"220":{},"236":{},"247":{}},"component":{}}],["impos",{"_index":960,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["improv",{"_index":2312,"title":{},"name":{},"text":{"83":{},"136":{},"174":{},"202":{},"240":{}},"component":{}}],["includ",{"_index":15,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"16":{},"20":{},"22":{},"27":{},"28":{},"32":{},"40":{},"41":{},"45":{},"50":{},"52":{},"56":{},"58":{},"62":{},"65":{},"68":{},"87":{},"95":{},"96":{},"98":{},"101":{},"107":{},"111":{},"117":{},"120":{},"121":{},"123":{},"126":{},"128":{},"136":{},"140":{},"149":{},"151":{},"153":{},"154":{},"157":{},"168":{},"172":{},"173":{},"183":{},"184":{},"186":{},"187":{},"188":{},"189":{},"192":{},"194":{},"202":{},"206":{},"215":{},"217":{},"219":{},"220":{},"223":{},"227":{},"234":{},"238":{},"239":{},"249":{},"250":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["include::partial$secret",{"_index":3511,"title":{},"name":{},"text":{"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{}},"component":{}}],["include::partials$secret",{"_index":3755,"title":{},"name":{},"text":{"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["inclus",{"_index":3120,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["incom",{"_index":3014,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["incomplet",{"_index":2871,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["inconsist",{"_index":1385,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["incorrect",{"_index":2743,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["increas",{"_index":2587,"title":{},"name":{},"text":{"96":{},"112":{},"151":{},"154":{},"173":{},"180":{},"217":{},"220":{},"239":{},"246":{}},"component":{}}],["increment",{"_index":382,"title":{},"name":{},"text":{"2":{},"41":{},"83":{},"136":{},"202":{}},"component":{}}],["inde",{"_index":3796,"title":{},"name":{},"text":{"240":{}},"component":{}}],["independ",{"_index":2658,"title":{"178-5":{},"244-5":{}},"name":{},"text":{"98":{},"126":{},"154":{},"178":{},"192":{},"220":{},"244":{},"258":{}},"component":{}}],["index",{"_index":631,"title":{},"name":{"5":{},"6":{},"9":{},"10":{},"13":{},"14":{},"22":{},"39":{},"44":{},"45":{},"48":{},"49":{},"50":{},"58":{},"75":{},"83":{},"86":{},"89":{},"93":{},"97":{},"102":{},"123":{},"136":{},"139":{},"143":{},"147":{},"152":{},"158":{},"186":{},"202":{},"205":{},"209":{},"213":{},"218":{},"224":{},"252":{}},"text":{"28":{},"65":{},"79":{},"132":{},"198":{}},"component":{}}],["index.html",{"_index":1807,"title":{},"name":{},"text":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["index.j",{"_index":1762,"title":{},"name":{},"text":{"34":{},"37":{},"38":{},"70":{},"73":{},"74":{},"119":{},"181":{}},"component":{}}],["index.scala.html",{"_index":3047,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["index.t",{"_index":1540,"title":{},"name":{},"text":{"28":{},"34":{},"65":{},"70":{},"114":{},"119":{},"176":{},"181":{},"242":{},"247":{}},"component":{}}],["indic",{"_index":3287,"title":{},"name":{},"text":{"151":{},"153":{},"172":{},"181":{},"217":{},"219":{},"238":{},"247":{}},"component":{}}],["individu",{"_index":25,"title":{},"name":{},"text":{"1":{},"14":{},"40":{},"50":{},"76":{},"96":{},"129":{},"137":{},"142":{},"146":{},"180":{},"195":{},"203":{},"208":{},"212":{},"246":{}},"component":{}}],["industri",{"_index":1630,"title":{"32":{},"68":{},"117":{}},"name":{},"text":{},"component":{}}],["inf",{"_index":3416,"title":{"187":{},"188":{},"253":{},"254":{}},"name":{"160":{},"187":{},"188":{},"226":{},"253":{},"254":{}},"text":{"154":{},"220":{}},"component":{}}],["influenc",{"_index":991,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["info",{"_index":1241,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["inform",{"_index":357,"title":{"80-23":{},"133-23":{},"199-23":{}},"name":{},"text":{"2":{},"21":{},"32":{},"41":{},"57":{},"68":{},"77":{},"93":{},"94":{},"96":{},"98":{},"102":{},"108":{},"117":{},"127":{},"130":{},"147":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"158":{},"166":{},"167":{},"169":{},"173":{},"181":{},"189":{},"193":{},"196":{},"213":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"224":{},"232":{},"233":{},"235":{},"239":{},"247":{},"255":{}},"component":{}}],["infra",{"_index":3413,"title":{"154-5":{},"220-5":{}},"name":{},"text":{"153":{},"154":{},"189":{},"219":{},"220":{},"255":{}},"component":{}}],["infrastructur",{"_index":2,"title":{"1":{},"40":{},"76":{},"129":{},"187":{},"188":{},"195":{},"253":{},"254":{},"2-11":{},"41-11":{},"77-6":{},"186-7":{},"252-7":{}},"name":{"1":{},"40":{},"76":{},"129":{},"195":{}},"text":{"1":{},"2":{},"5":{},"27":{},"32":{},"40":{},"41":{},"44":{},"62":{},"68":{},"76":{},"83":{},"96":{},"111":{},"117":{},"129":{},"151":{},"154":{},"157":{},"172":{},"186":{},"195":{},"217":{},"220":{},"223":{},"238":{},"252":{}},"component":{}}],["infrastrucur",{"_index":761,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["inherit",{"_index":1320,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["init",{"_index":687,"title":{"6-3":{},"45-3":{},"87-2":{},"140-2":{},"206-2":{}},"name":{},"text":{"26":{},"27":{},"32":{},"61":{},"62":{},"68":{},"77":{},"99":{},"110":{},"111":{},"114":{},"117":{},"155":{},"171":{},"176":{},"221":{},"237":{},"242":{}},"component":{}}],["init.sh",{"_index":1487,"title":{},"name":{},"text":{"27":{},"29":{},"31":{},"34":{},"39":{},"62":{},"63":{},"70":{},"75":{},"111":{},"119":{}},"component":{}}],["initi",{"_index":663,"title":{},"name":{},"text":{"5":{},"6":{},"29":{},"32":{},"44":{},"45":{},"63":{},"68":{},"77":{},"83":{},"87":{},"96":{},"112":{},"117":{},"130":{},"136":{},"140":{},"151":{},"173":{},"180":{},"196":{},"202":{},"206":{},"217":{},"239":{},"246":{}},"component":{}}],["initialdelaysecond",{"_index":2606,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["inject",{"_index":758,"title":{},"name":{},"text":{"7":{},"19":{},"31":{},"46":{},"55":{},"100":{},"107":{},"156":{},"168":{},"187":{},"188":{},"222":{},"234":{},"253":{},"254":{}},"component":{}}],["inlcud",{"_index":212,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["input",{"_index":360,"title":{},"name":{},"text":{"2":{},"22":{},"32":{},"41":{},"58":{},"68":{},"98":{},"100":{},"101":{},"117":{},"154":{},"156":{},"157":{},"220":{},"222":{},"223":{}},"component":{}}],["insatl",{"_index":1934,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["insecur",{"_index":2841,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["insert",{"_index":72,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["insid",{"_index":553,"title":{},"name":{},"text":{"2":{},"12":{},"14":{},"20":{},"24":{},"34":{},"41":{},"50":{},"56":{},"60":{},"70":{},"78":{},"92":{},"96":{},"98":{},"99":{},"101":{},"109":{},"119":{},"120":{},"126":{},"131":{},"146":{},"151":{},"154":{},"155":{},"157":{},"170":{},"183":{},"192":{},"197":{},"212":{},"217":{},"220":{},"221":{},"223":{},"236":{},"249":{},"258":{}},"component":{}}],["insight",{"_index":3280,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["insofar",{"_index":2402,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["inspec",{"_index":3718,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["inspecif",{"_index":3157,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["inspect",{"_index":892,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"213":{}},"component":{}}],["instal",{"_index":10,"title":{"2-16":{},"41-16":{},"80-2":{},"80-19":{},"127-3":{},"133-2":{},"133-19":{},"161-4":{},"181-6":{},"193-3":{},"199-2":{},"199-19":{},"227-4":{},"234-4":{},"247-6":{}},"name":{"2":{},"41":{},"77":{},"130":{},"196":{}},"text":{"1":{},"2":{},"4":{},"13":{},"19":{},"20":{},"24":{},"27":{},"28":{},"29":{},"31":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"40":{},"41":{},"43":{},"49":{},"55":{},"56":{},"60":{},"62":{},"63":{},"65":{},"67":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"85":{},"91":{},"92":{},"94":{},"95":{},"98":{},"100":{},"101":{},"105":{},"109":{},"111":{},"112":{},"114":{},"116":{},"117":{},"119":{},"120":{},"121":{},"122":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"137":{},"138":{},"142":{},"145":{},"146":{},"148":{},"149":{},"151":{},"154":{},"156":{},"157":{},"161":{},"162":{},"163":{},"164":{},"165":{},"170":{},"172":{},"173":{},"174":{},"176":{},"178":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{},"208":{},"211":{},"212":{},"214":{},"215":{},"217":{},"220":{},"222":{},"223":{},"227":{},"228":{},"229":{},"230":{},"231":{},"234":{},"236":{},"238":{},"239":{},"240":{},"242":{},"244":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"254":{}},"component":{}}],["installation.config.t",{"_index":3814,"title":{},"name":{},"text":{"247":{}},"component":{}}],["installation.json",{"_index":3645,"title":{},"name":{},"text":{"181":{}},"component":{}}],["installation.spec.cy.t",{"_index":3811,"title":{},"name":{},"text":{"247":{}},"component":{}}],["installation.spec.t",{"_index":3642,"title":{},"name":{},"text":{"181":{}},"component":{}}],["installation/upd",{"_index":3136,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["instanc",{"_index":391,"title":{"13-4":{},"49-4":{},"80-16":{},"133-16":{},"199-16":{}},"name":{},"text":{"2":{},"6":{},"7":{},"8":{},"13":{},"21":{},"24":{},"34":{},"41":{},"45":{},"46":{},"47":{},"49":{},"57":{},"60":{},"67":{},"69":{},"70":{},"77":{},"79":{},"80":{},"81":{},"88":{},"92":{},"93":{},"95":{},"96":{},"102":{},"116":{},"118":{},"119":{},"123":{},"128":{},"130":{},"132":{},"133":{},"136":{},"141":{},"142":{},"146":{},"147":{},"149":{},"151":{},"153":{},"158":{},"178":{},"179":{},"185":{},"186":{},"189":{},"194":{},"196":{},"198":{},"199":{},"202":{},"207":{},"208":{},"212":{},"213":{},"215":{},"217":{},"219":{},"224":{},"244":{},"245":{},"251":{},"252":{},"255":{}},"component":{}}],["instanti",{"_index":3188,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["instead",{"_index":517,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"76":{},"78":{},"80":{},"83":{},"94":{},"95":{},"96":{},"98":{},"100":{},"126":{},"127":{},"129":{},"131":{},"133":{},"136":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"172":{},"174":{},"181":{},"192":{},"193":{},"195":{},"197":{},"199":{},"202":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"238":{},"240":{},"247":{},"258":{}},"component":{}}],["instruct",{"_index":253,"title":{},"name":{},"text":{"2":{},"13":{},"41":{},"49":{},"77":{},"79":{},"80":{},"98":{},"101":{},"128":{},"130":{},"132":{},"133":{},"154":{},"157":{},"172":{},"181":{},"182":{},"194":{},"196":{},"198":{},"199":{},"220":{},"223":{},"238":{},"247":{},"248":{}},"component":{}}],["int",{"_index":2538,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["integ",{"_index":3305,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["integr",{"_index":104,"title":{"2-21":{},"5-5":{},"22-2":{},"27-9":{},"41-21":{},"44-5":{},"58-2":{},"62-9":{},"111-9":{},"172-9":{},"238-9":{}},"name":{},"text":{"2":{},"5":{},"12":{},"22":{},"24":{},"27":{},"29":{},"30":{},"32":{},"34":{},"39":{},"41":{},"44":{},"58":{},"60":{},"62":{},"63":{},"64":{},"68":{},"70":{},"75":{},"80":{},"83":{},"93":{},"96":{},"100":{},"109":{},"111":{},"112":{},"117":{},"119":{},"120":{},"123":{},"127":{},"133":{},"136":{},"147":{},"151":{},"153":{},"156":{},"160":{},"170":{},"172":{},"173":{},"174":{},"181":{},"183":{},"186":{},"187":{},"188":{},"189":{},"193":{},"199":{},"202":{},"213":{},"217":{},"219":{},"222":{},"226":{},"236":{},"238":{},"239":{},"240":{},"247":{},"249":{},"252":{},"253":{},"254":{},"255":{}},"component":{}}],["integration.config.t",{"_index":3815,"title":{},"name":{},"text":{"247":{}},"component":{}}],["integration.json",{"_index":3646,"title":{},"name":{},"text":{"181":{}},"component":{}}],["integration.spec.cy.t",{"_index":3812,"title":{},"name":{},"text":{"247":{}},"component":{}}],["integration.spec.t",{"_index":3643,"title":{},"name":{},"text":{"181":{}},"component":{}}],["integration/default/control",{"_index":3720,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["intellij",{"_index":2357,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["intend",{"_index":1200,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"153":{},"156":{},"181":{},"182":{},"219":{},"222":{},"247":{},"248":{}},"component":{}}],["intent",{"_index":3348,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["intention",{"_index":2447,"title":{},"name":{},"text":{"95":{},"98":{},"149":{},"154":{},"215":{},"220":{}},"component":{}}],["interact",{"_index":1137,"title":{"96-10":{},"151-10":{},"217-10":{}},"name":{},"text":{"19":{},"55":{},"96":{},"100":{},"138":{},"151":{},"156":{},"178":{},"179":{},"204":{},"217":{},"222":{},"244":{},"245":{}},"component":{}}],["interest",{"_index":2114,"title":{},"name":{},"text":{"79":{},"128":{},"132":{},"194":{},"198":{}},"component":{}}],["interfac",{"_index":1310,"title":{},"name":{},"text":{"22":{},"24":{},"41":{},"58":{},"60":{},"83":{},"97":{},"98":{},"136":{},"152":{},"154":{},"202":{},"218":{},"220":{}},"component":{}}],["intermedi",{"_index":1797,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["intern",{"_index":98,"title":{"19":{},"55":{},"100":{},"156":{},"222":{},"2-19":{},"41-19":{}},"name":{},"text":{"2":{},"22":{},"24":{},"27":{},"41":{},"58":{},"60":{},"62":{},"96":{},"98":{},"100":{},"102":{},"111":{},"123":{},"151":{},"154":{},"156":{},"172":{},"186":{},"217":{},"220":{},"222":{},"238":{},"252":{}},"component":{}}],["internet",{"_index":182,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"117":{}},"component":{}}],["interpret",{"_index":1679,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["interrupt",{"_index":2870,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["introduc",{"_index":644,"title":{},"name":{},"text":{"5":{},"23":{},"44":{},"59":{},"83":{},"136":{},"150":{},"202":{},"216":{}},"component":{}}],["introduct",{"_index":78,"title":{"5":{},"44":{},"83":{},"136":{},"202":{},"2-1":{},"7-1":{},"41-1":{},"46-1":{},"103-1":{},"104-1":{},"105-1":{},"106-1":{},"107-1":{},"159-1":{},"160-1":{},"161-1":{},"162-1":{},"163-1":{},"164-1":{},"165-1":{},"166-1":{},"167-1":{},"168-1":{},"225-1":{},"226-1":{},"227-1":{},"228-1":{},"229-1":{},"230-1":{},"231-1":{},"232-1":{},"233-1":{},"234-1":{}},"name":{},"text":{},"component":{}}],["invalid",{"_index":1452,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["invidunt",{"_index":804,"title":{},"name":{},"text":{"10":{}},"component":{}}],["invok",{"_index":1377,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["involv",{"_index":1311,"title":{},"name":{},"text":{"22":{},"58":{},"98":{},"154":{},"220":{}},"component":{}}],["io",{"_index":1822,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["iodsauthnzadapt",{"_index":1274,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["ionic",{"_index":1819,"title":{"36":{},"72":{},"122":{},"185":{},"251":{}},"name":{"36":{},"72":{},"122":{},"185":{},"251":{}},"text":{"36":{},"39":{},"72":{},"75":{},"95":{},"122":{},"123":{},"136":{},"149":{},"185":{},"186":{},"202":{},"215":{},"251":{},"252":{}},"component":{}}],["ionic.config.json",{"_index":1844,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["ionic/cli",{"_index":3712,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["ionic:build",{"_index":1850,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["iot",{"_index":3554,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["ip",{"_index":74,"title":{},"name":{},"text":{"1":{},"2":{},"32":{},"40":{},"41":{},"68":{},"76":{},"117":{},"129":{},"195":{}},"component":{}}],["ipsum",{"_index":792,"title":{},"name":{},"text":{"10":{}},"component":{}}],["ipykernel",{"_index":3615,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["ipython",{"_index":3612,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["iri",{"_index":1710,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["is.yml",{"_index":2189,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["isn’t",{"_index":522,"title":{"136-2":{},"202-2":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["isol",{"_index":2679,"title":{},"name":{},"text":{"98":{},"154":{},"220":{},"240":{}},"component":{}}],["issu",{"_index":586,"title":{"4-7":{},"43-7":{},"91-7":{},"94-14":{},"145-7":{},"148-14":{},"211-7":{},"214-14":{}},"name":{},"text":{"11":{},"14":{},"29":{},"32":{},"50":{},"63":{},"68":{},"80":{},"82":{},"94":{},"95":{},"96":{},"98":{},"99":{},"112":{},"117":{},"133":{},"135":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"173":{},"199":{},"201":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"239":{},"240":{}},"component":{}}],["issueid",{"_index":2438,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["it'",{"_index":2939,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["item",{"_index":640,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"153":{},"154":{},"174":{},"219":{},"220":{},"240":{}},"component":{}}],["iter",{"_index":3245,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["itself",{"_index":2586,"title":{},"name":{},"text":{"96":{},"98":{},"99":{},"108":{},"127":{},"150":{},"154":{},"155":{},"169":{},"193":{},"216":{},"220":{},"221":{},"235":{}},"component":{}}],["it’",{"_index":233,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["ivi",{"_index":495,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["j11.sh",{"_index":3470,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["j17.sh",{"_index":3464,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["j21.sh",{"_index":3465,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["jackson",{"_index":1197,"title":{},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["januari",{"_index":1714,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["jar",{"_index":1523,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"136":{},"172":{},"202":{},"238":{}},"component":{}}],["java",{"_index":728,"title":{"27":{},"62":{},"111":{},"172":{},"238":{},"19-5":{},"55-5":{},"100-6":{},"156-6":{},"161-3":{},"172-14":{},"222-6":{},"227-3":{},"234-3":{},"238-14":{}},"name":{"27":{},"62":{},"111":{},"172":{},"238":{}},"text":{"6":{},"19":{},"27":{},"45":{},"55":{},"62":{},"81":{},"85":{},"100":{},"101":{},"104":{},"111":{},"115":{},"120":{},"123":{},"136":{},"138":{},"156":{},"157":{},"161":{},"172":{},"177":{},"183":{},"186":{},"202":{},"204":{},"222":{},"223":{},"227":{},"234":{},"238":{},"243":{},"249":{},"252":{}},"component":{}}],["java/springboot",{"_index":3123,"title":{},"name":{},"text":{"123":{},"186":{},"252":{}},"component":{}}],["javascript",{"_index":1781,"title":{},"name":{},"text":{"34":{},"70":{},"113":{},"119":{},"175":{},"241":{}},"component":{}}],["javascript/typescript",{"_index":1825,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["javaversion.version_21",{"_index":3524,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["jcenter",{"_index":490,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdbc",{"_index":298,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdbc:postgresql://localhost:5432/conflu",{"_index":433,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdbc:postgresql://localhost:5432/crowd?rewritebatchedinserts=true&preparethreshold=0",{"_index":303,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["jdk",{"_index":538,"title":{"161":{},"227":{}},"name":{"161":{},"227":{}},"text":{"2":{},"41":{},"161":{},"172":{},"183":{},"227":{},"234":{},"238":{},"249":{}},"component":{}}],["jenin",{"_index":2216,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenk",{"_index":692,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["jenkin",{"_index":136,"title":{"6":{},"7":{},"8":{},"14":{},"45":{},"46":{},"47":{},"50":{},"84":{},"85":{},"86":{},"87":{},"88":{},"97":{},"103":{},"104":{},"105":{},"106":{},"107":{},"137":{},"138":{},"139":{},"140":{},"141":{},"152":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"203":{},"204":{},"205":{},"206":{},"207":{},"218":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"2-63":{},"4-6":{},"6-1":{},"6-5":{},"25-5":{},"26-5":{},"27-11":{},"28-5":{},"29-5":{},"30-5":{},"31-5":{},"32-3":{},"32-18":{},"33-5":{},"34-5":{},"35-5":{},"36-5":{},"37-5":{},"38-5":{},"41-63":{},"43-6":{},"45-1":{},"45-5":{},"61-5":{},"62-11":{},"63-5":{},"64-5":{},"65-5":{},"66-5":{},"67-5":{},"68-3":{},"68-18":{},"69-5":{},"70-5":{},"71-5":{},"72-5":{},"73-5":{},"74-5":{},"77-14":{},"80-25":{},"80-26":{},"84-1":{},"84-2":{},"84-3":{},"84-4":{},"91-6":{},"93-2":{},"94-2":{},"94-8":{},"95-2":{},"95-3":{},"95-9":{},"95-11":{},"108-2":{},"109-8":{},"110-5":{},"111-11":{},"112-5":{},"113-5":{},"114-7":{},"115-5":{},"116-5":{},"117-3":{},"117-18":{},"118-5":{},"119-5":{},"120-9":{},"121-5":{},"122-5":{},"124-5":{},"125-5":{},"130-12":{},"133-25":{},"133-26":{},"137-1":{},"145-6":{},"147-2":{},"148-2":{},"148-8":{},"149-2":{},"149-3":{},"149-9":{},"149-11":{},"150-1":{},"150-2":{},"169-2":{},"170-9":{},"171-6":{},"172-12":{},"173-6":{},"174-6":{},"175-6":{},"176-8":{},"177-6":{},"178-7":{},"179-6":{},"180-6":{},"181-5":{},"183-9":{},"184-6":{},"185-6":{},"187-5":{},"188-5":{},"190-5":{},"191-5":{},"196-12":{},"199-25":{},"199-26":{},"203-1":{},"211-6":{},"213-2":{},"214-2":{},"214-8":{},"215-2":{},"215-3":{},"215-9":{},"215-11":{},"216-1":{},"216-2":{},"235-2":{},"236-9":{},"237-6":{},"238-12":{},"239-6":{},"240-6":{},"241-6":{},"242-8":{},"243-6":{},"244-7":{},"245-6":{},"246-6":{},"247-5":{},"249-9":{},"250-6":{},"251-6":{},"253-5":{},"254-5":{},"256-5":{},"257-5":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"7":{},"8":{},"13":{},"14":{},"16":{},"21":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"52":{},"57":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"145":{},"146":{},"148":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"190":{},"191":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"211":{},"212":{},"214":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"256":{},"257":{}},"component":{}}],["jenkinfil",{"_index":3525,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["jenkins/run.sh",{"_index":2983,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["jenkins@example.com",{"_index":2504,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["jenkins_agent_base_from_imag",{"_index":2104,"title":{},"name":{},"text":{"79":{},"132":{},"137":{},"198":{},"203":{}},"component":{}}],["jenkins_agent_base_imag",{"_index":2100,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["jenkins_master_base_from_imag",{"_index":2099,"title":{},"name":{},"text":{"79":{},"132":{},"137":{},"198":{},"203":{}},"component":{}}],["jenkinsfil",{"_index":686,"title":{"27-9":{},"62-9":{},"94-3":{},"111-9":{},"148-3":{},"172-9":{},"214-3":{},"238-9":{}},"name":{},"text":{"5":{},"8":{},"14":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"44":{},"47":{},"50":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"80":{},"87":{},"88":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"101":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"133":{},"136":{},"140":{},"141":{},"148":{},"149":{},"151":{},"152":{},"154":{},"155":{},"157":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"192":{},"199":{},"202":{},"206":{},"207":{},"214":{},"215":{},"217":{},"218":{},"220":{},"221":{},"223":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"258":{}},"component":{}}],["jenkinsfile.templ",{"_index":2455,"title":{},"name":{},"text":{"95":{},"99":{},"108":{},"120":{},"149":{},"155":{},"169":{},"183":{},"215":{},"221":{},"235":{},"249":{}},"component":{}}],["jenkinsfile_path",{"_index":787,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["jenkinsfile`",{"_index":2436,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["jenkinsfilepath",{"_index":2186,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenkinspipelin",{"_index":2187,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenkinspipeline.[som",{"_index":2904,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.cr",{"_index":2911,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.quickstart",{"_index":2165,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jenkinspipeline.quickstarter..desc",{"_index":2898,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.quickstarter..repo",{"_index":2899,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipeline.quickstarter.b",{"_index":2900,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jenkinspipelinestrategi",{"_index":2185,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jest",{"_index":3073,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["jira",{"_index":54,"title":{"2-35":{},"41-35":{},"98-16":{},"101-8":{},"154-19":{},"157-11":{},"220-19":{},"223-11":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"19":{},"20":{},"22":{},"40":{},"41":{},"42":{},"45":{},"55":{},"56":{},"58":{},"76":{},"83":{},"90":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"126":{},"129":{},"130":{},"136":{},"144":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"158":{},"192":{},"195":{},"196":{},"202":{},"210":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"224":{},"258":{}},"component":{}}],["jira.admin_password=jira_admin",{"_index":1269,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.admin_user=jira_admin",{"_index":1270,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project",{"_index":2916,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.add",{"_index":2927,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.key.=com.pyxis.greenhopper.jira:gh",{"_index":1341,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.key=com.pyxis.greenhopper.jira:gh",{"_index":1335,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.type.=softwar",{"_index":1342,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.type=softwar",{"_index":1337,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["jira.project.template.webhook",{"_index":2929,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["jira.yml",{"_index":53,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["jira_enable_sso.yml",{"_index":55,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["jiraconfluencespac",{"_index":1373,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["jmod",{"_index":3475,"title":{},"name":{},"text":{"161":{}},"component":{}}],["jnlp",{"_index":1982,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["job",{"_index":519,"title":{},"name":{},"text":{"2":{},"21":{},"22":{},"39":{},"41":{},"57":{},"58":{},"75":{},"80":{},"83":{},"101":{},"102":{},"128":{},"133":{},"136":{},"157":{},"158":{},"194":{},"199":{},"202":{},"223":{},"224":{}},"component":{}}],["job_nam",{"_index":995,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["jobnam",{"_index":994,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["jobs/${job.group}${job.name}.${config.format",{"_index":524,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["journey",{"_index":629,"title":{"5-3":{},"44-3":{},"83-6":{},"136-5":{},"202-5":{}},"name":{},"text":{},"component":{}}],["jpa,h2,lombok,data",{"_index":1511,"title":{},"name":{},"text":{"27":{},"62":{},"111":{}},"component":{}}],["jpa,h2,security,devtool",{"_index":3520,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["jq",{"_index":2039,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["jqueri",{"_index":1159,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["jre",{"_index":3406,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["js",{"_index":1789,"title":{},"name":{},"text":{"35":{},"37":{},"71":{},"73":{},"121":{},"184":{},"250":{}},"component":{}}],["jsession",{"_index":1366,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["jsession_id=$(cat",{"_index":1365,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["json",{"_index":1201,"title":{"80-26":{},"133-26":{},"199-26":{}},"name":{},"text":{"19":{},"32":{},"55":{},"68":{},"80":{},"100":{},"109":{},"114":{},"117":{},"133":{},"156":{},"170":{},"176":{},"199":{},"222":{},"236":{},"240":{},"242":{}},"component":{}}],["jsonpatch",{"_index":2221,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["jsonpoint",{"_index":1248,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["jsonschema2pojo",{"_index":1199,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["jsonsupport.scala",{"_index":1603,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["june",{"_index":2280,"title":{"83-13":{},"136-13":{},"202-13":{}},"name":{},"text":{},"component":{}}],["junit",{"_index":1169,"title":{},"name":{},"text":{"19":{},"55":{},"98":{},"100":{},"108":{},"114":{},"115":{},"120":{},"154":{},"156":{},"169":{},"176":{},"177":{},"183":{},"220":{},"222":{},"235":{},"242":{},"243":{},"249":{}},"component":{}}],["junit:1.28",{"_index":2318,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["junit_family=xunit2",{"_index":3532,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["junitxml=tests.xml",{"_index":3039,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["jupyt",{"_index":1610,"title":{"31":{},"67":{},"116":{},"178":{},"244":{},"150-11":{},"216-11":{}},"name":{"31":{},"67":{},"116":{},"178":{},"244":{}},"text":{"31":{},"39":{},"67":{},"75":{},"94":{},"95":{},"116":{},"123":{},"136":{},"148":{},"149":{},"150":{},"178":{},"186":{},"202":{},"214":{},"215":{},"216":{},"244":{},"252":{}},"component":{}}],["jupyter_lab_config.json",{"_index":3611,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["jupyter_notebook_config.json",{"_index":1616,"title":{},"name":{},"text":{"31":{},"67":{},"116":{}},"component":{}}],["jupyterlab",{"_index":3260,"title":{},"name":{},"text":{"150":{},"178":{},"216":{},"244":{}},"component":{}}],["justo",{"_index":815,"title":{},"name":{},"text":{"10":{}},"component":{}}],["k",{"_index":1350,"title":{},"name":{},"text":{"22":{},"32":{},"58":{},"68":{},"117":{}},"component":{}}],["k8",{"_index":3562,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["karma.conf.j",{"_index":1794,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["kasd",{"_index":821,"title":{},"name":{},"text":{"10":{}},"component":{}}],["keep",{"_index":200,"title":{},"name":{},"text":{"2":{},"14":{},"32":{},"34":{},"41":{},"50":{},"68":{},"70":{},"77":{},"79":{},"83":{},"96":{},"98":{},"117":{},"119":{},"130":{},"132":{},"136":{},"142":{},"151":{},"154":{},"196":{},"198":{},"202":{},"208":{},"217":{},"220":{}},"component":{}}],["kept",{"_index":2391,"title":{},"name":{},"text":{"94":{},"95":{},"96":{},"148":{},"149":{},"151":{},"214":{},"215":{},"217":{}},"component":{}}],["kernel",{"_index":3613,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["kernelspec",{"_index":3616,"title":{},"name":{},"text":{"178":{},"244":{}},"component":{}}],["key",{"_index":92,"title":{"2-15":{},"2-34":{},"2-38":{},"2-49":{},"41-15":{},"41-34":{},"41-38":{},"41-49":{}},"name":{},"text":{"2":{},"22":{},"24":{},"41":{},"58":{},"60":{},"80":{},"93":{},"96":{},"98":{},"100":{},"101":{},"102":{},"133":{},"147":{},"150":{},"151":{},"154":{},"156":{},"157":{},"181":{},"189":{},"199":{},"213":{},"216":{},"217":{},"220":{},"222":{},"223":{},"247":{},"255":{}},"component":{}}],["key/valu",{"_index":3340,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["key1",{"_index":3288,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["key2",{"_index":3289,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["key=id",{"_index":2949,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["keycloak",{"_index":1246,"title":{"78":{},"131":{},"197":{}},"name":{"78":{},"131":{},"197":{}},"text":{"20":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["keypair",{"_index":2501,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["keystor",{"_index":537,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["kibana",{"_index":1428,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["kick",{"_index":2590,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["kind",{"_index":1515,"title":{},"name":{},"text":{"27":{},"32":{},"62":{},"68":{},"80":{},"96":{},"111":{},"117":{},"133":{},"151":{},"172":{},"199":{},"217":{},"238":{}},"component":{}}],["kitchen",{"_index":3459,"title":{},"name":{},"text":{"160":{},"182":{},"187":{},"188":{},"226":{},"248":{},"253":{},"254":{}},"component":{}}],["knob",{"_index":1321,"title":{},"name":{},"text":{"22":{},"58":{},"98":{},"101":{},"154":{},"157":{},"220":{},"223":{}},"component":{}}],["know",{"_index":242,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"154":{},"173":{},"174":{},"180":{},"182":{},"187":{},"188":{},"220":{},"239":{},"240":{},"246":{},"248":{},"253":{},"254":{}},"component":{}}],["knowledg",{"_index":2672,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["known",{"_index":1255,"title":{"25-7":{},"26-7":{},"27-13":{},"28-7":{},"29-7":{},"30-7":{},"31-7":{},"32-21":{},"33-7":{},"34-7":{},"35-7":{},"36-7":{},"38-7":{},"61-7":{},"62-13":{},"63-7":{},"64-7":{},"65-7":{},"66-7":{},"67-7":{},"68-21":{},"69-7":{},"70-7":{},"71-7":{},"72-7":{},"74-7":{},"94-14":{},"98-25":{},"103-3":{},"104-3":{},"105-3":{},"106-3":{},"107-3":{},"109-10":{},"110-7":{},"111-13":{},"112-7":{},"113-7":{},"114-9":{},"115-7":{},"116-7":{},"117-21":{},"118-7":{},"119-7":{},"120-11":{},"121-7":{},"122-7":{},"124-7":{},"125-7":{},"148-14":{},"154-30":{},"159-3":{},"160-3":{},"161-5":{},"162-3":{},"163-3":{},"164-3":{},"165-3":{},"166-3":{},"167-3":{},"168-3":{},"170-11":{},"171-8":{},"172-15":{},"173-9":{},"174-9":{},"175-8":{},"176-10":{},"177-8":{},"178-9":{},"179-8":{},"180-8":{},"181-9":{},"182-6":{},"183-11":{},"184-8":{},"185-8":{},"187-7":{},"188-7":{},"190-7":{},"191-7":{},"214-14":{},"220-30":{},"225-3":{},"226-3":{},"227-5":{},"228-3":{},"229-3":{},"230-3":{},"231-3":{},"232-3":{},"233-3":{},"234-5":{},"236-11":{},"237-8":{},"238-15":{},"239-9":{},"240-9":{},"241-8":{},"242-10":{},"243-8":{},"244-9":{},"245-8":{},"246-8":{},"247-9":{},"248-6":{},"249-11":{},"250-8":{},"251-8":{},"253-7":{},"254-7":{},"256-7":{},"257-7":{}},"name":{},"text":{"20":{},"56":{},"94":{},"98":{},"101":{},"115":{},"148":{},"150":{},"154":{},"157":{},"177":{},"189":{},"214":{},"216":{},"220":{},"223":{},"240":{},"243":{},"255":{}},"component":{}}],["known/openid",{"_index":1257,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["kubernet",{"_index":1064,"title":{},"name":{},"text":{"14":{},"24":{},"50":{},"60":{},"96":{},"99":{},"127":{},"136":{},"150":{},"151":{},"153":{},"155":{},"193":{},"202":{},"216":{},"217":{},"219":{},"221":{}},"component":{}}],["kubernetes.io/bas",{"_index":2702,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["kubernetesexecutor",{"_index":1405,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["l",{"_index":2494,"title":{},"name":{},"text":{"96":{},"127":{},"151":{},"193":{},"217":{}},"component":{}}],["lab",{"_index":3228,"title":{"178":{},"244":{},"150-11":{},"216-11":{}},"name":{"178":{},"244":{}},"text":{"150":{},"178":{},"186":{},"216":{},"244":{},"252":{}},"component":{}}],["label",{"_index":1008,"title":{"153":{},"219":{},"153-1":{},"219-1":{}},"name":{"153":{},"219":{}},"text":{"14":{},"18":{},"24":{},"50":{},"54":{},"60":{},"80":{},"96":{},"98":{},"99":{},"133":{},"150":{},"151":{},"153":{},"154":{},"155":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"184":{},"185":{},"189":{},"199":{},"216":{},"217":{},"219":{},"220":{},"221":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"250":{},"251":{},"255":{}},"component":{}}],["labor",{"_index":806,"title":{},"name":{},"text":{"10":{}},"component":{}}],["lake",{"_index":1687,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["languag",{"_index":415,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"93":{},"96":{},"97":{},"99":{},"113":{},"127":{},"136":{},"147":{},"151":{},"152":{},"155":{},"174":{},"175":{},"193":{},"202":{},"213":{},"217":{},"218":{},"221":{},"240":{},"241":{}},"component":{}}],["larg",{"_index":921,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"14":{},"50":{},"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["last",{"_index":428,"title":{},"name":{},"text":{"2":{},"24":{},"41":{},"60":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["late",{"_index":2664,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["later",{"_index":412,"title":{},"name":{},"text":{"2":{},"6":{},"14":{},"27":{},"41":{},"45":{},"50":{},"62":{},"77":{},"85":{},"98":{},"100":{},"111":{},"130":{},"138":{},"154":{},"156":{},"172":{},"196":{},"204":{},"220":{},"222":{},"238":{}},"component":{}}],["latest",{"_index":190,"title":{},"name":{},"text":{"2":{},"27":{},"32":{},"41":{},"62":{},"68":{},"77":{},"80":{},"81":{},"95":{},"96":{},"98":{},"99":{},"111":{},"117":{},"128":{},"130":{},"133":{},"137":{},"142":{},"146":{},"149":{},"151":{},"154":{},"155":{},"161":{},"174":{},"194":{},"196":{},"199":{},"203":{},"208":{},"212":{},"215":{},"217":{},"220":{},"221":{},"227":{},"234":{},"240":{}},"component":{}}],["launch",{"_index":2071,"title":{},"name":{},"text":{"77":{},"96":{},"130":{},"151":{},"196":{},"217":{}},"component":{}}],["layer",{"_index":1594,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["layout",{"_index":477,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["lb",{"_index":73,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["lcov",{"_index":3594,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["lead",{"_index":2220,"title":{},"name":{},"text":{"80":{},"128":{},"133":{},"194":{},"199":{}},"component":{}}],["lean",{"_index":649,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"126":{},"136":{},"154":{},"192":{},"202":{},"220":{},"240":{},"258":{}},"component":{}}],["learn",{"_index":1708,"title":{},"name":{},"text":{"32":{},"39":{},"68":{},"75":{},"80":{},"81":{},"83":{},"94":{},"95":{},"117":{},"123":{},"133":{},"136":{},"148":{},"149":{},"150":{},"174":{},"199":{},"202":{},"214":{},"215":{},"216":{},"240":{}},"component":{}}],["leav",{"_index":346,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"77":{},"80":{},"88":{},"100":{},"130":{},"133":{},"141":{},"156":{},"196":{},"199":{},"207":{},"222":{}},"component":{}}],["left",{"_index":397,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"98":{},"101":{},"108":{},"154":{},"157":{},"169":{},"220":{},"223":{},"235":{}},"component":{}}],["length=120",{"_index":3038,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["less",{"_index":3386,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["let",{"_index":2362,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["letter",{"_index":2686,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["let’",{"_index":2715,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["leva",{"_index":2663,"title":{},"name":{},"text":{"98":{},"126":{},"151":{},"154":{},"192":{},"217":{},"220":{},"258":{}},"component":{}}],["level",{"_index":2619,"title":{"136-3":{},"157-4":{},"157-5":{},"202-3":{},"223-4":{},"223-5":{}},"name":{},"text":{"96":{},"98":{},"126":{},"151":{},"153":{},"154":{},"157":{},"181":{},"182":{},"189":{},"192":{},"217":{},"219":{},"220":{},"223":{},"247":{},"248":{},"255":{},"258":{}},"component":{}}],["lf",{"_index":920,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"14":{},"50":{},"77":{},"96":{},"130":{},"151":{},"196":{},"217":{}},"component":{}}],["li",{"_index":2914,"title":{},"name":{},"text":{"101":{}},"component":{}}],["lib",{"_index":3082,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["lib.r",{"_index":3549,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["lib:2.13",{"_index":2317,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["librari",{"_index":401,"title":{"14":{},"50":{},"97":{},"152":{},"218":{},"95-3":{},"114-4":{},"149-3":{},"150-2":{},"154-9":{},"176-4":{},"215-3":{},"216-2":{},"220-9":{},"242-4":{}},"name":{},"text":{"2":{},"5":{},"12":{},"14":{},"21":{},"25":{},"26":{},"27":{},"36":{},"37":{},"39":{},"41":{},"44":{},"50":{},"57":{},"61":{},"62":{},"66":{},"72":{},"73":{},"75":{},"80":{},"83":{},"87":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"108":{},"109":{},"110":{},"111":{},"114":{},"115":{},"122":{},"123":{},"124":{},"125":{},"126":{},"130":{},"133":{},"136":{},"140":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"169":{},"170":{},"171":{},"172":{},"174":{},"176":{},"177":{},"185":{},"186":{},"190":{},"191":{},"192":{},"196":{},"199":{},"202":{},"206":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"235":{},"236":{},"237":{},"238":{},"240":{},"242":{},"243":{},"251":{},"252":{},"256":{},"257":{},"258":{}},"component":{}}],["libraries.html",{"_index":1117,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["library#22",{"_index":2395,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["library'",{"_index":753,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["library(\"od",{"_index":2767,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["library('od",{"_index":2418,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"149":{},"150":{},"151":{},"154":{},"215":{},"216":{},"217":{},"220":{}},"component":{}}],["library.groovi",{"_index":2323,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["library/compon",{"_index":3223,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["library/issues/374",{"_index":3248,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["library/latest/index.html",{"_index":2355,"title":{},"name":{},"text":{"93":{}},"component":{}}],["library/pull/513",{"_index":3250,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["library@${odsgitref",{"_index":2768,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["library@2.x",{"_index":2377,"title":{},"name":{},"text":{"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["library@3.x",{"_index":2421,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["library@4.x",{"_index":3238,"title":{},"name":{},"text":{"150":{},"154":{},"216":{},"220":{}},"component":{}}],["library@product",{"_index":944,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["libressl",{"_index":3788,"title":{},"name":{},"text":{"240":{}},"component":{}}],["licens",{"_index":82,"title":{"2-6":{},"2-15":{},"2-38":{},"2-49":{},"41-6":{},"41-15":{},"41-38":{},"41-49":{}},"name":{},"text":{"2":{},"14":{},"16":{},"28":{},"37":{},"41":{},"50":{},"52":{},"65":{},"73":{},"96":{},"114":{},"151":{},"176":{},"217":{},"240":{},"242":{}},"component":{}}],["life",{"_index":3479,"title":{},"name":{},"text":{"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["lifecycl",{"_index":3139,"title":{"128":{},"194":{}},"name":{"128":{},"194":{}},"text":{"128":{},"194":{}},"component":{}}],["lightweight",{"_index":2739,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["limit",{"_index":1457,"title":{"25-7":{},"26-7":{},"27-13":{},"28-7":{},"29-7":{},"30-7":{},"31-7":{},"32-21":{},"33-7":{},"34-7":{},"35-7":{},"36-7":{},"38-7":{},"61-7":{},"62-13":{},"63-7":{},"64-7":{},"65-7":{},"66-7":{},"67-7":{},"68-21":{},"69-7":{},"70-7":{},"71-7":{},"72-7":{},"74-7":{},"98-25":{},"103-3":{},"104-3":{},"105-3":{},"106-3":{},"107-3":{},"109-10":{},"110-7":{},"111-13":{},"112-7":{},"113-7":{},"114-9":{},"115-7":{},"116-7":{},"117-21":{},"118-7":{},"119-7":{},"120-11":{},"121-7":{},"122-7":{},"124-7":{},"125-7":{},"154-30":{},"159-3":{},"160-3":{},"161-5":{},"162-3":{},"163-3":{},"164-3":{},"165-3":{},"166-3":{},"167-3":{},"168-3":{},"170-11":{},"171-8":{},"172-15":{},"173-9":{},"174-9":{},"175-8":{},"176-10":{},"177-8":{},"178-9":{},"179-8":{},"180-8":{},"181-9":{},"182-6":{},"183-11":{},"184-8":{},"185-8":{},"187-7":{},"188-7":{},"190-7":{},"191-7":{},"220-30":{},"225-3":{},"226-3":{},"227-5":{},"228-3":{},"229-3":{},"230-3":{},"231-3":{},"232-3":{},"233-3":{},"234-5":{},"236-11":{},"237-8":{},"238-15":{},"239-9":{},"240-9":{},"241-8":{},"242-10":{},"243-8":{},"244-9":{},"245-8":{},"246-8":{},"247-9":{},"248-6":{},"249-11":{},"250-8":{},"251-8":{},"253-7":{},"254-7":{},"256-7":{},"257-7":{}},"name":{},"text":{"98":{},"136":{},"150":{},"154":{},"202":{},"216":{},"220":{},"240":{}},"component":{}}],["line",{"_index":1520,"title":{},"name":{},"text":{"27":{},"62":{},"77":{},"81":{},"83":{},"95":{},"98":{},"100":{},"111":{},"112":{},"130":{},"136":{},"149":{},"151":{},"154":{},"156":{},"172":{},"173":{},"181":{},"196":{},"202":{},"215":{},"217":{},"220":{},"222":{},"238":{},"239":{},"247":{}},"component":{}}],["link",{"_index":293,"title":{"19-6":{},"55-6":{},"100-11":{},"156-11":{},"222-11":{}},"name":{},"text":{"2":{},"19":{},"20":{},"22":{},"32":{},"41":{},"55":{},"56":{},"58":{},"68":{},"81":{},"98":{},"100":{},"101":{},"117":{},"128":{},"151":{},"154":{},"156":{},"157":{},"181":{},"189":{},"194":{},"217":{},"220":{},"222":{},"223":{},"240":{},"247":{},"255":{}},"component":{}}],["lint",{"_index":1585,"title":{},"name":{},"text":{"29":{},"34":{},"35":{},"36":{},"37":{},"38":{},"63":{},"70":{},"71":{},"72":{},"73":{},"74":{},"103":{},"112":{},"119":{},"121":{},"122":{},"159":{},"173":{},"174":{},"180":{},"185":{},"225":{},"239":{},"240":{},"246":{},"251":{}},"component":{}}],["linter",{"_index":1546,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"174":{},"176":{},"184":{},"240":{},"242":{},"250":{}},"component":{}}],["linux",{"_index":85,"title":{"2-7":{},"41-7":{}},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"77":{},"117":{},"130":{},"196":{}},"component":{}}],["linux.zip",{"_index":3667,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["list",{"_index":255,"title":{},"name":{},"text":{"2":{},"8":{},"14":{},"16":{},"22":{},"29":{},"41":{},"47":{},"50":{},"52":{},"58":{},"63":{},"77":{},"88":{},"93":{},"95":{},"96":{},"98":{},"101":{},"112":{},"123":{},"126":{},"141":{},"147":{},"149":{},"151":{},"153":{},"154":{},"157":{},"173":{},"174":{},"178":{},"186":{},"192":{},"207":{},"213":{},"215":{},"217":{},"219":{},"220":{},"223":{},"239":{},"240":{},"244":{},"252":{},"258":{}},"component":{}}],["liter",{"_index":3326,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["littl",{"_index":929,"title":{},"name":{},"text":{"14":{},"30":{},"50":{},"64":{},"96":{},"97":{},"98":{},"99":{},"151":{},"152":{},"154":{},"155":{},"217":{},"218":{},"220":{},"221":{}},"component":{}}],["live",{"_index":1950,"title":{},"name":{},"text":{"39":{},"75":{},"80":{},"96":{},"97":{},"98":{},"126":{},"133":{},"151":{},"152":{},"154":{},"174":{},"192":{},"199":{},"217":{},"218":{},"220":{},"240":{},"258":{}},"component":{}}],["llvm",{"_index":3502,"title":{},"name":{},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["lo",{"_index":2046,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["loacl",{"_index":454,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["load",{"_index":127,"title":{"2-52":{},"41-52":{}},"name":{},"text":{"11":{},"12":{},"14":{},"32":{},"50":{},"68":{},"96":{},"98":{},"99":{},"100":{},"109":{},"117":{},"126":{},"128":{},"151":{},"154":{},"155":{},"156":{},"170":{},"181":{},"192":{},"194":{},"217":{},"220":{},"221":{},"222":{},"236":{},"247":{},"258":{}},"component":{}}],["local",{"_index":42,"title":{"2-9":{},"2-57":{},"19-1":{},"32-8":{},"41-9":{},"41-57":{},"55-1":{},"68-8":{},"77-2":{},"82-3":{},"93-3":{},"93-4":{},"100-1":{},"117-8":{},"130-2":{},"135-3":{},"147-3":{},"147-4":{},"156-1":{},"196-2":{},"201-3":{},"213-3":{},"213-4":{},"222-1":{}},"name":{"2":{},"41":{}},"text":{"1":{},"2":{},"14":{},"19":{},"20":{},"27":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"50":{},"55":{},"56":{},"62":{},"63":{},"64":{},"68":{},"70":{},"72":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"93":{},"96":{},"100":{},"101":{},"108":{},"109":{},"111":{},"113":{},"114":{},"117":{},"119":{},"122":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"142":{},"146":{},"147":{},"151":{},"156":{},"157":{},"169":{},"170":{},"172":{},"174":{},"175":{},"176":{},"181":{},"185":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"208":{},"212":{},"213":{},"217":{},"222":{},"223":{},"235":{},"236":{},"238":{},"240":{},"241":{},"242":{},"247":{},"251":{}},"component":{}}],["localhost:4200",{"_index":1773,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["locat",{"_index":668,"title":{},"name":{},"text":{"5":{},"6":{},"13":{},"19":{},"29":{},"44":{},"45":{},"49":{},"55":{},"63":{},"76":{},"80":{},"81":{},"82":{},"83":{},"87":{},"92":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"112":{},"114":{},"126":{},"129":{},"133":{},"135":{},"137":{},"140":{},"142":{},"146":{},"147":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"173":{},"176":{},"180":{},"192":{},"195":{},"199":{},"201":{},"203":{},"206":{},"208":{},"212":{},"213":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"239":{},"242":{},"246":{},"258":{}},"component":{}}],["lock",{"_index":911,"title":{},"name":{},"text":{"13":{},"38":{},"49":{},"74":{}},"component":{}}],["lock.json",{"_index":1537,"title":{},"name":{},"text":{"28":{},"35":{},"38":{},"65":{},"71":{},"74":{},"114":{},"121":{},"176":{},"184":{},"242":{},"250":{}},"component":{}}],["log",{"_index":107,"title":{"2-22":{},"41-22":{}},"name":{},"text":{"2":{},"13":{},"14":{},"20":{},"21":{},"22":{},"24":{},"41":{},"49":{},"50":{},"56":{},"57":{},"58":{},"60":{},"77":{},"101":{},"130":{},"157":{},"196":{},"223":{}},"component":{}}],["logback",{"_index":3059,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["logback.xml",{"_index":3051,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["logfil",{"_index":1299,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["logic",{"_index":2211,"title":{},"name":{},"text":{"80":{},"121":{},"122":{},"133":{},"174":{},"184":{},"185":{},"199":{},"240":{},"250":{},"251":{}},"component":{}}],["login",{"_index":70,"title":{},"name":{},"text":{"1":{},"2":{},"22":{},"39":{},"40":{},"41":{},"58":{},"75":{},"76":{},"129":{},"130":{},"195":{},"196":{}},"component":{}}],["login.t",{"_index":3638,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["login_obsolete.t",{"_index":3809,"title":{},"name":{},"text":{"247":{}},"component":{}}],["login_statu",{"_index":1360,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["login_status=$(cat",{"_index":1357,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["logist",{"_index":1705,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["logmessag",{"_index":3060,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["logo.png",{"_index":1912,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["logon",{"_index":1958,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["logout",{"_index":2956,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["logstash",{"_index":3058,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["long",{"_index":1751,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["longer",{"_index":452,"title":{"95-11":{},"149-11":{},"150-10":{},"215-11":{},"216-10":{}},"name":{},"text":{"2":{},"41":{},"47":{},"80":{},"88":{},"95":{},"133":{},"141":{},"149":{},"150":{},"154":{},"199":{},"207":{},"215":{},"216":{},"220":{}},"component":{}}],["longlivedbranch",{"_index":2556,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["look",{"_index":37,"title":{},"name":{},"text":{"1":{},"2":{},"13":{},"14":{},"19":{},"27":{},"30":{},"40":{},"41":{},"49":{},"50":{},"55":{},"62":{},"64":{},"76":{},"80":{},"95":{},"96":{},"100":{},"108":{},"111":{},"115":{},"127":{},"129":{},"133":{},"149":{},"151":{},"156":{},"169":{},"172":{},"177":{},"181":{},"193":{},"195":{},"199":{},"215":{},"217":{},"222":{},"235":{},"238":{},"243":{},"247":{}},"component":{}}],["lookup",{"_index":2589,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["lookuppolici",{"_index":2198,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["lorem",{"_index":791,"title":{},"name":{},"text":{"10":{}},"component":{}}],["lot",{"_index":1126,"title":{},"name":{},"text":{"14":{},"28":{},"50":{},"65":{},"95":{},"96":{},"97":{},"108":{},"114":{},"149":{},"151":{},"152":{},"154":{},"169":{},"176":{},"215":{},"217":{},"218":{},"220":{},"235":{},"242":{}},"component":{}}],["low",{"_index":2563,"title":{},"name":{},"text":{"96":{},"127":{},"151":{},"193":{},"217":{}},"component":{}}],["lowercas",{"_index":2651,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["lua",{"_index":546,"title":{"12":{},"12-2":{},"109-6":{},"109-7":{},"170-6":{},"170-7":{},"236-6":{},"236-7":{}},"name":{},"text":{"2":{},"11":{},"12":{},"41":{},"109":{},"170":{},"236":{}},"component":{}}],["m",{"_index":1880,"title":{},"name":{},"text":{"38":{},"74":{},"112":{},"151":{},"173":{},"178":{},"180":{},"217":{},"239":{},"244":{},"246":{}},"component":{}}],["machin",{"_index":450,"title":{},"name":{},"text":{"2":{},"32":{},"39":{},"41":{},"68":{},"75":{},"77":{},"80":{},"83":{},"96":{},"100":{},"108":{},"117":{},"123":{},"130":{},"133":{},"136":{},"151":{},"156":{},"169":{},"196":{},"199":{},"202":{},"217":{},"222":{},"235":{}},"component":{}}],["machine/editor",{"_index":3182,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["macro",{"_index":3784,"title":{},"name":{},"text":{"240":{}},"component":{}}],["macro:2.3",{"_index":699,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["made",{"_index":970,"title":{},"name":{},"text":{"14":{},"50":{},"81":{},"95":{},"96":{},"108":{},"114":{},"127":{},"136":{},"149":{},"150":{},"151":{},"153":{},"169":{},"176":{},"193":{},"202":{},"215":{},"216":{},"217":{},"219":{},"235":{},"242":{}},"component":{}}],["magna",{"_index":808,"title":{},"name":{},"text":{"10":{}},"component":{}}],["mail",{"_index":411,"title":{"6-4":{},"45-4":{}},"name":{},"text":{"2":{},"6":{},"41":{},"45":{},"87":{},"140":{},"151":{},"170":{},"206":{},"217":{},"236":{}},"component":{}}],["mail.en",{"_index":1313,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["main",{"_index":1075,"title":{},"name":{},"text":{"14":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"50":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"93":{},"96":{},"101":{},"112":{},"114":{},"116":{},"117":{},"118":{},"121":{},"122":{},"128":{},"147":{},"151":{},"157":{},"173":{},"174":{},"176":{},"178":{},"179":{},"180":{},"184":{},"185":{},"194":{},"213":{},"217":{},"223":{},"239":{},"240":{},"242":{},"244":{},"245":{},"246":{},"250":{},"251":{}},"component":{}}],["main.css",{"_index":1566,"title":{},"name":{},"text":{"29":{},"63":{},"113":{},"175":{},"241":{}},"component":{}}],["main.go",{"_index":1476,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["main.j",{"_index":3053,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["main.pi",{"_index":3023,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["main.r",{"_index":3548,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["main.scala.html",{"_index":3048,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["main.spec.j",{"_index":1760,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["main.spec.t",{"_index":1766,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["main.t",{"_index":1808,"title":{},"name":{},"text":{"35":{},"36":{},"38":{},"71":{},"72":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["main.tf",{"_index":3724,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["main_test.pi",{"_index":3024,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["mainlin",{"_index":2676,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["maintain",{"_index":2010,"title":{},"name":{},"text":{"76":{},"77":{},"84":{},"129":{},"130":{},"195":{},"196":{}},"component":{}}],["major",{"_index":1394,"title":{"23-1":{},"59-1":{}},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["make",{"_index":224,"title":{"81-1":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"32":{},"41":{},"44":{},"50":{},"55":{},"68":{},"77":{},"79":{},"80":{},"81":{},"83":{},"84":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"117":{},"123":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"172":{},"174":{},"179":{},"186":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"238":{},"240":{},"245":{},"252":{},"255":{},"258":{}},"component":{}}],["makefil",{"_index":789,"title":{},"name":{},"text":{"8":{},"47":{},"84":{},"88":{},"141":{},"207":{}},"component":{}}],["manag",{"_index":129,"title":{"126":{},"192":{},"258":{},"2-53":{},"41-53":{},"80-19":{},"84-1":{},"133-19":{},"154-25":{},"199-19":{},"220-25":{}},"name":{"126":{},"192":{},"258":{}},"text":{"2":{},"5":{},"7":{},"12":{},"32":{},"41":{},"44":{},"46":{},"68":{},"78":{},"82":{},"83":{},"87":{},"95":{},"97":{},"98":{},"101":{},"103":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"126":{},"131":{},"135":{},"136":{},"140":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"159":{},"170":{},"171":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"192":{},"197":{},"201":{},"202":{},"206":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"225":{},"236":{},"237":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["manager.yml",{"_index":2642,"title":{},"name":{},"text":{"98":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"126":{},"154":{},"170":{},"171":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"192":{},"220":{},"236":{},"237":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"258":{}},"component":{}}],["mandatori",{"_index":1661,"title":{},"name":{},"text":{"32":{},"68":{},"80":{},"87":{},"101":{},"115":{},"117":{},"133":{},"140":{},"157":{},"177":{},"199":{},"206":{},"223":{},"243":{}},"component":{}}],["mani",{"_index":981,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"109":{},"151":{},"155":{},"170":{},"217":{},"221":{},"236":{}},"component":{}}],["manifest",{"_index":3317,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["manifest.json",{"_index":1839,"title":{},"name":{},"text":{"36":{},"37":{},"38":{},"72":{},"73":{},"74":{},"122":{}},"component":{}}],["manual",{"_index":889,"title":{"13-4":{},"49-4":{}},"name":{},"text":{"22":{},"32":{},"47":{},"58":{},"68":{},"78":{},"80":{},"87":{},"88":{},"94":{},"96":{},"98":{},"101":{},"117":{},"131":{},"133":{},"137":{},"140":{},"141":{},"142":{},"146":{},"148":{},"150":{},"151":{},"154":{},"157":{},"197":{},"199":{},"203":{},"206":{},"207":{},"208":{},"212":{},"214":{},"216":{},"217":{},"220":{},"223":{}},"component":{}}],["map",{"_index":421,"title":{"96-4":{},"101-4":{},"101-6":{},"101-7":{},"151-4":{},"157-7":{},"157-9":{},"157-10":{},"217-4":{},"223-7":{},"223-9":{},"223-10":{}},"name":{},"text":{"2":{},"5":{},"6":{},"14":{},"18":{},"19":{},"20":{},"21":{},"22":{},"24":{},"41":{},"44":{},"45":{},"50":{},"54":{},"55":{},"56":{},"57":{},"58":{},"60":{},"78":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"121":{},"131":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"184":{},"197":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"250":{}},"component":{}}],["mapper",{"_index":2079,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["mapping.project",{"_index":2921,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["mark",{"_index":1851,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"122":{},"185":{},"251":{}},"component":{}}],["marketplac",{"_index":914,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["master",{"_index":684,"title":{"87":{},"140":{},"206":{},"6-1":{},"45-1":{},"78-1":{},"80-25":{},"84-2":{},"131-1":{},"133-25":{},"197-1":{},"199-25":{}},"name":{"87":{},"140":{},"206":{}},"text":{"5":{},"6":{},"14":{},"36":{},"44":{},"45":{},"50":{},"72":{},"77":{},"78":{},"79":{},"80":{},"81":{},"83":{},"84":{},"95":{},"96":{},"98":{},"99":{},"102":{},"121":{},"122":{},"126":{},"128":{},"130":{},"131":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"154":{},"155":{},"158":{},"181":{},"184":{},"185":{},"192":{},"194":{},"196":{},"197":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"220":{},"221":{},"224":{},"247":{},"250":{},"251":{}},"component":{}}],["master,develop,production,staging,releas",{"_index":776,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["matadata",{"_index":1427,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["match",{"_index":675,"title":{},"name":{},"text":{"5":{},"14":{},"44":{},"50":{},"80":{},"96":{},"98":{},"108":{},"130":{},"133":{},"150":{},"151":{},"153":{},"154":{},"160":{},"169":{},"189":{},"196":{},"199":{},"216":{},"217":{},"219":{},"220":{},"226":{},"235":{},"255":{}},"component":{}}],["materi",{"_index":1877,"title":{},"name":{},"text":{"37":{},"73":{},"82":{},"135":{},"138":{},"201":{},"204":{}},"component":{}}],["matter",{"_index":662,"title":{},"name":{},"text":{"5":{},"44":{},"77":{},"83":{},"98":{},"130":{},"154":{},"196":{},"220":{}},"component":{}}],["maven",{"_index":492,"title":{"104":{}},"name":{"104":{}},"text":{"2":{},"14":{},"27":{},"41":{},"50":{},"62":{},"95":{},"104":{},"111":{},"120":{},"149":{},"153":{},"161":{},"172":{},"189":{},"215":{},"219":{},"227":{},"238":{},"255":{}},"component":{}}],["maven2",{"_index":481,"title":{},"name":{},"text":{"2":{},"41":{},"96":{},"151":{},"217":{}},"component":{}}],["maven:2.x",{"_index":2378,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["max",{"_index":3037,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["maximum",{"_index":2464,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["md5sum",{"_index":3668,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["mean",{"_index":2054,"title":{},"name":{},"text":{"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"95":{},"98":{},"101":{},"128":{},"130":{},"132":{},"133":{},"135":{},"136":{},"141":{},"142":{},"149":{},"150":{},"151":{},"153":{},"154":{},"157":{},"158":{},"189":{},"194":{},"196":{},"198":{},"199":{},"201":{},"202":{},"207":{},"208":{},"215":{},"216":{},"217":{},"219":{},"220":{},"223":{},"224":{},"255":{}},"component":{}}],["meaning",{"_index":2685,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"189":{},"219":{},"220":{},"255":{}},"component":{}}],["meant",{"_index":167,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"153":{},"154":{},"182":{},"219":{},"220":{},"248":{}},"component":{}}],["meantim",{"_index":2599,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["mechan",{"_index":339,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["media",{"_index":1069,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["medium",{"_index":2564,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["meet",{"_index":3736,"title":{},"name":{},"text":{"189":{},"255":{}},"component":{}}],["member",{"_index":2009,"title":{},"name":{},"text":{"76":{},"81":{},"98":{},"129":{},"154":{},"195":{},"220":{}},"component":{}}],["membership",{"_index":384,"title":{},"name":{},"text":{"2":{},"41":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["memori",{"_index":2310,"title":{},"name":{},"text":{"83":{},"94":{},"96":{},"99":{},"136":{},"148":{},"151":{},"154":{},"155":{},"202":{},"214":{},"217":{},"220":{},"221":{}},"component":{}}],["mention",{"_index":1779,"title":{},"name":{},"text":{"34":{},"70":{},"98":{},"114":{},"119":{},"123":{},"154":{},"157":{},"173":{},"176":{},"186":{},"220":{},"223":{},"239":{},"242":{},"252":{},"258":{}},"component":{}}],["menu",{"_index":321,"title":{},"name":{},"text":{"2":{},"41":{},"87":{},"140":{},"206":{}},"component":{}}],["mere",{"_index":1135,"title":{},"name":{},"text":{"19":{},"55":{},"98":{},"100":{},"126":{},"154":{},"156":{},"192":{},"220":{},"222":{},"258":{}},"component":{}}],["merg",{"_index":458,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"21":{},"36":{},"41":{},"44":{},"45":{},"47":{},"57":{},"72":{},"80":{},"81":{},"82":{},"83":{},"88":{},"96":{},"102":{},"122":{},"133":{},"135":{},"136":{},"141":{},"151":{},"158":{},"185":{},"199":{},"201":{},"202":{},"207":{},"217":{},"224":{},"251":{}},"component":{}}],["mergedissueid",{"_index":2524,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["messag",{"_index":621,"title":{},"name":{},"text":{"4":{},"14":{},"43":{},"50":{},"91":{},"96":{},"113":{},"145":{},"151":{},"153":{},"175":{},"189":{},"211":{},"217":{},"219":{},"241":{},"255":{}},"component":{}}],["message\":\"unexpect",{"_index":2882,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["message\":\"us",{"_index":2879,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["met",{"_index":173,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["meta",{"_index":1690,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["metadata",{"_index":2177,"title":{"189":{},"255":{},"170-8":{},"171-5":{},"172-11":{},"173-5":{},"174-5":{},"175-5":{},"176-7":{},"177-5":{},"178-6":{},"179-5":{},"180-5":{},"184-5":{},"185-5":{},"236-8":{},"237-5":{},"238-11":{},"239-5":{},"240-5":{},"241-5":{},"242-7":{},"243-5":{},"244-6":{},"245-5":{},"246-5":{},"250-5":{},"251-5":{}},"name":{"189":{},"255":{}},"text":{"80":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"133":{},"151":{},"153":{},"155":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"199":{},"217":{},"219":{},"221":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{}},"component":{}}],["metadata.yml",{"_index":2636,"title":{},"name":{},"text":{"98":{},"109":{},"110":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"126":{},"153":{},"154":{},"170":{},"171":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"192":{},"219":{},"220":{},"236":{},"237":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["method",{"_index":1089,"title":{},"name":{},"text":{"14":{},"15":{},"20":{},"27":{},"50":{},"51":{},"56":{},"62":{},"96":{},"101":{},"111":{},"150":{},"151":{},"157":{},"172":{},"216":{},"217":{},"223":{},"238":{}},"component":{}}],["metric",{"_index":2385,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["microservic",{"_index":1475,"title":{},"name":{},"text":{"26":{},"32":{},"61":{},"68":{},"110":{},"117":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"189":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"255":{}},"component":{}}],["middl",{"_index":399,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["middlewar",{"_index":3397,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["migrat",{"_index":1078,"title":{"127":{},"193":{},"172-14":{},"238-14":{}},"name":{"127":{},"193":{}},"text":{"14":{},"50":{},"76":{},"83":{},"95":{},"96":{},"127":{},"129":{},"136":{},"142":{},"146":{},"149":{},"150":{},"151":{},"161":{},"172":{},"193":{},"195":{},"202":{},"208":{},"212":{},"215":{},"216":{},"217":{},"227":{},"234":{},"238":{},"240":{}},"component":{}}],["migration.html",{"_index":3212,"title":{},"name":{},"text":{"142":{},"146":{},"208":{},"212":{}},"component":{}}],["mimick",{"_index":1951,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["mind",{"_index":201,"title":{},"name":{},"text":{"2":{},"14":{},"32":{},"41":{},"50":{},"68":{},"77":{},"79":{},"96":{},"98":{},"114":{},"117":{},"132":{},"151":{},"154":{},"176":{},"198":{},"217":{},"220":{},"242":{}},"component":{}}],["minim",{"_index":924,"title":{},"name":{},"text":{"14":{},"28":{},"50":{},"65":{},"96":{},"97":{},"99":{},"151":{},"152":{},"155":{},"217":{},"218":{},"221":{}},"component":{}}],["minimum",{"_index":3495,"title":{},"name":{},"text":{"167":{},"233":{}},"component":{}}],["minishift",{"_index":582,"title":{"4-5":{},"43-5":{},"91-5":{},"145-5":{},"211-5":{}},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["minor",{"_index":2289,"title":{},"name":{},"text":{"83":{},"136":{},"202":{}},"component":{}}],["minut",{"_index":2572,"title":{},"name":{},"text":{"96":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["mirror",{"_index":390,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"68":{},"117":{}},"component":{}}],["misconfigur",{"_index":3284,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["mismatch",{"_index":3791,"title":{},"name":{},"text":{"240":{}},"component":{}}],["miss",{"_index":1498,"title":{},"name":{},"text":{"27":{},"62":{},"76":{},"77":{},"80":{},"101":{},"111":{},"112":{},"120":{},"129":{},"130":{},"133":{},"157":{},"172":{},"173":{},"183":{},"195":{},"196":{},"199":{},"223":{},"238":{},"239":{},"240":{},"249":{}},"component":{}}],["mistak",{"_index":3592,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["mitig",{"_index":1749,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"128":{},"194":{}},"component":{}}],["mix",{"_index":2755,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["mkdir",{"_index":2045,"title":{},"name":{},"text":{"77":{},"96":{},"130":{},"137":{},"142":{},"146":{},"151":{},"181":{},"196":{},"203":{},"208":{},"212":{},"217":{},"247":{}},"component":{}}],["mkyong",{"_index":1208,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["ml",{"_index":1631,"title":{"150-10":{},"216-10":{}},"name":{"32":{},"68":{},"117":{}},"text":{"95":{},"149":{},"150":{},"215":{},"216":{}},"component":{}}],["mlflow",{"_index":3256,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["mobil",{"_index":1821,"title":{},"name":{},"text":{"36":{},"39":{},"72":{},"75":{},"122":{},"123":{},"185":{},"186":{},"251":{},"252":{}},"component":{}}],["mocha",{"_index":1549,"title":{},"name":{},"text":{"28":{},"38":{},"65":{},"74":{}},"component":{}}],["mockito",{"_index":1170,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["mod",{"_index":1479,"title":{},"name":{},"text":{"26":{},"61":{},"99":{},"110":{},"155":{},"171":{},"221":{},"237":{}},"component":{}}],["mod.r",{"_index":3566,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["mode",{"_index":1109,"title":{},"name":{},"text":{"14":{},"17":{},"29":{},"32":{},"50":{},"53":{},"63":{},"68":{},"93":{},"96":{},"98":{},"113":{},"117":{},"147":{},"151":{},"154":{},"175":{},"213":{},"217":{},"220":{},"241":{}},"component":{}}],["model",{"_index":1625,"title":{"32-7":{},"32-8":{},"68-7":{},"68-8":{},"117-7":{},"117-8":{}},"name":{},"text":{"32":{},"68":{},"98":{},"117":{},"126":{},"154":{},"174":{},"192":{},"220":{},"240":{},"258":{}},"component":{}}],["modelwrapp",{"_index":1663,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["modern",{"_index":3797,"title":{},"name":{},"text":{"240":{}},"component":{}}],["modernscm",{"_index":945,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"148":{},"214":{}},"component":{}}],["modfi",{"_index":1935,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["modif",{"_index":3241,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["modifi",{"_index":604,"title":{"108-1":{},"108-2":{},"146-1":{},"169-1":{},"169-2":{},"212-1":{},"235-1":{},"235-2":{}},"name":{},"text":{"4":{},"5":{},"8":{},"22":{},"32":{},"43":{},"44":{},"47":{},"58":{},"68":{},"76":{},"77":{},"79":{},"80":{},"82":{},"88":{},"91":{},"95":{},"98":{},"101":{},"102":{},"117":{},"129":{},"130":{},"132":{},"133":{},"135":{},"141":{},"142":{},"145":{},"149":{},"151":{},"154":{},"157":{},"181":{},"195":{},"196":{},"198":{},"199":{},"201":{},"207":{},"208":{},"211":{},"215":{},"217":{},"220":{},"223":{},"247":{}},"component":{}}],["modsecur",{"_index":836,"title":{"12":{}},"name":{},"text":{"11":{},"12":{}},"component":{}}],["modsecurity.conf",{"_index":842,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["modsecurity_nginx_version=\"1.0.0",{"_index":879,"title":{},"name":{},"text":{"12":{}},"component":{}}],["modsecurity_version=\"3.0.0",{"_index":878,"title":{},"name":{},"text":{"12":{}},"component":{}}],["modul",{"_index":830,"title":{"12-1":{},"12-2":{},"109-6":{},"109-7":{},"170-6":{},"170-7":{},"236-6":{},"236-7":{}},"name":{},"text":{"11":{},"12":{},"26":{},"29":{},"61":{},"63":{},"82":{},"99":{},"109":{},"110":{},"112":{},"114":{},"135":{},"155":{},"170":{},"171":{},"173":{},"174":{},"176":{},"180":{},"201":{},"221":{},"236":{},"237":{},"239":{},"240":{},"242":{},"246":{}},"component":{}}],["modular",{"_index":3597,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["module\").authent",{"_index":3009,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["modules.t",{"_index":3117,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["moment",{"_index":3154,"title":{},"name":{},"text":{"128":{},"130":{},"137":{},"194":{},"196":{},"203":{}},"component":{}}],["mongodb",{"_index":3376,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["monitor",{"_index":763,"title":{},"name":{},"text":{"7":{},"14":{},"16":{},"32":{},"46":{},"50":{},"52":{},"68":{},"85":{},"96":{},"117":{},"138":{},"151":{},"204":{},"217":{}},"component":{}}],["mono",{"_index":3253,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["more",{"_index":698,"title":{},"name":{},"text":{"6":{},"11":{},"12":{},"14":{},"19":{},"27":{},"32":{},"45":{},"47":{},"50":{},"55":{},"62":{},"68":{},"77":{},"81":{},"82":{},"87":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"117":{},"123":{},"127":{},"128":{},"130":{},"135":{},"140":{},"141":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"172":{},"181":{},"186":{},"189":{},"193":{},"194":{},"196":{},"201":{},"206":{},"207":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"238":{},"240":{},"247":{},"252":{},"255":{}},"component":{}}],["moreov",{"_index":784,"title":{},"name":{},"text":{"8":{},"32":{},"68":{},"117":{},"157":{},"189":{},"223":{},"255":{}},"component":{}}],["mostli",{"_index":2623,"title":{},"name":{},"text":{"97":{},"152":{},"218":{}},"component":{}}],["mount",{"_index":266,"title":{},"name":{},"text":{"2":{},"14":{},"31":{},"41":{},"50":{},"67":{},"96":{},"99":{},"116":{},"151":{},"155":{},"178":{},"217":{},"221":{},"244":{}},"component":{}}],["move",{"_index":982,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"79":{},"80":{},"95":{},"96":{},"98":{},"117":{},"132":{},"133":{},"137":{},"149":{},"150":{},"151":{},"154":{},"174":{},"198":{},"199":{},"203":{},"215":{},"216":{},"217":{},"220":{},"240":{}},"component":{}}],["mro",{"_index":2307,"title":{},"name":{},"text":{"83":{},"136":{},"154":{},"202":{},"220":{}},"component":{}}],["mroagentmemorylimit",{"_index":3423,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["msalv2",{"_index":3639,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["msapplic",{"_index":1903,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["msg",{"_index":576,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["msi",{"_index":588,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["msrv",{"_index":3496,"title":{},"name":{},"text":{"167":{},"233":{}},"component":{}}],["mstile",{"_index":1905,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["much",{"_index":1285,"title":{},"name":{},"text":{"21":{},"32":{},"57":{},"68":{},"96":{},"99":{},"102":{},"117":{},"151":{},"154":{},"155":{},"158":{},"217":{},"220":{},"221":{},"224":{}},"component":{}}],["multi",{"_index":1293,"title":{"24-7":{},"60-7":{}},"name":{},"text":{"21":{},"57":{},"151":{},"217":{}},"component":{}}],["multipl",{"_index":984,"title":{"173-8":{},"239-8":{}},"name":{},"text":{"14":{},"50":{},"82":{},"83":{},"95":{},"96":{},"97":{},"98":{},"99":{},"126":{},"135":{},"136":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"160":{},"192":{},"201":{},"202":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"226":{},"258":{}},"component":{}}],["myarg\":\"val",{"_index":1100,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{}},"component":{}}],["myimagelabel\":\"vallabel",{"_index":1104,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{}},"component":{}}],["mylocaldevelop",{"_index":3034,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["mylocaldevelopment/bin/activ",{"_index":3035,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["mypi",{"_index":3030,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["myproject",{"_index":2885,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["mypy.ini",{"_index":3029,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["n",{"_index":518,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"80":{},"94":{},"96":{},"100":{},"108":{},"127":{},"132":{},"133":{},"148":{},"151":{},"156":{},"169":{},"193":{},"198":{},"199":{},"214":{},"217":{},"222":{},"235":{}},"component":{}}],["n.d",{"_index":1712,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["n/a",{"_index":1472,"title":{},"name":{},"text":{"25":{},"26":{},"28":{},"33":{},"61":{},"65":{},"66":{},"69":{},"104":{},"105":{},"109":{},"110":{},"114":{},"115":{},"118":{},"124":{},"125":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"170":{},"171":{},"176":{},"177":{},"179":{},"190":{},"191":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"236":{},"237":{},"242":{},"243":{},"245":{},"256":{},"257":{}},"component":{}}],["na",{"_index":1524,"title":{},"name":{},"text":{"27":{},"29":{},"30":{},"35":{},"62":{},"63":{},"64":{},"71":{},"111":{},"112":{},"113":{},"120":{},"121":{},"172":{},"175":{},"181":{},"183":{},"184":{},"238":{},"241":{},"247":{},"249":{},"250":{}},"component":{}}],["name",{"_index":301,"title":{"153-15":{},"189-3":{},"219-15":{},"255-3":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"11":{},"14":{},"18":{},"20":{},"21":{},"22":{},"24":{},"32":{},"34":{},"36":{},"39":{},"41":{},"44":{},"45":{},"47":{},"50":{},"54":{},"56":{},"57":{},"58":{},"60":{},"68":{},"70":{},"72":{},"75":{},"78":{},"80":{},"81":{},"82":{},"83":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"115":{},"117":{},"119":{},"122":{},"126":{},"131":{},"133":{},"135":{},"141":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"188":{},"189":{},"192":{},"197":{},"199":{},"201":{},"207":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"254":{},"255":{},"258":{}},"component":{}}],["name.<>.rol",{"_index":2920,"title":{},"name":{},"text":{"101":{}},"component":{}}],["name].branch",{"_index":2906,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["name].cr",{"_index":2905,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["name].jenkinsfil",{"_index":2908,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["name]/jenkinsfil",{"_index":2909,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["namespac",{"_index":673,"title":{"8-2":{},"79-1":{},"80-13":{},"94-4":{},"94-10":{},"95-1":{},"128-2":{},"128-3":{},"128-4":{},"132-1":{},"133-13":{},"148-4":{},"148-10":{},"149-1":{},"194-2":{},"194-3":{},"194-4":{},"198-1":{},"199-13":{},"214-4":{},"214-10":{},"215-1":{}},"name":{},"text":{"5":{},"6":{},"8":{},"21":{},"24":{},"44":{},"45":{},"47":{},"57":{},"60":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"109":{},"126":{},"128":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"158":{},"170":{},"192":{},"194":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"224":{},"236":{},"258":{}},"component":{}}],["name}.git",{"_index":2648,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["nativ",{"_index":1843,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"136":{},"150":{},"185":{},"202":{},"216":{},"251":{}},"component":{}}],["natur",{"_index":2644,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["navig",{"_index":270,"title":{},"name":{},"text":{"2":{},"41":{},"82":{},"108":{},"120":{},"135":{},"169":{},"183":{},"201":{},"235":{},"249":{}},"component":{}}],["necessari",{"_index":231,"title":{},"name":{},"text":{"2":{},"26":{},"32":{},"41":{},"61":{},"68":{},"77":{},"81":{},"94":{},"98":{},"110":{},"117":{},"130":{},"148":{},"151":{},"154":{},"171":{},"196":{},"214":{},"217":{},"220":{},"237":{}},"component":{}}],["necessarili",{"_index":3147,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["ned",{"_index":3164,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["need",{"_index":196,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"16":{},"22":{},"24":{},"25":{},"27":{},"32":{},"36":{},"37":{},"39":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"52":{},"58":{},"60":{},"62":{},"66":{},"68":{},"72":{},"73":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"87":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"115":{},"117":{},"120":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"130":{},"132":{},"133":{},"136":{},"137":{},"140":{},"141":{},"142":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"172":{},"173":{},"177":{},"181":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"195":{},"196":{},"198":{},"199":{},"202":{},"203":{},"206":{},"207":{},"208":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"238":{},"239":{},"243":{},"247":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["nest",{"_index":380,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["net",{"_index":229,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["network",{"_index":609,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"174":{},"211":{},"240":{}},"component":{}}],["network/oper",{"_index":1474,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["never",{"_index":2096,"title":{},"name":{},"text":{"79":{},"81":{},"132":{},"153":{},"198":{},"219":{}},"component":{}}],["nevertheless",{"_index":244,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["new",{"_index":296,"title":{"13-3":{},"39-8":{},"49-3":{},"75-8":{},"79-1":{},"80-16":{},"83-3":{},"83-4":{},"84-2":{},"84-3":{},"84-4":{},"92-1":{},"94-9":{},"94-11":{},"95-1":{},"132-1":{},"133-16":{},"137-1":{},"142-1":{},"146-2":{},"148-9":{},"148-11":{},"149-1":{},"150-3":{},"158-1":{},"158-2":{},"198-1":{},"199-16":{},"203-1":{},"208-1":{},"212-2":{},"214-9":{},"214-11":{},"215-1":{},"216-3":{},"224-1":{},"224-2":{}},"name":{},"text":{"2":{},"5":{},"11":{},"12":{},"13":{},"14":{},"16":{},"19":{},"21":{},"22":{},"23":{},"30":{},"31":{},"32":{},"39":{},"41":{},"44":{},"49":{},"50":{},"52":{},"55":{},"57":{},"58":{},"59":{},"64":{},"67":{},"68":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"113":{},"116":{},"117":{},"120":{},"123":{},"128":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"170":{},"174":{},"175":{},"178":{},"183":{},"186":{},"194":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"236":{},"240":{},"241":{},"244":{},"249":{},"252":{}},"component":{}}],["new/rework",{"_index":2303,"title":{},"name":{},"text":{"83":{}},"component":{}}],["newcom",{"_index":1121,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"152":{},"218":{}},"component":{}}],["newer",{"_index":872,"title":{},"name":{},"text":{"12":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["newest",{"_index":3259,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["newli",{"_index":681,"title":{},"name":{},"text":{"5":{},"32":{},"39":{},"44":{},"68":{},"75":{},"80":{},"94":{},"117":{},"124":{},"125":{},"133":{},"137":{},"142":{},"146":{},"148":{},"190":{},"191":{},"199":{},"203":{},"208":{},"212":{},"214":{},"256":{},"257":{}},"component":{}}],["newlin",{"_index":2248,"title":{},"name":{},"text":{"81":{}},"component":{}}],["next",{"_index":297,"title":{"23-1":{},"59-1":{}},"name":{},"text":{"2":{},"6":{},"8":{},"22":{},"29":{},"39":{},"41":{},"45":{},"47":{},"58":{},"63":{},"75":{},"79":{},"80":{},"81":{},"83":{},"88":{},"95":{},"96":{},"98":{},"109":{},"123":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"149":{},"151":{},"154":{},"160":{},"170":{},"173":{},"180":{},"186":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"215":{},"217":{},"220":{},"226":{},"236":{},"239":{},"246":{},"252":{}},"component":{}}],["nextest",{"_index":3501,"title":{},"name":{},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["nextest.toml",{"_index":3555,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["nexu",{"_index":468,"title":{"9":{},"48":{},"89":{},"142":{},"143":{},"208":{},"209":{},"27-6":{},"62-6":{},"77-12":{},"111-6":{},"120-5":{},"130-10":{},"142-1":{},"172-6":{},"183-5":{},"196-10":{},"208-1":{},"238-6":{},"249-5":{}},"name":{},"text":{"2":{},"14":{},"15":{},"19":{},"27":{},"31":{},"41":{},"50":{},"51":{},"55":{},"62":{},"77":{},"79":{},"80":{},"83":{},"95":{},"96":{},"98":{},"100":{},"103":{},"104":{},"105":{},"107":{},"108":{},"111":{},"120":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"142":{},"149":{},"151":{},"154":{},"156":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"168":{},"169":{},"172":{},"181":{},"183":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"208":{},"215":{},"217":{},"220":{},"222":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"234":{},"235":{},"238":{},"247":{},"249":{},"258":{}},"component":{}}],["nexus3",{"_index":131,"title":{"2-58":{},"41-58":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_folder_releas",{"_index":1501,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["nexus_folder_snapshot",{"_index":1503,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["nexus_host",{"_index":1146,"title":{},"name":{},"text":{"19":{},"55":{},"95":{},"96":{},"100":{},"149":{},"151":{},"156":{},"215":{},"217":{},"222":{}},"component":{}}],["nexus_image_tag",{"_index":3213,"title":{},"name":{},"text":{"142":{},"208":{}},"component":{}}],["nexus_password",{"_index":1148,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["nexus_pw",{"_index":1143,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["nexus_pw=develop",{"_index":535,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_url",{"_index":1141,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"96":{},"100":{},"111":{},"120":{},"151":{},"156":{},"172":{},"183":{},"217":{},"222":{},"238":{},"249":{}},"component":{}}],["nexus_url=http://nexu",{"_index":533,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_us",{"_index":1142,"title":{},"name":{},"text":{"19":{},"27":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["nexus_user=develop",{"_index":534,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["nexus_usernam",{"_index":1147,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["nexus_username/nexus_password/nexus_auth",{"_index":2446,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["nexusdatabaserepositori",{"_index":3295,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["nexushost",{"_index":1025,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["nexushostwithbasicauth",{"_index":1028,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["nexuspassword",{"_index":1027,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["nexusreportrepositori",{"_index":3296,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["nexusrepositori",{"_index":3282,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["nexusurl",{"_index":2434,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["nexusurlwithbasicauth",{"_index":2480,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["nexususernam",{"_index":1026,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["ng",{"_index":1815,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["nginx",{"_index":545,"title":{"12":{},"109":{},"170":{},"236":{},"12-1":{},"12-4":{}},"name":{"11":{},"12":{},"109":{},"170":{},"236":{}},"text":{"2":{},"11":{},"12":{},"41":{},"94":{},"109":{},"126":{},"148":{},"170":{},"192":{},"214":{},"236":{},"258":{}},"component":{}}],["nginx.conf",{"_index":840,"title":{},"name":{},"text":{"11":{},"12":{},"109":{},"170":{},"236":{}},"component":{}}],["nginx.vh.default.conf.nginx",{"_index":1790,"title":{},"name":{},"text":{"35":{},"36":{},"37":{},"38":{},"71":{},"72":{},"73":{},"74":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["nginx_version=\"1.13.6",{"_index":877,"title":{},"name":{},"text":{"12":{}},"component":{}}],["nice",{"_index":2172,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["nikto",{"_index":884,"title":{},"name":{},"text":{"12":{}},"component":{}}],["no_ci",{"_index":3275,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["no_nexu",{"_index":1149,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["no_nexus=tru",{"_index":539,"title":{},"name":{},"text":{"2":{},"19":{},"27":{},"41":{},"55":{},"62":{},"100":{},"111":{},"120":{},"156":{},"172":{},"183":{},"222":{},"238":{},"249":{}},"component":{}}],["no_proxi",{"_index":2979,"title":{},"name":{},"text":{"107":{},"168":{},"234":{}},"component":{}}],["node",{"_index":615,"title":{"28":{},"65":{},"114":{},"176":{},"242":{},"114-5":{},"176-5":{},"242-5":{}},"name":{"28":{}},"text":{"4":{},"14":{},"24":{},"28":{},"32":{},"35":{},"36":{},"37":{},"39":{},"43":{},"50":{},"60":{},"65":{},"68":{},"71":{},"72":{},"73":{},"75":{},"91":{},"95":{},"96":{},"98":{},"99":{},"114":{},"117":{},"121":{},"122":{},"130":{},"145":{},"149":{},"151":{},"154":{},"155":{},"176":{},"184":{},"185":{},"196":{},"211":{},"215":{},"217":{},"220":{},"221":{},"242":{},"250":{},"251":{}},"component":{}}],["node.j",{"_index":3477,"title":{"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"name":{},"text":{"162":{},"163":{},"164":{},"165":{},"176":{},"181":{},"184":{},"185":{},"228":{},"229":{},"230":{},"231":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["node/express",{"_index":3068,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["node_modul",{"_index":1553,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["nodej",{"_index":2374,"title":{"105":{},"94-8":{},"148-8":{},"214-8":{}},"name":{},"text":{"94":{},"105":{},"148":{},"153":{},"178":{},"189":{},"214":{},"219":{},"244":{},"255":{}},"component":{}}],["nodejs/express",{"_index":1939,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["nodejs10",{"_index":1818,"title":{},"name":{"105":{}},"text":{"35":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"94":{},"95":{},"105":{},"114":{},"119":{},"121":{},"122":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["nodejs16",{"_index":3478,"title":{},"name":{"162":{},"228":{}},"text":{"162":{},"228":{}},"component":{}}],["nodejs18",{"_index":3483,"title":{},"name":{"163":{},"229":{}},"text":{"163":{},"229":{}},"component":{}}],["nodejs20",{"_index":3486,"title":{},"name":{"164":{},"230":{}},"text":{"164":{},"230":{}},"component":{}}],["nodejs20:4.x",{"_index":3658,"title":{},"name":{},"text":{"181":{}},"component":{}}],["nodejs22",{"_index":3488,"title":{},"name":{"165":{},"231":{}},"text":{"165":{},"231":{}},"component":{}}],["nodejs22:4.x",{"_index":3817,"title":{},"name":{},"text":{"247":{}},"component":{}}],["nodejs8",{"_index":1557,"title":{},"name":{},"text":{"28":{},"34":{},"36":{},"37":{},"38":{},"94":{},"148":{},"214":{}},"component":{}}],["nodeselector",{"_index":2178,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["non",{"_index":1530,"title":{},"name":{},"text":{"28":{},"65":{},"114":{},"115":{},"176":{},"177":{},"181":{},"242":{},"243":{},"247":{}},"component":{}}],["none",{"_index":484,"title":{},"name":{},"text":{"2":{},"25":{},"26":{},"32":{},"41":{},"61":{},"66":{},"68":{},"96":{},"110":{},"115":{},"117":{},"124":{},"125":{},"151":{},"153":{},"171":{},"177":{},"190":{},"191":{},"217":{},"219":{},"237":{},"240":{},"243":{},"256":{},"257":{}},"component":{}}],["nonumi",{"_index":801,"title":{},"name":{},"text":{"10":{}},"component":{}}],["normal",{"_index":332,"title":{},"name":{},"text":{"2":{},"14":{},"22":{},"41":{},"50":{},"58":{},"102":{},"127":{},"151":{},"193":{},"217":{}},"component":{}}],["nose",{"_index":1574,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["nosetest",{"_index":1583,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["not_built",{"_index":2549,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["notabl",{"_index":2373,"title":{"94-6":{},"148-6":{},"151-29":{},"214-6":{},"217-29":{}},"name":{},"text":{"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["note",{"_index":1076,"title":{"23":{},"59":{},"150-9":{},"216-9":{}},"name":{},"text":{"14":{},"16":{},"20":{},"27":{},"34":{},"39":{},"47":{},"50":{},"52":{},"56":{},"62":{},"70":{},"75":{},"76":{},"79":{},"80":{},"81":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"119":{},"121":{},"126":{},"128":{},"129":{},"130":{},"132":{},"133":{},"141":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"157":{},"166":{},"167":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"184":{},"185":{},"192":{},"194":{},"195":{},"196":{},"198":{},"199":{},"207":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"223":{},"232":{},"233":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"250":{},"251":{},"258":{}},"component":{}}],["notebook",{"_index":1611,"title":{"31":{},"67":{},"116":{},"150-11":{},"216-11":{}},"name":{"31":{},"67":{},"116":{}},"text":{"31":{},"39":{},"67":{},"75":{},"94":{},"95":{},"116":{},"123":{},"148":{},"149":{},"150":{},"178":{},"214":{},"215":{},"216":{},"244":{}},"component":{}}],["notes.txt",{"_index":3563,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["noth",{"_index":1417,"title":{},"name":{},"text":{"24":{},"60":{},"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["notic",{"_index":3003,"title":{},"name":{},"text":{"109":{},"130":{},"170":{},"196":{},"236":{}},"component":{}}],["notif",{"_index":124,"title":{"2-40":{},"41-40":{},"87-3":{},"140-3":{},"206-3":{}},"name":{},"text":{"14":{},"50":{},"87":{},"96":{},"140":{},"151":{},"182":{},"206":{},"217":{},"248":{}},"component":{}}],["notifi",{"_index":1094,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{},"96":{},"151":{},"217":{}},"component":{}}],["notifynotgreen",{"_index":1023,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["novemb",{"_index":2282,"title":{"83-14":{},"136-9":{},"136-14":{},"202-9":{},"202-14":{}},"name":{},"text":{},"component":{}}],["now",{"_index":247,"title":{},"name":{},"text":{"2":{},"5":{},"34":{},"41":{},"44":{},"47":{},"70":{},"77":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"98":{},"100":{},"119":{},"130":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"154":{},"156":{},"178":{},"196":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"220":{},"222":{},"244":{}},"component":{}}],["npm",{"_index":486,"title":{},"name":{},"text":{"2":{},"28":{},"34":{},"35":{},"36":{},"37":{},"38":{},"41":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"105":{},"114":{},"119":{},"121":{},"122":{},"162":{},"163":{},"164":{},"165":{},"176":{},"181":{},"184":{},"185":{},"228":{},"229":{},"230":{},"231":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["npmj",{"_index":485,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["null",{"_index":2191,"title":{},"name":{},"text":{"80":{},"133":{},"182":{},"199":{},"248":{}},"component":{}}],["number",{"_index":998,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"95":{},"96":{},"98":{},"99":{},"117":{},"149":{},"151":{},"154":{},"155":{},"182":{},"215":{},"217":{},"220":{},"221":{},"248":{}},"component":{}}],["nx",{"_index":504,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["o",{"_index":2844,"title":{},"name":{},"text":{"100":{},"156":{},"173":{},"222":{},"239":{}},"component":{}}],["oauth",{"_index":1421,"title":{},"name":{},"text":{"24":{},"60":{},"67":{},"69":{},"78":{},"94":{},"109":{},"116":{},"118":{},"131":{},"148":{},"170":{},"178":{},"179":{},"180":{},"197":{},"214":{},"236":{},"244":{},"245":{},"246":{}},"component":{}}],["oauth2",{"_index":1172,"title":{"20-3":{},"56-3":{},"101-12":{},"157-15":{},"223-15":{}},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["oauth2.properti",{"_index":1220,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["oauth2.user.roles.jsonpointerexpress",{"_index":1247,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["oauth2.user.roles.jsonpointerexpression=/claims/rol",{"_index":1224,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["oauth2.user.us",{"_index":2951,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["oauth2/openid",{"_index":1163,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["oauth2securityconfigur",{"_index":1193,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["object",{"_index":424,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"80":{},"95":{},"96":{},"99":{},"109":{},"133":{},"149":{},"151":{},"155":{},"170":{},"199":{},"215":{},"217":{},"221":{},"236":{}},"component":{}}],["oc",{"_index":556,"title":{},"name":{},"text":{"2":{},"6":{},"13":{},"22":{},"25":{},"41":{},"45":{},"49":{},"58":{},"66":{},"77":{},"79":{},"80":{},"85":{},"94":{},"96":{},"100":{},"102":{},"115":{},"127":{},"128":{},"130":{},"132":{},"133":{},"138":{},"148":{},"151":{},"156":{},"177":{},"193":{},"194":{},"196":{},"198":{},"199":{},"204":{},"214":{},"217":{},"222":{},"243":{}},"component":{}}],["occur",{"_index":2003,"title":{},"name":{},"text":{"60":{},"98":{},"100":{},"151":{},"154":{},"156":{},"217":{},"220":{},"222":{}},"component":{}}],["ocp",{"_index":548,"title":{"80-7":{},"133-7":{},"199-7":{}},"name":{},"text":{"2":{},"6":{},"8":{},"13":{},"14":{},"19":{},"39":{},"41":{},"45":{},"49":{},"50":{},"55":{},"75":{},"80":{},"100":{},"108":{},"123":{},"133":{},"156":{},"169":{},"186":{},"199":{},"222":{},"235":{},"252":{}},"component":{}}],["octob",{"_index":2278,"title":{"83-12":{},"136-12":{},"202-12":{}},"name":{},"text":{},"component":{}}],["od",{"_index":264,"title":{"7":{},"46":{},"85":{},"124":{},"125":{},"138":{},"190":{},"191":{},"204":{},"256":{},"257":{},"14-11":{},"14-13":{},"27-9":{},"50-11":{},"50-13":{},"62-9":{},"77-11":{},"78-6":{},"80-23":{},"95-1":{},"98-4":{},"98-5":{},"98-6":{},"111-9":{},"123-7":{},"126-4":{},"126-5":{},"126-6":{},"128-2":{},"128-3":{},"130-9":{},"131-6":{},"133-23":{},"136-2":{},"136-3":{},"149-1":{},"154-4":{},"154-5":{},"154-6":{},"154-7":{},"154-8":{},"154-9":{},"172-9":{},"186-8":{},"192-4":{},"192-5":{},"192-6":{},"194-2":{},"194-3":{},"196-9":{},"197-6":{},"199-23":{},"202-2":{},"202-3":{},"215-1":{},"220-4":{},"220-5":{},"220-6":{},"220-7":{},"220-8":{},"220-9":{},"238-9":{},"252-8":{},"258-4":{},"258-5":{},"258-6":{}},"name":{"124":{},"125":{},"190":{},"191":{},"256":{},"257":{}},"text":{"2":{},"5":{},"6":{},"7":{},"11":{},"14":{},"19":{},"21":{},"22":{},"25":{},"26":{},"41":{},"44":{},"45":{},"46":{},"50":{},"55":{},"57":{},"58":{},"60":{},"61":{},"66":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"92":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"109":{},"110":{},"115":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"140":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"186":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"206":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"252":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["ods.example.com",{"_index":2285,"title":{},"name":{},"text":{"83":{}},"component":{}}],["ods.git",{"_index":2907,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["ods/2.x",{"_index":2144,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["ods/:/opt/provis",{"_index":2113,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["ods/jenkin",{"_index":2422,"title":{},"name":{},"text":{"95":{},"96":{},"99":{},"103":{},"104":{},"105":{},"106":{},"107":{},"149":{},"150":{},"151":{},"155":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"181":{},"215":{},"216":{},"217":{},"221":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"247":{}},"component":{}}],["ods/mast",{"_index":2143,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["ods/od",{"_index":2815,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["ods_git_ref",{"_index":2786,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["ods_image_tag",{"_index":2785,"title":{},"name":{},"text":{"99":{},"128":{},"130":{},"155":{},"194":{},"196":{},"221":{}},"component":{}}],["ods_image_tag=2.x",{"_index":2987,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["ods_namespac",{"_index":2068,"title":{},"name":{},"text":{"77":{},"99":{},"130":{},"155":{},"196":{},"221":{}},"component":{}}],["ods_namespace=cd",{"_index":2120,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["odsbox",{"_index":2809,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["odsbox_quickstart",{"_index":2810,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["odscompon",{"_index":2805,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odscomponentfindopenshiftimageorels",{"_index":3244,"title":{"151-13":{},"217-13":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["odscomponentfindopenshiftimageorelse(context",{"_index":3264,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["odscomponentpipelin",{"_index":2329,"title":{},"name":{},"text":{"87":{},"95":{},"96":{},"97":{},"140":{},"149":{},"151":{},"152":{},"206":{},"215":{},"217":{},"218":{}},"component":{}}],["odscomponentstagebuildopenshiftimag",{"_index":2412,"title":{"96-17":{},"151-21":{},"217-21":{}},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["odscomponentstagebuildopenshiftimage(context",{"_index":2425,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagecopyimag",{"_index":3263,"title":{"151-32":{},"217-32":{}},"name":{},"text":{},"component":{}}],["odscomponentstageimportopenshiftimag",{"_index":2461,"title":{"96-18":{},"151-23":{},"217-23":{}},"name":{},"text":{"96":{}},"component":{}}],["odscomponentstageimportopenshiftimageorels",{"_index":2445,"title":{"96-19":{}},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"215":{},"216":{}},"component":{}}],["odscomponentstageimportopenshiftimageorelse(context",{"_index":2462,"title":{},"name":{},"text":{"96":{}},"component":{}}],["odscomponentstagerolloutopenshiftdeploy",{"_index":2413,"title":{"96-20":{},"151-25":{},"217-25":{}},"name":{},"text":{"95":{},"96":{},"149":{},"150":{},"151":{},"215":{},"216":{},"217":{}},"component":{}}],["odscomponentstagerolloutopenshiftdeployment(context",{"_index":2426,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagescanwithaqua",{"_index":3261,"title":{"151-16":{},"217-16":{}},"name":{},"text":{},"component":{}}],["odscomponentstagescanwithsnyk",{"_index":2411,"title":{"96-16":{},"151-19":{},"217-19":{}},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagescanwithsnyk(context",{"_index":2557,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["odscomponentstagescanwithsonar",{"_index":2352,"title":{"96-15":{},"151-14":{},"217-14":{}},"name":{},"text":{"93":{},"95":{},"96":{},"121":{},"147":{},"149":{},"151":{},"184":{},"213":{},"215":{},"217":{},"250":{}},"component":{}}],["odscomponentstagescanwithsonar(context",{"_index":2424,"title":{},"name":{},"text":{"95":{},"96":{},"149":{},"151":{},"215":{},"217":{}},"component":{}}],["odscomponentstagescanwithtrivi",{"_index":3262,"title":{"151-17":{},"217-17":{}},"name":{},"text":{},"component":{}}],["odscomponentstagescanwithtrivy(context",{"_index":3291,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["odscomponentstageuploadtonexu",{"_index":2414,"title":{"96-21":{},"151-30":{},"217-30":{}},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["odsgitref",{"_index":2764,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsimagetag",{"_index":2633,"title":{},"name":{},"text":{"98":{},"99":{},"154":{},"155":{},"220":{},"221":{}},"component":{}}],["odsnamespac",{"_index":2762,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsnamespace}/jenkin",{"_index":2769,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsorchestrationpipelin",{"_index":2407,"title":{},"name":{},"text":{"95":{},"97":{},"98":{},"149":{},"152":{},"154":{},"215":{},"218":{},"220":{}},"component":{}}],["odspipelin",{"_index":947,"title":{},"name":{"15":{},"51":{}},"text":{"14":{},"15":{},"50":{},"51":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["odsquickstarterpipelin",{"_index":2406,"title":{},"name":{},"text":{"95":{},"97":{},"99":{},"149":{},"152":{},"155":{},"215":{},"218":{},"221":{}},"component":{}}],["odsquickstarterstagecopyfil",{"_index":2757,"title":{"99-7":{},"155-7":{},"221-7":{}},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagecopyfiles(context",{"_index":2771,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagecreateopenshiftresourc",{"_index":2758,"title":{"99-8":{},"155-8":{},"221-8":{}},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagecreateopenshiftresources(context",{"_index":2776,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstageforkod",{"_index":2761,"title":{"99-11":{},"155-11":{},"221-11":{}},"name":{},"text":{},"component":{}}],["odsquickstarterstagerenderjenkinsfil",{"_index":2759,"title":{"99-9":{},"155-9":{},"221-9":{}},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["odsquickstarterstagerenderjenkinsfile(context",{"_index":2777,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstarterstagerendersonarproperti",{"_index":2760,"title":{"99-10":{},"155-10":{},"221-10":{}},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["odsquickstarterstagerendersonarproperties(context",{"_index":2778,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["odsquickstgarterpipelin",{"_index":2779,"title":{},"name":{},"text":{"99":{}},"component":{}}],["odssharedlibvers",{"_index":1055,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["of=mi",{"_index":3404,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["offer",{"_index":705,"title":{},"name":{},"text":{"6":{},"14":{},"15":{},"32":{},"45":{},"47":{},"50":{},"51":{},"68":{},"87":{},"88":{},"95":{},"97":{},"117":{},"136":{},"140":{},"141":{},"149":{},"152":{},"202":{},"206":{},"207":{},"215":{},"218":{}},"component":{}}],["offic",{"_index":2989,"title":{"109-6":{},"170-6":{},"236-6":{}},"name":{},"text":{},"component":{}}],["offici",{"_index":690,"title":{"123-2":{},"186-2":{},"252-2":{}},"name":{},"text":{"6":{},"30":{},"45":{},"64":{},"81":{},"86":{},"95":{},"109":{},"113":{},"123":{},"136":{},"137":{},"139":{},"142":{},"149":{},"150":{},"151":{},"170":{},"174":{},"175":{},"181":{},"186":{},"202":{},"203":{},"205":{},"208":{},"215":{},"216":{},"217":{},"236":{},"240":{},"241":{},"247":{},"252":{}},"component":{}}],["oft",{"_index":444,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["oidc",{"_index":3007,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["ok",{"_index":2884,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["okd",{"_index":566,"title":{},"name":{},"text":{"3":{},"42":{},"90":{},"144":{},"210":{}},"component":{}}],["okhttp3",{"_index":1205,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["okttp3",{"_index":1198,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["old",{"_index":2119,"title":{"83-12":{},"83-13":{},"83-14":{},"136-12":{},"136-13":{},"136-14":{},"202-12":{},"202-13":{},"202-14":{}},"name":{},"text":{"79":{},"95":{},"96":{},"132":{},"149":{},"151":{},"198":{},"215":{},"217":{}},"component":{}}],["older",{"_index":1608,"title":{},"name":{"80":{},"133":{},"199":{}},"text":{"30":{},"64":{},"173":{}},"component":{}}],["on",{"_index":125,"title":{"2-48":{},"41-48":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"12":{},"14":{},"18":{},"21":{},"32":{},"36":{},"41":{},"44":{},"45":{},"47":{},"50":{},"54":{},"57":{},"68":{},"72":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"93":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"108":{},"109":{},"112":{},"117":{},"122":{},"123":{},"126":{},"127":{},"128":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"141":{},"147":{},"149":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"158":{},"169":{},"170":{},"173":{},"174":{},"178":{},"180":{},"181":{},"185":{},"186":{},"189":{},"192":{},"193":{},"194":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"207":{},"213":{},"215":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"224":{},"235":{},"236":{},"239":{},"240":{},"244":{},"246":{},"247":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["onc",{"_index":682,"title":{},"name":{},"text":{"5":{},"6":{},"8":{},"14":{},"16":{},"29":{},"32":{},"36":{},"37":{},"38":{},"44":{},"45":{},"47":{},"50":{},"52":{},"60":{},"63":{},"68":{},"72":{},"73":{},"74":{},"77":{},"80":{},"81":{},"82":{},"87":{},"88":{},"96":{},"98":{},"100":{},"112":{},"117":{},"122":{},"127":{},"128":{},"130":{},"133":{},"135":{},"137":{},"140":{},"141":{},"142":{},"146":{},"150":{},"151":{},"154":{},"156":{},"173":{},"180":{},"185":{},"193":{},"194":{},"196":{},"199":{},"201":{},"203":{},"206":{},"207":{},"208":{},"212":{},"216":{},"217":{},"220":{},"222":{},"239":{},"246":{},"251":{}},"component":{}}],["ongo",{"_index":3158,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["onlin",{"_index":475,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["onlycheckprecondit",{"_index":2891,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["onlycheckpreconditions=tru",{"_index":2807,"title":{"100-10":{},"156-10":{},"222-10":{}},"name":{},"text":{},"component":{}}],["opedevstack",{"_index":2812,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["open",{"_index":320,"title":{},"name":{},"text":{"2":{},"4":{},"5":{},"13":{},"27":{},"35":{},"36":{},"37":{},"41":{},"43":{},"44":{},"49":{},"62":{},"71":{},"72":{},"73":{},"78":{},"81":{},"83":{},"91":{},"93":{},"96":{},"111":{},"121":{},"122":{},"131":{},"136":{},"145":{},"147":{},"151":{},"158":{},"172":{},"174":{},"178":{},"184":{},"185":{},"197":{},"202":{},"211":{},"213":{},"217":{},"224":{},"238":{},"240":{},"244":{},"250":{},"251":{}},"component":{}}],["opendevstack",{"_index":7,"title":{"5":{},"39":{},"44":{},"75":{},"77":{},"80":{},"82":{},"83":{},"94":{},"95":{},"123":{},"130":{},"133":{},"135":{},"136":{},"148":{},"149":{},"150":{},"186":{},"196":{},"199":{},"201":{},"202":{},"214":{},"215":{},"216":{},"252":{},"2-25":{},"2-33":{},"2-57":{},"2-69":{},"5-1":{},"5-2":{},"5-4":{},"5-5":{},"39-9":{},"41-25":{},"41-33":{},"41-57":{},"41-69":{},"44-1":{},"44-2":{},"44-4":{},"44-5":{},"75-9":{},"77-10":{},"78-3":{},"79-2":{},"80-1":{},"80-2":{},"81-1":{},"81-3":{},"83-1":{},"83-2":{},"83-5":{},"130-7":{},"131-3":{},"132-2":{},"133-1":{},"133-2":{},"136-1":{},"136-4":{},"196-7":{},"197-3":{},"198-2":{},"199-1":{},"199-2":{},"202-1":{},"202-4":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"6":{},"19":{},"20":{},"22":{},"25":{},"27":{},"39":{},"40":{},"41":{},"43":{},"44":{},"45":{},"47":{},"55":{},"56":{},"58":{},"62":{},"66":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"86":{},"88":{},"91":{},"94":{},"95":{},"97":{},"98":{},"100":{},"101":{},"102":{},"108":{},"111":{},"115":{},"126":{},"127":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"139":{},"141":{},"145":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"156":{},"157":{},"158":{},"169":{},"172":{},"177":{},"189":{},"192":{},"193":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"205":{},"207":{},"211":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"222":{},"223":{},"224":{},"235":{},"238":{},"243":{},"255":{},"258":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"209":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{}}}],["opendevstack.admin",{"_index":312,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["opendevstack/od",{"_index":2903,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["opendevstack](https://www.opendevstack.org",{"_index":3762,"title":{},"name":{},"text":{"240":{}},"component":{}}],["openid",{"_index":314,"title":{},"name":{},"text":{"2":{},"41":{},"78":{},"131":{},"197":{}},"component":{}}],["openidc",{"_index":3001,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["openjdk",{"_index":3473,"title":{},"name":{},"text":{"161":{},"227":{},"234":{}},"component":{}}],["openresti",{"_index":829,"title":{"12":{}},"name":{"12":{}},"text":{"11":{},"12":{},"109":{},"170":{},"236":{}},"component":{}}],["openresty/nginx",{"_index":3508,"title":{},"name":{},"text":{"170":{},"236":{}},"component":{}}],["openshift",{"_index":155,"title":{"24":{},"60":{},"153":{},"219":{},"14-15":{},"24-3":{},"50-15":{},"60-3":{},"77-8":{},"77-10":{},"79-6":{},"96-9":{},"98-24":{},"100-2":{},"127-2":{},"130-7":{},"132-6":{},"151-9":{},"154-29":{},"156-2":{},"193-2":{},"196-7":{},"198-6":{},"217-9":{},"220-29":{},"222-2":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"13":{},"14":{},"15":{},"18":{},"19":{},"21":{},"22":{},"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"42":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"51":{},"54":{},"55":{},"57":{},"58":{},"60":{},"62":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"111":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"121":{},"122":{},"123":{},"126":{},"127":{},"130":{},"132":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"144":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"196":{},"198":{},"199":{},"202":{},"204":{},"205":{},"206":{},"207":{},"210":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["openshift.default.svc.cluster.loc",{"_index":778,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["openshift/template.yml",{"_index":2496,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["openshift_api_host",{"_index":777,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["openshift_api_url",{"_index":1054,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["openshiftbuildtimeout",{"_index":1059,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["openshiftdir",{"_index":2567,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["openshifthost",{"_index":1052,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["openshiftifi",{"_index":1460,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["openshiftproject",{"_index":669,"title":{},"name":{},"text":{"5":{},"22":{},"44":{},"58":{}},"component":{}}],["openshiftrollouttimeout",{"_index":2474,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["openshiftrollouttimeoutminut",{"_index":3425,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["openshiftrollouttimeoutretri",{"_index":3427,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["opensourc",{"_index":3255,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["openssl",{"_index":3760,"title":{"240-10":{},"240-12":{},"240-13":{},"240-14":{},"240-15":{}},"name":{},"text":{"240":{}},"component":{}}],["oper",{"_index":265,"title":{},"name":{},"text":{"2":{},"19":{},"24":{},"28":{},"32":{},"41":{},"55":{},"60":{},"65":{},"68":{},"80":{},"98":{},"100":{},"114":{},"117":{},"133":{},"153":{},"154":{},"156":{},"176":{},"199":{},"219":{},"220":{},"222":{},"242":{}},"component":{}}],["opm",{"_index":2997,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["opposit",{"_index":2707,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["opt",{"_index":2394,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["opt/app",{"_index":2005,"title":{},"name":{},"text":{"67":{},"116":{},"178":{},"244":{}},"component":{}}],["opt/provision/histori",{"_index":2115,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["opt/provision/history/log",{"_index":1298,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["opt/sonarqube/data/es6",{"_index":2129,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["optim",{"_index":2629,"title":{"98-13":{},"154-16":{},"220-16":{}},"name":{},"text":{"121":{},"184":{},"250":{}},"component":{}}],["option",{"_index":96,"title":{"2-18":{},"41-18":{},"96-2":{},"99-2":{},"100-10":{},"127-2":{},"127-3":{},"150-6":{},"151-2":{},"151-15":{},"151-18":{},"151-20":{},"151-22":{},"151-24":{},"151-28":{},"151-31":{},"151-33":{},"155-2":{},"156-10":{},"193-2":{},"193-3":{},"216-6":{},"217-2":{},"217-15":{},"217-18":{},"217-20":{},"217-22":{},"217-24":{},"217-28":{},"217-31":{},"217-33":{},"221-2":{},"222-10":{}},"name":{},"text":{"2":{},"14":{},"18":{},"19":{},"20":{},"22":{},"27":{},"41":{},"47":{},"50":{},"54":{},"55":{},"56":{},"58":{},"62":{},"78":{},"80":{},"83":{},"87":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"114":{},"127":{},"131":{},"133":{},"136":{},"140":{},"141":{},"147":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"172":{},"176":{},"193":{},"197":{},"199":{},"202":{},"206":{},"207":{},"213":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"238":{},"242":{}},"component":{}}],["optionali",{"_index":1500,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["orchestr",{"_index":1136,"title":{"98":{},"154":{},"220":{}},"name":{"98":{},"154":{},"220":{}},"text":{"19":{},"21":{},"55":{},"57":{},"83":{},"95":{},"97":{},"98":{},"100":{},"126":{},"136":{},"149":{},"150":{},"152":{},"153":{},"154":{},"156":{},"192":{},"202":{},"215":{},"216":{},"218":{},"219":{},"220":{},"222":{},"258":{}},"component":{}}],["order",{"_index":386,"title":{},"name":{},"text":{"2":{},"12":{},"32":{},"39":{},"41":{},"47":{},"68":{},"75":{},"76":{},"77":{},"81":{},"88":{},"94":{},"98":{},"100":{},"101":{},"108":{},"109":{},"117":{},"120":{},"126":{},"127":{},"129":{},"141":{},"146":{},"148":{},"151":{},"153":{},"154":{},"156":{},"157":{},"169":{},"170":{},"180":{},"182":{},"183":{},"192":{},"193":{},"195":{},"207":{},"212":{},"214":{},"217":{},"219":{},"220":{},"222":{},"223":{},"235":{},"236":{},"246":{},"248":{},"249":{},"258":{}},"component":{}}],["order(ordered.highest_preced",{"_index":1191,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org",{"_index":638,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"136":{},"202":{}},"component":{}}],["org.hibernate.dialect.postgresqldialect",{"_index":307,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["org.ods.services.bitbucketservic",{"_index":2542,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["org.ods.services.gitservice.mergedissueid(context.projectid",{"_index":2525,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["org.ods.services.serviceregistri",{"_index":2541,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["org.opendevstack",{"_index":1035,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["org.opendevstack.${context.projectid",{"_index":3345,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["org.opendevstack.${projectid",{"_index":2620,"title":{},"name":{},"text":{"96":{}},"component":{}}],["org.opendevstack.provision.authentication.crowd",{"_index":1178,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.authentication.crowd.crowdsecurityconfiguration.java",{"_index":1179,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.authentication.oauth2",{"_index":1189,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.authentication.oauth2.oauth2securityconfiguration.java",{"_index":1190,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["org.opendevstack.provision.services.baseserviceadapter#authenticatedcal",{"_index":1275,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["org.postgresql.driv",{"_index":302,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["org/mi",{"_index":2639,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["org/phoenix",{"_index":2655,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["organ",{"_index":1619,"title":{"82-2":{},"135-2":{},"201-2":{}},"name":{},"text":{"31":{},"32":{},"67":{},"68":{},"116":{},"117":{},"178":{},"244":{}},"component":{}}],["organis",{"_index":1079,"title":{"98-19":{},"154-22":{},"220-22":{}},"name":{},"text":{"14":{},"50":{},"81":{},"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["origin",{"_index":2018,"title":{},"name":{},"text":{"76":{},"77":{},"80":{},"81":{},"97":{},"98":{},"126":{},"128":{},"129":{},"130":{},"133":{},"152":{},"154":{},"192":{},"194":{},"195":{},"196":{},"199":{},"218":{},"220":{},"258":{}},"component":{}}],["origin/2.x",{"_index":2228,"title":{},"name":{},"text":{"81":{}},"component":{}}],["os",{"_index":3793,"title":{},"name":{},"text":{"240":{}},"component":{}}],["os,librari",{"_index":3302,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["other",{"_index":2677,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["otherwis",{"_index":1416,"title":{},"name":{},"text":{"24":{},"27":{},"32":{},"47":{},"60":{},"62":{},"68":{},"80":{},"88":{},"94":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"117":{},"130":{},"133":{},"141":{},"148":{},"149":{},"151":{},"154":{},"157":{},"169":{},"172":{},"196":{},"199":{},"207":{},"214":{},"215":{},"217":{},"220":{},"223":{},"235":{},"238":{}},"component":{}}],["ouput",{"_index":2497,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["out",{"_index":146,"title":{"2-69":{},"41-69":{}},"name":{},"text":{"2":{},"19":{},"20":{},"32":{},"36":{},"37":{},"38":{},"39":{},"41":{},"55":{},"56":{},"68":{},"72":{},"73":{},"74":{},"75":{},"77":{},"81":{},"83":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"115":{},"117":{},"122":{},"123":{},"128":{},"130":{},"136":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"177":{},"185":{},"186":{},"194":{},"196":{},"202":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"240":{},"243":{},"251":{},"252":{}},"component":{}}],["outdat",{"_index":2007,"title":{},"name":{},"text":{"76":{},"96":{},"129":{},"151":{},"195":{},"217":{}},"component":{}}],["outdir",{"_index":3067,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["outlin",{"_index":2116,"title":{},"name":{},"text":{"79":{},"95":{},"98":{},"128":{},"132":{},"149":{},"154":{},"194":{},"198":{},"215":{},"220":{}},"component":{}}],["output",{"_index":1556,"title":{},"name":{},"text":{"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"63":{},"65":{},"71":{},"72":{},"73":{},"74":{},"80":{},"98":{},"100":{},"113":{},"114":{},"121":{},"122":{},"133":{},"154":{},"156":{},"174":{},"175":{},"176":{},"184":{},"185":{},"199":{},"220":{},"222":{},"240":{},"241":{},"242":{},"250":{},"251":{}},"component":{}}],["outsid",{"_index":783,"title":{},"name":{},"text":{"8":{},"32":{},"47":{},"68":{},"88":{},"95":{},"96":{},"117":{},"141":{},"149":{},"151":{},"207":{},"215":{},"217":{}},"component":{}}],["over",{"_index":1622,"title":{},"name":{},"text":{"31":{},"34":{},"70":{},"119":{},"150":{},"172":{},"173":{},"175":{},"176":{},"216":{},"238":{},"239":{},"241":{},"242":{}},"component":{}}],["overcom",{"_index":2744,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["overflood",{"_index":3683,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["overlap",{"_index":3183,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["overrid",{"_index":1506,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["overridden",{"_index":3396,"title":{},"name":{},"text":{"153":{},"157":{},"219":{},"223":{}},"component":{}}],["overview",{"_index":343,"title":{"22":{},"58":{},"39-1":{},"75-1":{},"123-1":{},"136-3":{},"153-1":{},"186-1":{},"189-1":{},"202-3":{},"219-1":{},"252-1":{},"255-1":{}},"name":{},"text":{"2":{},"39":{},"41":{},"75":{},"123":{},"186":{},"252":{}},"component":{}}],["overwrit",{"_index":1153,"title":{"101-7":{},"157-10":{},"223-10":{}},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["overwritten",{"_index":2926,"title":{},"name":{},"text":{"101":{},"157":{},"181":{},"223":{},"247":{}},"component":{}}],["owasp",{"_index":720,"title":{},"name":{},"text":{"6":{},"7":{},"11":{},"12":{},"45":{},"46":{}},"component":{}}],["owasp_modsecurity_crs_version=\"3.0.2",{"_index":880,"title":{},"name":{},"text":{"12":{}},"component":{}}],["own",{"_index":2024,"title":{},"name":{},"text":{"76":{},"81":{},"128":{},"129":{},"194":{},"195":{}},"component":{}}],["owner",{"_index":2127,"title":{},"name":{},"text":{"79":{},"101":{},"128":{},"132":{},"157":{},"194":{},"198":{},"223":{}},"component":{}}],["p",{"_index":2016,"title":{},"name":{},"text":{"76":{},"77":{},"93":{},"96":{},"98":{},"129":{},"130":{},"137":{},"142":{},"146":{},"147":{},"151":{},"154":{},"181":{},"195":{},"196":{},"203":{},"208":{},"212":{},"213":{},"217":{},"220":{},"247":{}},"component":{}}],["packag",{"_index":228,"title":{"161-4":{},"227-4":{},"234-4":{}},"name":{},"text":{"2":{},"19":{},"24":{},"26":{},"28":{},"29":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"41":{},"55":{},"60":{},"61":{},"63":{},"65":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"77":{},"95":{},"96":{},"98":{},"99":{},"100":{},"103":{},"110":{},"112":{},"114":{},"117":{},"119":{},"121":{},"122":{},"130":{},"149":{},"151":{},"154":{},"155":{},"156":{},"159":{},"161":{},"171":{},"173":{},"174":{},"176":{},"177":{},"179":{},"180":{},"184":{},"185":{},"196":{},"215":{},"217":{},"220":{},"221":{},"222":{},"225":{},"237":{},"239":{},"240":{},"242":{},"243":{},"245":{},"246":{},"250":{},"251":{}},"component":{}}],["package.json",{"_index":1538,"title":{},"name":{},"text":{"28":{},"34":{},"35":{},"36":{},"37":{},"38":{},"65":{},"70":{},"71":{},"72":{},"73":{},"74":{},"114":{},"119":{},"121":{},"122":{},"176":{},"181":{},"184":{},"185":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["package_nam",{"_index":2784,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["packagenam",{"_index":2783,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["page",{"_index":194,"title":{},"name":{},"text":{"2":{},"14":{},"36":{},"41":{},"50":{},"72":{},"76":{},"79":{},"83":{},"96":{},"100":{},"101":{},"120":{},"122":{},"129":{},"132":{},"136":{},"151":{},"156":{},"157":{},"183":{},"189":{},"195":{},"198":{},"202":{},"217":{},"222":{},"223":{},"249":{},"255":{}},"component":{}}],["pagenotfound.j",{"_index":1860,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["pahs",{"_index":759,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["pain",{"_index":1194,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["pair",{"_index":1258,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"151":{},"157":{},"217":{},"223":{}},"component":{}}],["panda",{"_index":1665,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"180":{},"246":{}},"component":{}}],["paragraph",{"_index":318,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["parallel",{"_index":2627,"title":{"98-11":{},"126-11":{},"154-14":{},"192-11":{},"220-14":{},"258-11":{}},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["param",{"_index":1097,"title":{},"name":{},"text":{"14":{},"18":{},"47":{},"50":{},"54":{},"77":{},"80":{},"88":{},"98":{},"100":{},"108":{},"130":{},"133":{},"141":{},"154":{},"156":{},"169":{},"196":{},"199":{},"207":{},"220":{},"222":{},"235":{}},"component":{}}],["param=valu",{"_index":2732,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["paramet",{"_index":786,"title":{"47-4":{},"88-4":{},"141-4":{},"207-4":{}},"name":{},"text":{"8":{},"19":{},"22":{},"34":{},"39":{},"47":{},"55":{},"58":{},"70":{},"75":{},"77":{},"79":{},"80":{},"87":{},"88":{},"93":{},"96":{},"98":{},"99":{},"100":{},"119":{},"126":{},"128":{},"130":{},"132":{},"133":{},"140":{},"141":{},"147":{},"151":{},"153":{},"154":{},"155":{},"156":{},"181":{},"182":{},"187":{},"188":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"206":{},"207":{},"213":{},"217":{},"219":{},"220":{},"221":{},"222":{},"247":{},"248":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["parameter",{"_index":2750,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["parametr",{"_index":2722,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["pars",{"_index":2533,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["part",{"_index":4,"title":{"5-2":{},"44-2":{},"83-5":{},"136-4":{},"202-4":{}},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"22":{},"40":{},"41":{},"45":{},"47":{},"50":{},"58":{},"76":{},"80":{},"85":{},"88":{},"94":{},"96":{},"98":{},"101":{},"126":{},"129":{},"133":{},"136":{},"138":{},"141":{},"142":{},"148":{},"151":{},"153":{},"154":{},"157":{},"189":{},"192":{},"195":{},"199":{},"202":{},"204":{},"207":{},"208":{},"214":{},"217":{},"219":{},"220":{},"223":{},"255":{},"258":{}},"component":{}}],["parti",{"_index":766,"title":{"20-4":{},"56-4":{},"101-14":{},"157-17":{},"223-17":{}},"name":{},"text":{"7":{},"14":{},"16":{},"20":{},"27":{},"46":{},"50":{},"52":{},"56":{},"62":{},"85":{},"96":{},"101":{},"111":{},"138":{},"151":{},"157":{},"172":{},"204":{},"217":{},"223":{},"238":{}},"component":{}}],["partial",{"_index":2628,"title":{"98-12":{},"154-15":{},"220-15":{}},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["particular",{"_index":1252,"title":{},"name":{},"text":{"20":{},"56":{},"95":{},"101":{},"149":{},"157":{},"215":{},"223":{}},"component":{}}],["partof",{"_index":3379,"title":{"189-9":{},"255-9":{}},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["pass",{"_index":508,"title":{},"name":{},"text":{"2":{},"8":{},"14":{},"22":{},"25":{},"36":{},"37":{},"41":{},"47":{},"50":{},"58":{},"66":{},"72":{},"73":{},"88":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"115":{},"122":{},"141":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"177":{},"180":{},"181":{},"185":{},"207":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"243":{},"246":{},"247":{},"251":{}},"component":{}}],["password",{"_index":243,"title":{},"name":{},"text":{"2":{},"11":{},"13":{},"14":{},"20":{},"22":{},"32":{},"41":{},"49":{},"50":{},"56":{},"58":{},"68":{},"77":{},"78":{},"80":{},"92":{},"95":{},"96":{},"98":{},"101":{},"117":{},"130":{},"131":{},"133":{},"146":{},"149":{},"151":{},"154":{},"157":{},"196":{},"197":{},"199":{},"212":{},"215":{},"217":{},"220":{},"223":{}},"component":{}}],["past",{"_index":409,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["patch",{"_index":1621,"title":{"80-26":{},"133-26":{},"199-26":{}},"name":{},"text":{"31":{},"80":{},"128":{},"133":{},"194":{},"199":{}},"component":{}}],["path",{"_index":170,"title":{},"name":{},"text":{"2":{},"8":{},"20":{},"31":{},"41":{},"47":{},"56":{},"67":{},"80":{},"88":{},"93":{},"96":{},"98":{},"101":{},"115":{},"116":{},"126":{},"128":{},"130":{},"133":{},"141":{},"147":{},"151":{},"154":{},"157":{},"177":{},"178":{},"192":{},"194":{},"196":{},"199":{},"207":{},"213":{},"217":{},"220":{},"223":{},"243":{},"244":{},"258":{}},"component":{}}],["paths=al",{"_index":3304,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["patient",{"_index":291,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["pattern",{"_index":2650,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["paus",{"_index":510,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"219":{}},"component":{}}],["payload",{"_index":1733,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"88":{},"100":{},"101":{},"117":{},"141":{},"156":{},"157":{},"207":{},"222":{},"223":{}},"component":{}}],["payload.json",{"_index":2824,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["peopl",{"_index":642,"title":{},"name":{},"text":{"5":{},"22":{},"44":{},"58":{},"83":{},"124":{},"125":{},"190":{},"191":{},"256":{},"257":{}},"component":{}}],["pep",{"_index":1584,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["pep8",{"_index":1587,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["per",{"_index":985,"title":{"101-7":{},"157-10":{},"223-10":{}},"name":{},"text":{"14":{},"16":{},"20":{},"21":{},"27":{},"47":{},"50":{},"52":{},"56":{},"57":{},"62":{},"80":{},"88":{},"96":{},"98":{},"101":{},"111":{},"133":{},"141":{},"150":{},"151":{},"153":{},"154":{},"157":{},"172":{},"199":{},"207":{},"216":{},"217":{},"219":{},"220":{},"223":{},"238":{}},"component":{}}],["perform",{"_index":859,"title":{"12-4":{},"13-4":{},"49-4":{},"98-13":{},"154-16":{},"220-16":{}},"name":{},"text":{"12":{},"13":{},"32":{},"49":{},"68":{},"79":{},"83":{},"93":{},"96":{},"98":{},"117":{},"132":{},"136":{},"147":{},"150":{},"151":{},"153":{},"154":{},"174":{},"181":{},"189":{},"198":{},"202":{},"213":{},"216":{},"217":{},"219":{},"220":{},"240":{},"247":{},"255":{}},"component":{}}],["periodsecond",{"_index":2608,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["permiss",{"_index":116,"title":{"2-32":{},"2-43":{},"2-56":{},"4-3":{},"22-3":{},"41-32":{},"41-43":{},"41-56":{},"43-3":{},"58-3":{},"91-3":{},"101-2":{},"101-4":{},"101-5":{},"101-7":{},"145-3":{},"157-2":{},"157-3":{},"157-7":{},"157-8":{},"157-10":{},"211-3":{},"223-2":{},"223-3":{},"223-7":{},"223-8":{},"223-10":{}},"name":{},"text":{"2":{},"4":{},"22":{},"29":{},"41":{},"43":{},"58":{},"63":{},"77":{},"79":{},"80":{},"81":{},"91":{},"98":{},"101":{},"112":{},"130":{},"132":{},"133":{},"145":{},"157":{},"158":{},"173":{},"196":{},"198":{},"199":{},"211":{},"223":{},"224":{},"239":{}},"component":{}}],["permissionset",{"_index":1326,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["persist",{"_index":442,"title":{},"name":{},"text":{"2":{},"14":{},"31":{},"41":{},"50":{},"67":{},"96":{},"99":{},"116":{},"151":{},"153":{},"155":{},"178":{},"189":{},"217":{},"219":{},"221":{},"244":{},"255":{}},"component":{}}],["person",{"_index":512,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["perspect",{"_index":2293,"title":{},"name":{},"text":{"83":{},"128":{},"136":{},"194":{},"202":{}},"component":{}}],["phase",{"_index":1752,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"150":{},"216":{}},"component":{}}],["philosophi",{"_index":2262,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["phoenix",{"_index":2637,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["pick",{"_index":674,"title":{},"name":{},"text":{"5":{},"6":{},"22":{},"39":{},"44":{},"45":{},"58":{},"75":{},"79":{},"81":{},"85":{},"98":{},"102":{},"108":{},"114":{},"128":{},"132":{},"138":{},"154":{},"169":{},"176":{},"194":{},"198":{},"204":{},"220":{},"235":{},"242":{}},"component":{}}],["pictur",{"_index":3195,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["piec",{"_index":3738,"title":{},"name":{},"text":{"189":{},"240":{},"255":{}},"component":{}}],["pin",{"_index":1908,"title":{},"name":{},"text":{"38":{},"74":{},"83":{},"136":{},"202":{}},"component":{}}],["pip",{"_index":1578,"title":{},"name":{},"text":{"29":{},"63":{},"95":{},"106":{},"112":{},"149":{},"166":{},"173":{},"178":{},"180":{},"215":{},"232":{},"239":{},"244":{},"246":{}},"component":{}}],["pipelin",{"_index":679,"title":{"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{},"14-13":{},"50-13":{},"93-2":{},"95-4":{},"96-2":{},"96-3":{},"96-11":{},"99-2":{},"99-3":{},"147-2":{},"149-4":{},"151-2":{},"151-3":{},"151-11":{},"155-2":{},"155-3":{},"213-2":{},"215-4":{},"217-2":{},"217-3":{},"217-11":{},"221-2":{},"221-3":{}},"name":{"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"text":{"5":{},"6":{},"8":{},"14":{},"15":{},"22":{},"24":{},"27":{},"28":{},"29":{},"31":{},"32":{},"33":{},"36":{},"37":{},"44":{},"45":{},"47":{},"50":{},"51":{},"58":{},"60":{},"62":{},"63":{},"65":{},"67":{},"68":{},"69":{},"72":{},"73":{},"77":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"108":{},"111":{},"112":{},"114":{},"116":{},"117":{},"118":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"172":{},"173":{},"174":{},"176":{},"178":{},"179":{},"182":{},"184":{},"185":{},"186":{},"187":{},"188":{},"192":{},"194":{},"196":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"238":{},"239":{},"240":{},"242":{},"244":{},"245":{},"248":{},"250":{},"251":{},"252":{},"253":{},"254":{},"258":{}},"component":{}}],["pipeline.git",{"_index":2652,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["pipeline.html#_odscomponentstagescanwithsonar",{"_index":3224,"title":{},"name":{},"text":{"147":{},"213":{}},"component":{}}],["pipeline.yml",{"_index":2174,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["pipeline/stag",{"_index":2427,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["pkgtype",{"_index":3741,"title":{},"name":{},"text":{"217":{}},"component":{}}],["plabyook",{"_index":66,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["place",{"_index":445,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"26":{},"41":{},"44":{},"50":{},"61":{},"80":{},"83":{},"96":{},"99":{},"100":{},"108":{},"110":{},"115":{},"128":{},"133":{},"151":{},"153":{},"155":{},"156":{},"169":{},"171":{},"177":{},"194":{},"199":{},"217":{},"219":{},"221":{},"222":{},"235":{},"237":{},"243":{}},"component":{}}],["plain",{"_index":677,"title":{"25":{},"66":{},"115":{},"177":{},"243":{}},"name":{"25":{},"61":{},"66":{},"110":{},"115":{},"171":{},"177":{},"237":{},"243":{}},"text":{"5":{},"25":{},"44":{},"66":{},"83":{},"100":{},"101":{},"114":{},"115":{},"150":{},"156":{},"157":{},"158":{},"176":{},"177":{},"216":{},"222":{},"223":{},"224":{},"242":{},"243":{}},"component":{}}],["plan",{"_index":2300,"title":{},"name":{},"text":{"83":{},"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["platform",{"_index":254,"title":{},"name":{},"text":{"2":{},"13":{},"36":{},"41":{},"49":{},"72":{},"77":{},"93":{},"109":{},"122":{},"130":{},"136":{},"147":{},"151":{},"157":{},"170":{},"185":{},"196":{},"202":{},"213":{},"217":{},"223":{},"236":{},"251":{}},"component":{}}],["platform/3.11/rest_api/api",{"_index":1975,"title":{},"name":{},"text":{"47":{},"88":{},"141":{},"207":{}},"component":{}}],["platform/latest/applications/deployments/what",{"_index":3232,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["platformruntim",{"_index":2866,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["play",{"_index":3043,"title":{"113":{},"175":{},"241":{}},"name":{"113":{},"175":{},"241":{}},"text":{"113":{},"136":{},"151":{},"153":{},"175":{},"189":{},"202":{},"217":{},"219":{},"241":{},"255":{}},"component":{}}],["playbook",{"_index":1,"title":{"1-1":{},"4-4":{},"40-1":{},"43-4":{},"76-1":{},"91-4":{},"129-1":{},"145-4":{},"195-1":{},"211-4":{}},"name":{},"text":{"1":{},"4":{},"40":{},"43":{},"76":{},"82":{},"83":{},"91":{},"129":{},"135":{},"145":{},"195":{},"201":{},"211":{}},"component":{}}],["playframework",{"_index":3042,"title":{"113":{},"175":{},"241":{}},"name":{},"text":{},"component":{}}],["pleas",{"_index":251,"title":{},"name":{},"text":{"2":{},"13":{},"14":{},"27":{},"29":{},"31":{},"32":{},"34":{},"38":{},"39":{},"41":{},"49":{},"50":{},"62":{},"63":{},"67":{},"68":{},"70":{},"74":{},"75":{},"76":{},"77":{},"81":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"109":{},"111":{},"116":{},"117":{},"119":{},"121":{},"122":{},"129":{},"130":{},"134":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"162":{},"163":{},"164":{},"165":{},"170":{},"172":{},"178":{},"180":{},"181":{},"184":{},"185":{},"195":{},"196":{},"200":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"228":{},"229":{},"230":{},"231":{},"236":{},"238":{},"240":{},"244":{},"246":{},"247":{},"250":{},"251":{}},"component":{}}],["please",{"_index":3126,"title":{},"name":{},"text":{"123":{},"186":{},"252":{}},"component":{}}],["plot",{"_index":3629,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["plotli",{"_index":3633,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["plug",{"_index":1464,"title":{},"name":{},"text":{"25":{},"66":{}},"component":{}}],["plugin",{"_index":142,"title":{"2-65":{},"6-2":{},"7-2":{},"41-65":{},"45-2":{},"46-2":{},"87-1":{},"93-3":{},"140-1":{},"146-1":{},"147-3":{},"206-1":{},"212-1":{},"213-3":{}},"name":{},"text":{"2":{},"6":{},"7":{},"13":{},"14":{},"27":{},"34":{},"38":{},"41":{},"45":{},"46":{},"47":{},"49":{},"50":{},"62":{},"70":{},"74":{},"85":{},"87":{},"88":{},"92":{},"93":{},"96":{},"99":{},"111":{},"115":{},"119":{},"138":{},"140":{},"141":{},"146":{},"147":{},"150":{},"151":{},"155":{},"172":{},"177":{},"181":{},"204":{},"206":{},"207":{},"212":{},"213":{},"216":{},"217":{},"221":{},"238":{},"243":{},"247":{}},"component":{}}],["plugin#constraint",{"_index":1984,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["plugins.sbt",{"_index":1601,"title":{},"name":{},"text":{"30":{},"64":{},"113":{},"175":{},"241":{}},"component":{}}],["pmc",{"_index":3176,"title":{},"name":{},"text":{"134":{},"200":{}},"component":{}}],["pod",{"_index":617,"title":{},"name":{},"text":{"4":{},"14":{},"21":{},"24":{},"31":{},"32":{},"33":{},"43":{},"50":{},"57":{},"60":{},"67":{},"68":{},"69":{},"79":{},"91":{},"95":{},"96":{},"98":{},"99":{},"101":{},"102":{},"108":{},"116":{},"117":{},"118":{},"128":{},"132":{},"145":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"178":{},"179":{},"180":{},"194":{},"198":{},"211":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"244":{},"245":{},"246":{}},"component":{}}],["podalwayspullimag",{"_index":1016,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["podcontain",{"_index":1006,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podlabel",{"_index":1007,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podserviceaccount",{"_index":1018,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podtempl",{"_index":1063,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["podvolum",{"_index":1014,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["point",{"_index":354,"title":{},"name":{},"text":{"2":{},"14":{},"24":{},"29":{},"39":{},"41":{},"60":{},"63":{},"75":{},"77":{},"80":{},"81":{},"83":{},"94":{},"95":{},"98":{},"100":{},"108":{},"112":{},"128":{},"130":{},"133":{},"136":{},"148":{},"149":{},"150":{},"154":{},"156":{},"169":{},"173":{},"194":{},"196":{},"199":{},"202":{},"214":{},"215":{},"216":{},"220":{},"222":{},"235":{},"239":{}},"component":{}}],["pointer",{"_index":1251,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["pojo",{"_index":1203,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["pojo('",{"_index":1202,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["polici",{"_index":476,"title":{},"name":{},"text":{"2":{},"41":{},"79":{},"80":{},"94":{},"132":{},"133":{},"148":{},"198":{},"199":{},"214":{}},"component":{}}],["polish",{"_index":2678,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["pollut",{"_index":2229,"title":{},"name":{},"text":{"81":{},"96":{},"151":{},"217":{}},"component":{}}],["polyfills.t",{"_index":1809,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["popul",{"_index":3192,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["port",{"_index":223,"title":{},"name":{},"text":{"2":{},"29":{},"32":{},"41":{},"63":{},"68":{},"109":{},"117":{},"170":{},"236":{}},"component":{}}],["portabl",{"_index":1489,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["posit",{"_index":387,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["posix",{"_index":2250,"title":{},"name":{},"text":{"81":{}},"component":{}}],["possibl",{"_index":71,"title":{},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"14":{},"21":{},"32":{},"34":{},"40":{},"41":{},"43":{},"44":{},"47":{},"50":{},"57":{},"68":{},"70":{},"76":{},"83":{},"88":{},"91":{},"94":{},"96":{},"97":{},"98":{},"99":{},"101":{},"102":{},"109":{},"117":{},"119":{},"123":{},"129":{},"136":{},"141":{},"145":{},"148":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"158":{},"170":{},"181":{},"186":{},"189":{},"195":{},"202":{},"207":{},"211":{},"214":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"224":{},"236":{},"247":{},"252":{},"255":{}},"component":{}}],["post",{"_index":706,"title":{"47-2":{},"47-3":{},"88-2":{},"88-3":{},"141-2":{},"141-3":{},"181-6":{},"207-2":{},"207-3":{},"247-6":{}},"name":{},"text":{"6":{},"19":{},"22":{},"32":{},"45":{},"55":{},"58":{},"68":{},"80":{},"87":{},"100":{},"101":{},"117":{},"133":{},"140":{},"156":{},"157":{},"181":{},"199":{},"206":{},"222":{},"223":{},"247":{}},"component":{}}],["postcomment(str",{"_index":2537,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["postcommit",{"_index":2179,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["postgr",{"_index":2121,"title":{},"name":{},"text":{"79":{},"132":{},"198":{},"240":{}},"component":{}}],["postgresql",{"_index":43,"title":{},"name":{},"text":{"1":{},"2":{},"24":{},"40":{},"41":{},"60":{},"76":{},"129":{},"195":{}},"component":{}}],["postgresql.yml",{"_index":41,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["potenti",{"_index":1692,"title":{},"name":{},"text":{"32":{},"68":{},"96":{},"117":{},"123":{},"128":{},"186":{},"194":{},"252":{}},"component":{}}],["power",{"_index":1286,"title":{},"name":{},"text":{"21":{},"28":{},"57":{},"65":{},"102":{},"114":{},"158":{},"176":{},"224":{},"242":{}},"component":{}}],["pr",{"_index":2540,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["practic",{"_index":1669,"title":{},"name":{},"text":{"32":{},"36":{},"37":{},"68":{},"72":{},"73":{},"82":{},"117":{},"122":{},"127":{},"135":{},"185":{},"193":{},"201":{},"251":{}},"component":{}}],["pre",{"_index":1735,"title":{"100-8":{},"156-8":{},"222-8":{}},"name":{},"text":{"32":{},"36":{},"37":{},"68":{},"72":{},"73":{},"83":{},"100":{},"105":{},"117":{},"122":{},"136":{},"156":{},"162":{},"163":{},"164":{},"165":{},"170":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"202":{},"222":{},"228":{},"229":{},"230":{},"231":{},"236":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["prebuilt",{"_index":2351,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["preced",{"_index":3269,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["precondit",{"_index":2883,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["preconfigur",{"_index":1485,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["prediciton",{"_index":1734,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["predict",{"_index":1629,"title":{"32-15":{},"32-17":{},"68-15":{},"68-17":{},"117-15":{},"117-17":{}},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["prefer",{"_index":414,"title":{},"name":{},"text":{"2":{},"32":{},"36":{},"41":{},"68":{},"72":{},"117":{},"122":{},"185":{},"187":{},"188":{},"251":{},"253":{},"254":{}},"component":{}}],["prefix",{"_index":775,"title":{},"name":{},"text":{"8":{},"14":{},"18":{},"47":{},"50":{},"54":{},"88":{},"96":{},"141":{},"150":{},"151":{},"207":{},"216":{},"217":{}},"component":{}}],["prem",{"_index":3414,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["prep_and_predict",{"_index":1667,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["prep_and_train",{"_index":1664,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["prepar",{"_index":87,"title":{"2-11":{},"2-57":{},"2-63":{},"41-11":{},"41-57":{},"41-63":{},"80-19":{},"127-1":{},"133-19":{},"193-1":{},"199-19":{}},"name":{},"text":{"2":{},"27":{},"32":{},"41":{},"62":{},"68":{},"77":{},"79":{},"111":{},"112":{},"117":{},"130":{},"132":{},"172":{},"173":{},"180":{},"196":{},"198":{},"238":{},"239":{},"240":{},"246":{}},"component":{}}],["prerequisit",{"_index":2030,"title":{"77-1":{},"130-1":{},"196-1":{}},"name":{},"text":{},"component":{}}],["presenc",{"_index":2169,"title":{},"name":{},"text":{"80":{},"85":{},"95":{},"133":{},"138":{},"149":{},"199":{},"204":{},"215":{}},"component":{}}],["present",{"_index":2056,"title":{},"name":{},"text":{"77":{},"80":{},"82":{},"95":{},"96":{},"98":{},"99":{},"130":{},"133":{},"135":{},"149":{},"150":{},"151":{},"154":{},"155":{},"196":{},"199":{},"201":{},"215":{},"216":{},"217":{},"220":{},"221":{}},"component":{}}],["preserv",{"_index":2580,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["press",{"_index":437,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["prettier",{"_index":3653,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["prevent",{"_index":1451,"title":{},"name":{},"text":{"24":{},"34":{},"60":{},"70":{},"96":{},"98":{},"119":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["preview",{"_index":987,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["previou",{"_index":317,"title":{},"name":{},"text":{"2":{},"14":{},"41":{},"50":{},"80":{},"95":{},"96":{},"133":{},"142":{},"146":{},"149":{},"151":{},"153":{},"161":{},"199":{},"208":{},"212":{},"215":{},"217":{},"219":{},"227":{},"234":{}},"component":{}}],["previous",{"_index":2417,"title":{},"name":{},"text":{"95":{},"96":{},"98":{},"127":{},"149":{},"150":{},"151":{},"154":{},"193":{},"215":{},"216":{},"217":{},"220":{}},"component":{}}],["primari",{"_index":3347,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["print",{"_index":3085,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["prior",{"_index":2219,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["prioriti",{"_index":3373,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["privaci",{"_index":1684,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["privat",{"_index":2256,"title":{},"name":{},"text":{"81":{},"96":{},"98":{},"151":{},"154":{},"174":{},"217":{},"220":{},"240":{}},"component":{}}],["private/publ",{"_index":2749,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["privatekey=private.key",{"_index":2506,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["privileg",{"_index":503,"title":{},"name":{},"text":{"2":{},"41":{},"127":{},"158":{},"193":{},"224":{}},"component":{}}],["pro",{"_index":1853,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["probe",{"_index":2605,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["problem",{"_index":3079,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["proce",{"_index":284,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["procedur",{"_index":1952,"title":{"80-3":{},"133-3":{},"199-3":{}},"name":{},"text":{"39":{},"75":{},"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["proceed",{"_index":2086,"title":{},"name":{},"text":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"component":{}}],["process",{"_index":154,"title":{},"name":{},"text":{"2":{},"19":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"41":{},"55":{},"63":{},"64":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"79":{},"80":{},"95":{},"96":{},"98":{},"99":{},"100":{},"112":{},"113":{},"117":{},"119":{},"120":{},"122":{},"126":{},"127":{},"128":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"149":{},"151":{},"153":{},"154":{},"155":{},"156":{},"173":{},"174":{},"175":{},"180":{},"181":{},"183":{},"185":{},"187":{},"188":{},"192":{},"193":{},"194":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"215":{},"217":{},"219":{},"220":{},"221":{},"222":{},"239":{},"240":{},"241":{},"246":{},"247":{},"249":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["prod",{"_index":964,"title":{},"name":{},"text":{"14":{},"36":{},"50":{},"72":{},"96":{},"98":{},"122":{},"151":{},"154":{},"185":{},"217":{},"220":{},"251":{}},"component":{}}],["prod.env",{"_index":2731,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["prod.json",{"_index":3694,"title":{},"name":{},"text":{"182":{},"187":{},"188":{},"248":{},"253":{},"254":{}},"component":{}}],["prod.prod",{"_index":2727,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["prod.tfbackend.config",{"_index":3728,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["prod.yml",{"_index":3732,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["produc",{"_index":2109,"title":{},"name":{},"text":{"79":{},"80":{},"95":{},"98":{},"132":{},"133":{},"149":{},"154":{},"188":{},"198":{},"199":{},"215":{},"220":{},"254":{}},"component":{}}],["product",{"_index":169,"title":{},"name":{},"text":{"2":{},"14":{},"21":{},"36":{},"39":{},"41":{},"50":{},"57":{},"72":{},"75":{},"79":{},"80":{},"81":{},"96":{},"98":{},"101":{},"109":{},"112":{},"121":{},"122":{},"127":{},"132":{},"133":{},"151":{},"154":{},"157":{},"170":{},"173":{},"174":{},"182":{},"184":{},"185":{},"187":{},"188":{},"193":{},"198":{},"199":{},"217":{},"220":{},"223":{},"236":{},"239":{},"240":{},"248":{},"250":{},"251":{},"253":{},"254":{}},"component":{}}],["profil",{"_index":1214,"title":{},"name":{},"text":{"20":{},"29":{},"35":{},"36":{},"37":{},"38":{},"56":{},"63":{},"71":{},"72":{},"73":{},"74":{},"100":{},"101":{},"121":{},"122":{},"156":{},"157":{},"174":{},"185":{},"222":{},"223":{},"240":{},"251":{}},"component":{}}],["program",{"_index":3115,"title":{},"name":{},"text":{"120":{},"174":{},"183":{},"240":{},"249":{}},"component":{}}],["progress",{"_index":1554,"title":{"153-17":{},"219-17":{}},"name":{},"text":{"28":{},"65":{},"98":{},"153":{},"154":{},"219":{},"220":{}},"component":{}}],["project",{"_index":118,"title":{"2-33":{},"5-5":{},"5-6":{},"14-11":{},"27-3":{},"41-33":{},"44-5":{},"44-6":{},"50-11":{},"62-3":{},"77-11":{},"80-12":{},"80-22":{},"83-3":{},"83-4":{},"101-4":{},"101-5":{},"101-6":{},"101-7":{},"101-8":{},"111-3":{},"128-3":{},"130-9":{},"133-12":{},"133-22":{},"157-4":{},"157-7":{},"157-8":{},"157-9":{},"157-10":{},"157-11":{},"158-1":{},"158-2":{},"172-3":{},"194-3":{},"196-9":{},"199-12":{},"199-22":{},"223-4":{},"223-7":{},"223-8":{},"223-9":{},"223-10":{},"223-11":{},"224-1":{},"224-2":{},"238-3":{}},"name":{},"text":{"2":{},"4":{},"5":{},"7":{},"8":{},"12":{},"13":{},"14":{},"16":{},"19":{},"21":{},"22":{},"23":{},"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"46":{},"47":{},"49":{},"50":{},"52":{},"55":{},"57":{},"58":{},"59":{},"60":{},"62":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"82":{},"83":{},"85":{},"88":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"111":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"141":{},"142":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"172":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"207":{},"208":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["project'",{"_index":3765,"title":{},"name":{},"text":{"240":{}},"component":{}}],["project.default",{"_index":2912,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["project.key1.en",{"_index":3285,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["project.key2.en",{"_index":3286,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["project.nam",{"_index":3393,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["project.properti",{"_index":1107,"title":{"93-1":{},"147-1":{},"213-1":{}},"name":{},"text":{"14":{},"17":{},"24":{},"25":{},"26":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"39":{},"50":{},"53":{},"60":{},"61":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"75":{},"96":{},"99":{},"108":{},"110":{},"112":{},"113":{},"114":{},"115":{},"120":{},"121":{},"122":{},"151":{},"155":{},"169":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"183":{},"184":{},"185":{},"217":{},"221":{},"235":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"249":{},"250":{},"251":{}},"component":{}}],["project.properties.templ",{"_index":2804,"title":{},"name":{},"text":{"99":{},"108":{},"155":{},"169":{},"221":{},"235":{}},"component":{}}],["project.sh",{"_index":2699,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["project.template.key.nam",{"_index":1345,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project.template.key.names=default",{"_index":1334,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project.vers",{"_index":3409,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["project/spac",{"_index":1303,"title":{"22-4":{},"58-4":{},"101-3":{},"157-6":{},"223-6":{}},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project:sp",{"_index":1339,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["project_cd_us",{"_index":2860,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["project_id",{"_index":1962,"title":{},"name":{},"text":{"39":{},"75":{},"80":{},"94":{},"99":{},"133":{},"148":{},"155":{},"199":{},"214":{},"221":{}},"component":{}}],["project_key",{"_index":2931,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projectadmingroup",{"_index":2862,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectadminus",{"_index":2861,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectdev/test",{"_index":1297,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["projectid",{"_index":934,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"99":{},"149":{},"151":{},"155":{},"215":{},"217":{},"221":{}},"component":{}}],["projectkey",{"_index":2857,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectnam",{"_index":2558,"title":{},"name":{},"text":{"96":{},"100":{},"151":{},"156":{},"217":{},"222":{}},"component":{}}],["projectreadonlygroup",{"_index":2864,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectroleforadmingroup",{"_index":2923,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projectroleforreadonlygroup",{"_index":2925,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projectroleforusergroup",{"_index":2924,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["projecttyp",{"_index":2858,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["projectusergroup",{"_index":2863,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["project’",{"_index":618,"title":{},"name":{},"text":{"4":{},"19":{},"22":{},"43":{},"55":{},"58":{},"91":{},"100":{},"121":{},"122":{},"145":{},"156":{},"184":{},"185":{},"211":{},"222":{},"250":{},"251":{}},"component":{}}],["promot",{"_index":2309,"title":{"98-17":{},"98-18":{},"154-20":{},"154-21":{},"220-20":{},"220-21":{}},"name":{},"text":{"83":{},"95":{},"96":{},"98":{},"136":{},"149":{},"151":{},"154":{},"180":{},"202":{},"215":{},"217":{},"220":{},"246":{}},"component":{}}],["prompt",{"_index":1688,"title":{},"name":{},"text":{"32":{},"68":{},"77":{},"117":{},"130":{},"196":{}},"component":{}}],["proof",{"_index":385,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["proper",{"_index":3504,"title":{},"name":{},"text":{"169":{},"180":{},"235":{},"246":{}},"component":{}}],["properli",{"_index":2092,"title":{},"name":{},"text":{"79":{},"80":{},"98":{},"132":{},"133":{},"154":{},"174":{},"198":{},"199":{},"220":{},"240":{}},"component":{}}],["properti",{"_index":120,"title":{"2-37":{},"41-37":{},"95-7":{},"101-8":{},"149-7":{},"157-11":{},"215-7":{},"223-11":{}},"name":{},"text":{"14":{},"16":{},"19":{},"20":{},"22":{},"27":{},"50":{},"52":{},"55":{},"56":{},"58":{},"62":{},"95":{},"96":{},"99":{},"100":{},"101":{},"111":{},"120":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"172":{},"183":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"238":{},"249":{}},"component":{}}],["property.=tru",{"_index":2928,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["property_valu",{"_index":2932,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["protect",{"_index":782,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"180":{},"207":{},"246":{}},"component":{}}],["protected_branch",{"_index":770,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"207":{}},"component":{}}],["proto",{"_index":3580,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["protocol",{"_index":1595,"title":{},"name":{},"text":{"30":{},"64":{},"78":{},"131":{},"197":{}},"component":{}}],["prototyp",{"_index":1614,"title":{},"name":{},"text":{"31":{},"67":{},"116":{},"178":{},"244":{}},"component":{}}],["protractor.conf.j",{"_index":1791,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{}},"component":{}}],["prov",{"_index":1277,"title":{},"name":{},"text":{"21":{},"57":{},"79":{},"80":{},"95":{},"100":{},"101":{},"132":{},"133":{},"149":{},"156":{},"157":{},"198":{},"199":{},"215":{},"222":{},"223":{}},"component":{}}],["prov_app_config_fil",{"_index":2827,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["prov_app_config_file=\"${prov_app_config_fil",{"_index":2825,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["prov_app_from_imag",{"_index":2816,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provapp",{"_index":2959,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provid",{"_index":34,"title":{"14-2":{},"24-4":{},"50-2":{},"60-4":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"7":{},"8":{},"11":{},"14":{},"19":{},"20":{},"22":{},"24":{},"27":{},"31":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"44":{},"45":{},"46":{},"50":{},"55":{},"56":{},"58":{},"60":{},"62":{},"67":{},"68":{},"70":{},"72":{},"75":{},"76":{},"81":{},"82":{},"83":{},"86":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"115":{},"116":{},"117":{},"119":{},"120":{},"122":{},"123":{},"126":{},"128":{},"129":{},"130":{},"135":{},"136":{},"137":{},"139":{},"146":{},"149":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"172":{},"173":{},"174":{},"177":{},"178":{},"181":{},"183":{},"186":{},"189":{},"192":{},"194":{},"195":{},"196":{},"201":{},"202":{},"203":{},"205":{},"212":{},"215":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"238":{},"239":{},"240":{},"243":{},"244":{},"247":{},"249":{},"252":{},"255":{},"258":{}},"component":{}}],["provis",{"_index":13,"title":{"22":{},"58":{},"100":{},"101":{},"102":{},"125":{},"156":{},"157":{},"158":{},"191":{},"222":{},"223":{},"224":{},"257":{},"2-66":{},"22-5":{},"25-4":{},"26-4":{},"27-10":{},"28-4":{},"29-4":{},"30-4":{},"31-4":{},"33-4":{},"34-4":{},"35-4":{},"36-4":{},"37-4":{},"38-4":{},"41-66":{},"58-5":{},"61-4":{},"62-10":{},"63-4":{},"64-4":{},"65-4":{},"66-4":{},"67-4":{},"69-4":{},"70-4":{},"71-4":{},"72-4":{},"73-4":{},"74-4":{},"77-16":{},"78-6":{},"79-7":{},"80-9":{},"80-17":{},"80-24":{},"109-4":{},"110-4":{},"111-10":{},"112-4":{},"113-4":{},"114-6":{},"115-4":{},"116-4":{},"118-4":{},"119-4":{},"120-7":{},"121-4":{},"122-4":{},"124-4":{},"125-4":{},"130-14":{},"131-6":{},"132-7":{},"133-9":{},"133-17":{},"133-24":{},"170-4":{},"171-4":{},"172-10":{},"173-4":{},"174-4":{},"175-4":{},"176-6":{},"177-4":{},"178-4":{},"179-4":{},"180-4":{},"181-4":{},"182-4":{},"183-7":{},"184-4":{},"185-4":{},"187-4":{},"188-4":{},"190-4":{},"191-4":{},"196-14":{},"197-6":{},"198-7":{},"199-9":{},"199-17":{},"199-24":{},"236-4":{},"237-4":{},"238-10":{},"239-4":{},"240-4":{},"241-4":{},"242-6":{},"243-4":{},"244-4":{},"245-4":{},"246-4":{},"247-4":{},"248-4":{},"249-7":{},"250-4":{},"251-4":{},"253-4":{},"254-4":{},"256-4":{},"257-4":{}},"name":{"125":{},"191":{},"257":{}},"text":{"1":{},"2":{},"5":{},"8":{},"19":{},"20":{},"21":{},"22":{},"27":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"38":{},"39":{},"40":{},"41":{},"44":{},"47":{},"55":{},"56":{},"57":{},"58":{},"60":{},"62":{},"63":{},"64":{},"67":{},"69":{},"70":{},"71":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"111":{},"112":{},"113":{},"116":{},"118":{},"119":{},"120":{},"123":{},"125":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"173":{},"174":{},"175":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"186":{},"187":{},"188":{},"191":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"239":{},"240":{},"241":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"252":{},"253":{},"254":{},"257":{}},"component":{}}],["provision",{"_index":2712,"title":{},"name":{},"text":{"98":{}},"component":{}}],["provision.auth.bas",{"_index":2960,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provision.auth.provid",{"_index":1184,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["provision.auth.provider.oauth2.us",{"_index":2936,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provision.auth.provider=crowd",{"_index":1162,"title":{},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["provision.auth.provider=oauth2",{"_index":1164,"title":{},"name":{},"text":{"19":{},"20":{},"55":{},"56":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["provision.cleanup.incomplete.project",{"_index":1393,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["provision.ui.disclaim",{"_index":2972,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["provision_api_host",{"_index":1347,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["provision_api_host}/api/v2/project",{"_index":1382,"title":{},"name":{},"text":{"22":{},"58":{},"100":{},"156":{},"222":{}},"component":{}}],["provision_api_host}/api/v2/project/$2",{"_index":2849,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provision_api_host}/j_security_check",{"_index":1354,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provision_api_host}/login?error",{"_index":1359,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provision_fil",{"_index":2838,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provision_file=provis",{"_index":2823,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provisionfil",{"_index":1378,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provisionfile=create.txt",{"_index":1376,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["provisiong",{"_index":2813,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["provison",{"_index":2454,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["proxi",{"_index":487,"title":{"8":{},"11":{},"47":{},"88":{},"141":{},"207":{},"6-6":{},"8-2":{},"8-3":{},"45-6":{},"47-7":{},"80-16":{},"84-4":{},"88-7":{},"101-8":{},"133-16":{},"141-7":{},"157-11":{},"199-16":{},"207-7":{},"223-11":{}},"name":{"8":{},"47":{},"88":{},"141":{},"207":{}},"text":{"2":{},"6":{},"7":{},"8":{},"11":{},"21":{},"22":{},"31":{},"32":{},"33":{},"41":{},"45":{},"46":{},"47":{},"57":{},"58":{},"67":{},"68":{},"69":{},"77":{},"79":{},"80":{},"84":{},"85":{},"88":{},"94":{},"95":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"116":{},"117":{},"118":{},"128":{},"130":{},"132":{},"133":{},"138":{},"141":{},"148":{},"149":{},"150":{},"151":{},"157":{},"158":{},"159":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"178":{},"179":{},"180":{},"194":{},"196":{},"198":{},"199":{},"204":{},"207":{},"214":{},"215":{},"216":{},"217":{},"223":{},"224":{},"225":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"244":{},"245":{},"246":{}},"component":{}}],["psql",{"_index":2125,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["public",{"_index":240,"title":{},"name":{},"text":{"2":{},"19":{},"37":{},"38":{},"41":{},"55":{},"73":{},"74":{},"98":{},"100":{},"113":{},"154":{},"156":{},"175":{},"220":{},"222":{},"241":{}},"component":{}}],["publickey,password).\\r\\n",{"_index":579,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["publicli",{"_index":2233,"title":{},"name":{},"text":{"81":{}},"component":{}}],["publish",{"_index":2356,"title":{},"name":{},"text":{"93":{},"108":{},"120":{},"128":{},"147":{},"169":{},"183":{},"194":{},"213":{},"235":{},"240":{},"249":{}},"component":{}}],["pull",{"_index":583,"title":{"4-6":{},"5-6":{},"43-6":{},"44-6":{},"91-6":{},"145-6":{},"211-6":{}},"name":{},"text":{"6":{},"8":{},"14":{},"32":{},"38":{},"45":{},"47":{},"50":{},"68":{},"74":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"93":{},"96":{},"98":{},"99":{},"108":{},"117":{},"128":{},"132":{},"133":{},"135":{},"136":{},"141":{},"147":{},"151":{},"154":{},"155":{},"169":{},"194":{},"198":{},"199":{},"201":{},"202":{},"207":{},"213":{},"217":{},"220":{},"221":{},"235":{}},"component":{}}],["pullabl",{"_index":2159,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["puller",{"_index":624,"title":{"80-15":{},"94-4":{},"133-15":{},"148-4":{},"199-15":{},"214-4":{}},"name":{},"text":{"4":{},"43":{},"80":{},"91":{},"94":{},"133":{},"145":{},"148":{},"151":{},"199":{},"211":{},"214":{},"217":{}},"component":{}}],["pullrequestid",{"_index":2539,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["puplish",{"_index":1505,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["purchas",{"_index":210,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["purpos",{"_index":1456,"title":{"25-1":{},"26-1":{},"27-1":{},"28-1":{},"29-1":{},"30-1":{},"31-1":{},"33-1":{},"34-1":{},"35-1":{},"36-1":{},"37-1":{},"38-1":{},"61-1":{},"62-1":{},"63-1":{},"64-1":{},"65-1":{},"66-1":{},"67-1":{},"69-1":{},"70-1":{},"71-1":{},"72-1":{},"73-1":{},"74-1":{},"109-1":{},"110-1":{},"111-1":{},"112-1":{},"113-1":{},"114-1":{},"115-1":{},"116-1":{},"118-1":{},"119-1":{},"120-1":{},"121-1":{},"122-1":{},"124-1":{},"125-1":{},"170-1":{},"171-1":{},"172-1":{},"173-1":{},"174-1":{},"175-1":{},"176-1":{},"177-1":{},"178-1":{},"179-1":{},"180-1":{},"181-1":{},"182-1":{},"183-1":{},"184-1":{},"185-1":{},"187-1":{},"188-1":{},"190-1":{},"191-1":{},"236-1":{},"237-1":{},"238-1":{},"239-1":{},"240-1":{},"241-1":{},"242-1":{},"243-1":{},"244-1":{},"245-1":{},"246-1":{},"247-1":{},"248-1":{},"249-1":{},"250-1":{},"251-1":{},"253-1":{},"254-1":{},"256-1":{},"257-1":{}},"name":{},"text":{"27":{},"29":{},"32":{},"62":{},"63":{},"68":{},"95":{},"101":{},"108":{},"111":{},"112":{},"117":{},"120":{},"124":{},"125":{},"130":{},"149":{},"153":{},"157":{},"169":{},"172":{},"173":{},"180":{},"183":{},"189":{},"190":{},"191":{},"196":{},"215":{},"219":{},"223":{},"235":{},"238":{},"239":{},"246":{},"249":{},"255":{},"256":{},"257":{}},"component":{}}],["purpous",{"_index":2962,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["push",{"_index":683,"title":{},"name":{},"text":{"5":{},"6":{},"8":{},"13":{},"27":{},"32":{},"39":{},"44":{},"45":{},"47":{},"49":{},"62":{},"68":{},"75":{},"77":{},"79":{},"80":{},"81":{},"82":{},"88":{},"98":{},"99":{},"102":{},"108":{},"111":{},"114":{},"117":{},"124":{},"125":{},"130":{},"132":{},"133":{},"135":{},"137":{},"141":{},"142":{},"146":{},"151":{},"154":{},"155":{},"158":{},"169":{},"172":{},"176":{},"190":{},"191":{},"196":{},"198":{},"199":{},"201":{},"203":{},"207":{},"208":{},"212":{},"217":{},"220":{},"221":{},"224":{},"235":{},"238":{},"242":{},"256":{},"257":{}},"component":{}}],["put",{"_index":2478,"title":{},"name":{},"text":{"96":{},"100":{},"128":{},"151":{},"156":{},"194":{},"217":{},"222":{}},"component":{}}],["pvc",{"_index":2151,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["pwa",{"_index":1824,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["pwd",{"_index":2830,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["pycharm",{"_index":1680,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["pycodestyl",{"_index":1586,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["pypi",{"_index":500,"title":{},"name":{},"text":{"2":{},"31":{},"41":{}},"component":{}}],["pytest",{"_index":3027,"title":{"182":{},"248":{}},"name":{},"text":{"112":{},"173":{},"180":{},"182":{},"239":{},"246":{},"248":{}},"component":{}}],["pytest.ini",{"_index":3026,"title":{},"name":{},"text":{"112":{}},"component":{}}],["python",{"_index":1431,"title":{"29":{},"63":{},"106":{},"112":{},"166":{},"173":{},"182":{},"232":{},"239":{},"248":{},"95-10":{},"149-10":{},"173-8":{},"215-10":{},"239-8":{}},"name":{"29":{},"63":{},"106":{},"112":{},"166":{},"173":{},"182":{},"232":{},"239":{},"248":{}},"text":{"24":{},"29":{},"31":{},"32":{},"60":{},"63":{},"67":{},"68":{},"80":{},"95":{},"106":{},"112":{},"116":{},"117":{},"133":{},"136":{},"149":{},"166":{},"173":{},"174":{},"178":{},"180":{},"182":{},"186":{},"199":{},"202":{},"215":{},"232":{},"239":{},"240":{},"244":{},"246":{},"248":{},"252":{}},"component":{}}],["python/flask",{"_index":1940,"title":{},"name":{},"text":{"39":{},"75":{},"123":{},"186":{},"252":{}},"component":{}}],["python3.11",{"_index":3536,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["python3.12",{"_index":3758,"title":{},"name":{},"text":{"239":{}},"component":{}}],["python3.6",{"_index":3538,"title":{},"name":{},"text":{"173":{}},"component":{}}],["python3.8",{"_index":3537,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["python3.9",{"_index":3539,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["python:3.x",{"_index":2460,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["pythonpath=src",{"_index":3530,"title":{},"name":{},"text":{"173":{},"180":{},"239":{},"246":{}},"component":{}}],["python’",{"_index":3528,"title":{},"name":{},"text":{"173":{},"180":{},"239":{},"246":{}},"component":{}}],["pytnon",{"_index":3535,"title":{},"name":{},"text":{"173":{}},"component":{}}],["q",{"_index":2694,"title":{},"name":{},"text":{"98":{},"154":{},"181":{},"220":{},"247":{}},"component":{}}],["q/p",{"_index":2302,"title":{},"name":{},"text":{"83":{}},"component":{}}],["qa",{"_index":2668,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["qa.env",{"_index":2730,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["qq",{"_index":1589,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["qualiti",{"_index":893,"title":{"94-12":{},"148-12":{},"214-12":{}},"name":{},"text":{"13":{},"49":{},"93":{},"94":{},"96":{},"98":{},"112":{},"121":{},"122":{},"147":{},"148":{},"151":{},"154":{},"173":{},"180":{},"184":{},"185":{},"213":{},"214":{},"217":{},"220":{},"239":{},"246":{},"250":{},"251":{}},"component":{}}],["quay.io",{"_index":3144,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["queri",{"_index":785,"title":{},"name":{},"text":{"8":{},"47":{},"88":{},"141":{},"153":{},"207":{},"219":{}},"component":{}}],["question",{"_index":628,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["queue",{"_index":3398,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["quick",{"_index":1526,"title":{"32-11":{},"68-11":{},"117-11":{}},"name":{},"text":{"28":{},"29":{},"35":{},"38":{},"63":{},"65":{},"71":{},"74":{},"112":{},"173":{},"174":{},"180":{},"187":{},"239":{},"240":{},"246":{},"253":{}},"component":{}}],["quickli",{"_index":643,"title":{},"name":{},"text":{"5":{},"39":{},"44":{},"75":{},"83":{},"123":{},"136":{},"186":{},"202":{},"252":{}},"component":{}}],["quicksart",{"_index":3676,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["quickstart",{"_index":402,"title":{"27":{},"29":{},"30":{},"39":{},"62":{},"63":{},"64":{},"75":{},"99":{},"108":{},"111":{},"112":{},"113":{},"123":{},"155":{},"169":{},"172":{},"173":{},"174":{},"175":{},"186":{},"187":{},"188":{},"221":{},"235":{},"238":{},"239":{},"240":{},"241":{},"252":{},"253":{},"254":{},"5-6":{},"5-7":{},"25-1":{},"25-4":{},"25-5":{},"26-1":{},"26-4":{},"26-5":{},"27-1":{},"27-10":{},"27-11":{},"28-1":{},"28-4":{},"28-5":{},"29-1":{},"29-4":{},"29-5":{},"30-1":{},"30-4":{},"30-5":{},"31-1":{},"31-4":{},"31-5":{},"32-18":{},"33-1":{},"33-4":{},"33-5":{},"34-1":{},"34-4":{},"34-5":{},"35-1":{},"35-4":{},"35-5":{},"36-1":{},"36-4":{},"36-5":{},"37-1":{},"37-4":{},"37-5":{},"38-1":{},"38-4":{},"38-5":{},"39-2":{},"39-3":{},"39-4":{},"39-5":{},"39-7":{},"39-8":{},"44-6":{},"44-7":{},"61-1":{},"61-4":{},"61-5":{},"62-1":{},"62-10":{},"62-11":{},"63-1":{},"63-4":{},"63-5":{},"64-1":{},"64-4":{},"64-5":{},"65-1":{},"65-4":{},"65-5":{},"66-1":{},"66-4":{},"66-5":{},"67-1":{},"67-4":{},"67-5":{},"68-18":{},"69-1":{},"69-4":{},"69-5":{},"70-1":{},"70-4":{},"70-5":{},"71-1":{},"71-4":{},"71-5":{},"72-1":{},"72-4":{},"72-5":{},"73-1":{},"73-4":{},"73-5":{},"74-1":{},"74-4":{},"74-5":{},"75-2":{},"75-3":{},"75-4":{},"75-5":{},"75-7":{},"75-8":{},"80-19":{},"83-4":{},"101-1":{},"108-1":{},"109-1":{},"109-4":{},"109-8":{},"110-1":{},"110-4":{},"110-5":{},"111-1":{},"111-10":{},"111-11":{},"112-1":{},"112-4":{},"112-5":{},"113-1":{},"113-4":{},"113-5":{},"114-1":{},"114-6":{},"114-7":{},"115-1":{},"115-4":{},"115-5":{},"116-1":{},"116-4":{},"116-5":{},"117-18":{},"118-1":{},"118-4":{},"118-5":{},"119-1":{},"119-4":{},"119-5":{},"120-1":{},"120-7":{},"120-9":{},"121-1":{},"121-4":{},"121-5":{},"122-1":{},"122-4":{},"122-5":{},"123-2":{},"123-3":{},"123-4":{},"123-5":{},"123-6":{},"123-7":{},"123-8":{},"124-1":{},"124-4":{},"124-5":{},"125-1":{},"125-4":{},"125-5":{},"133-19":{},"150-9":{},"150-10":{},"157-1":{},"158-2":{},"169-1":{},"170-1":{},"170-4":{},"170-9":{},"171-1":{},"171-4":{},"171-6":{},"172-1":{},"172-10":{},"172-12":{},"173-1":{},"173-4":{},"173-6":{},"174-1":{},"174-4":{},"174-6":{},"175-1":{},"175-4":{},"175-6":{},"176-1":{},"176-6":{},"176-8":{},"177-1":{},"177-4":{},"177-6":{},"178-1":{},"178-4":{},"178-7":{},"179-1":{},"179-4":{},"179-6":{},"180-1":{},"180-4":{},"180-6":{},"181-1":{},"181-4":{},"181-5":{},"182-1":{},"182-4":{},"183-1":{},"183-7":{},"183-9":{},"184-1":{},"184-4":{},"184-6":{},"185-1":{},"185-4":{},"185-6":{},"186-2":{},"186-3":{},"186-4":{},"186-5":{},"186-6":{},"186-7":{},"186-8":{},"186-9":{},"187-1":{},"187-4":{},"187-5":{},"188-1":{},"188-4":{},"188-5":{},"190-1":{},"190-4":{},"190-5":{},"191-1":{},"191-4":{},"191-5":{},"199-19":{},"216-9":{},"216-10":{},"223-1":{},"224-2":{},"235-1":{},"236-1":{},"236-4":{},"236-9":{},"237-1":{},"237-4":{},"237-6":{},"238-1":{},"238-10":{},"238-12":{},"239-1":{},"239-4":{},"239-6":{},"240-1":{},"240-4":{},"240-6":{},"241-1":{},"241-4":{},"241-6":{},"242-1":{},"242-6":{},"242-8":{},"243-1":{},"243-4":{},"243-6":{},"244-1":{},"244-4":{},"244-7":{},"245-1":{},"245-4":{},"245-6":{},"246-1":{},"246-4":{},"246-6":{},"247-1":{},"247-4":{},"247-5":{},"248-1":{},"248-4":{},"249-1":{},"249-7":{},"249-9":{},"250-1":{},"250-4":{},"250-6":{},"251-1":{},"251-4":{},"251-6":{},"252-2":{},"252-3":{},"252-4":{},"252-5":{},"252-6":{},"252-7":{},"252-8":{},"252-9":{},"253-1":{},"253-4":{},"253-5":{},"254-1":{},"254-4":{},"254-5":{},"256-1":{},"256-4":{},"256-5":{},"257-1":{},"257-4":{},"257-5":{}},"name":{"99":{},"108":{},"155":{},"169":{},"221":{},"235":{}},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"15":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"44":{},"45":{},"50":{},"51":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"80":{},"83":{},"85":{},"94":{},"95":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"138":{},"148":{},"149":{},"150":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"204":{},"214":{},"215":{},"216":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{}},"component":{}}],["quickstarter_directori",{"_index":1960,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["quickstarters#12",{"_index":2382,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#46",{"_index":2392,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#60",{"_index":2393,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#71",{"_index":2389,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters#74",{"_index":2383,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["quickstarters,od",{"_index":3204,"title":{},"name":{},"text":{"137":{},"203":{}},"component":{}}],["quickstarters.properti",{"_index":2896,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["quickstarters/airflow",{"_index":2002,"title":{},"name":{},"text":{"60":{}},"component":{}}],["quickstarters/blob/master/docs/modules/jenkin",{"_index":2981,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["quickstarters/blob/master/docs/modules/quickstarters/pag",{"_index":2980,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["quickstarters/ocp",{"_index":2205,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["quickstarters/pull/188",{"_index":2222,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["quickstarters/quickstarters.properti",{"_index":2895,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["quickstartserver.scala",{"_index":1604,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["quicktart",{"_index":3686,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["quit",{"_index":2128,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["quota",{"_index":2311,"title":{},"name":{},"text":{"83":{},"94":{},"136":{},"148":{},"202":{},"214":{}},"component":{}}],["r",{"_index":1468,"title":{"69":{},"118":{},"179":{},"245":{}},"name":{},"text":{"25":{},"29":{},"32":{},"33":{},"39":{},"63":{},"66":{},"68":{},"69":{},"75":{},"76":{},"112":{},"115":{},"117":{},"118":{},"123":{},"129":{},"173":{},"177":{},"179":{},"180":{},"181":{},"186":{},"195":{},"239":{},"243":{},"245":{},"246":{},"247":{},"252":{}},"component":{}}],["r/https://shiny.rstudio.com/tutorial/[rshini",{"_index":1757,"title":{},"name":{},"text":{"33":{}},"component":{}}],["r/w",{"_index":3437,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["ram",{"_index":177,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"130":{},"196":{}},"component":{}}],["ran",{"_index":2705,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["random",{"_index":1009,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["rapid",{"_index":1613,"title":{},"name":{},"text":{"31":{},"67":{},"116":{},"178":{},"244":{}},"component":{}}],["raw",{"_index":2487,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["rc.1",{"_index":1876,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["re",{"_index":2132,"title":{},"name":{},"text":{"79":{},"98":{},"132":{},"150":{},"154":{},"198":{},"216":{},"220":{}},"component":{}}],["reach",{"_index":1158,"title":{},"name":{},"text":{"19":{},"55":{},"96":{},"100":{},"151":{},"156":{},"162":{},"163":{},"164":{},"165":{},"166":{},"217":{},"222":{},"228":{},"229":{},"230":{},"231":{},"232":{}},"component":{}}],["react",{"_index":1855,"title":{"37":{},"73":{}},"name":{"37":{},"73":{}},"text":{"37":{},"39":{},"73":{},"75":{},"94":{},"148":{},"214":{}},"component":{}}],["react.j",{"_index":1854,"title":{"37":{},"73":{}},"name":{},"text":{},"component":{}}],["reactiv",{"_index":3045,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["read",{"_index":505,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"20":{},"22":{},"41":{},"45":{},"47":{},"50":{},"56":{},"58":{},"77":{},"88":{},"95":{},"96":{},"98":{},"101":{},"130":{},"141":{},"149":{},"150":{},"151":{},"154":{},"157":{},"196":{},"207":{},"215":{},"216":{},"217":{},"220":{},"223":{}},"component":{}}],["readabl",{"_index":2166,"title":{},"name":{},"text":{"80":{},"133":{},"157":{},"199":{},"223":{}},"component":{}}],["readi",{"_index":834,"title":{},"name":{},"text":{"11":{},"12":{},"32":{},"68":{},"80":{},"81":{},"96":{},"98":{},"112":{},"117":{},"127":{},"133":{},"151":{},"154":{},"173":{},"174":{},"193":{},"199":{},"217":{},"220":{},"239":{},"240":{}},"component":{}}],["readjson",{"_index":2534,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["readm",{"_index":833,"title":{},"name":{},"text":{"11":{},"12":{},"13":{},"33":{},"49":{},"82":{},"100":{},"135":{},"151":{},"156":{},"174":{},"201":{},"217":{},"222":{},"240":{}},"component":{}}],["readme.adoc",{"_index":1957,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["readme.md",{"_index":1461,"title":{},"name":{},"text":{"25":{},"26":{},"28":{},"29":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"61":{},"63":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"74":{},"80":{},"110":{},"112":{},"114":{},"115":{},"119":{},"120":{},"121":{},"122":{},"126":{},"133":{},"171":{},"173":{},"174":{},"176":{},"177":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"199":{},"237":{},"239":{},"240":{},"242":{},"243":{},"247":{},"248":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["readonli",{"_index":1325,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["readonlygroup",{"_index":1375,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["real",{"_index":1300,"title":{},"name":{},"text":{"21":{},"57":{},"77":{},"100":{},"101":{},"130":{},"156":{},"157":{},"196":{},"222":{},"223":{}},"component":{}}],["realli",{"_index":1671,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"136":{},"202":{}},"component":{}}],["realm",{"_index":869,"title":{"78-1":{},"78-3":{},"131-1":{},"131-3":{},"197-1":{},"197-3":{}},"name":{},"text":{"12":{},"20":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["reason",{"_index":2336,"title":{},"name":{},"text":{"88":{},"98":{},"100":{},"128":{},"141":{},"154":{},"156":{},"181":{},"194":{},"207":{},"220":{},"222":{},"247":{}},"component":{}}],["rebas",{"_index":2597,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["rebuild",{"_index":1772,"title":{"154-15":{},"220-15":{}},"name":{},"text":{"34":{},"70":{},"83":{},"95":{},"98":{},"119":{},"136":{},"137":{},"149":{},"154":{},"202":{},"203":{},"215":{},"220":{}},"component":{}}],["rebuilt",{"_index":2660,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["rebum",{"_index":818,"title":{},"name":{},"text":{"10":{}},"component":{}}],["receiv",{"_index":1312,"title":{},"name":{},"text":{"22":{},"58":{},"151":{},"217":{}},"component":{}}],["recent",{"_index":1455,"title":{},"name":{},"text":{"24":{},"60":{},"77":{},"130":{},"196":{}},"component":{}}],["recip",{"_index":901,"title":{},"name":{},"text":{"13":{},"49":{},"92":{},"142":{},"146":{},"208":{},"212":{}},"component":{}}],["recipi",{"_index":2326,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["recognis",{"_index":3372,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["recommend",{"_index":189,"title":{"240-11":{}},"name":{},"text":{"2":{},"27":{},"29":{},"32":{},"41":{},"62":{},"63":{},"68":{},"80":{},"93":{},"94":{},"95":{},"96":{},"100":{},"108":{},"111":{},"112":{},"117":{},"127":{},"130":{},"133":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"156":{},"169":{},"172":{},"173":{},"174":{},"180":{},"189":{},"193":{},"196":{},"199":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"222":{},"235":{},"238":{},"239":{},"240":{},"246":{},"255":{}},"component":{}}],["reconcil",{"_index":2498,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["record",{"_index":2851,"title":{},"name":{},"text":{"100":{},"156":{},"181":{},"222":{},"247":{}},"component":{}}],["rectifi",{"_index":1387,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["redeploy",{"_index":483,"title":{},"name":{},"text":{"2":{},"41":{},"60":{},"80":{},"133":{},"199":{}},"component":{}}],["redhat",{"_index":2098,"title":{},"name":{},"text":{"79":{},"108":{},"132":{},"137":{},"169":{},"198":{},"203":{},"235":{}},"component":{}}],["redhat’",{"_index":632,"title":{},"name":{},"text":{"5":{},"44":{},"83":{}},"component":{}}],["redirect",{"_index":376,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["reduc",{"_index":1291,"title":{"95-5":{},"149-5":{},"215-5":{}},"name":{},"text":{"21":{},"37":{},"57":{},"73":{},"94":{},"95":{},"96":{},"148":{},"149":{},"151":{},"214":{},"215":{},"217":{}},"component":{}}],["redux",{"_index":1874,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["reevalu",{"_index":1651,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["ref",{"_index":2051,"title":{},"name":{},"text":{"77":{},"79":{},"80":{},"81":{},"88":{},"99":{},"101":{},"130":{},"132":{},"133":{},"137":{},"141":{},"142":{},"146":{},"155":{},"157":{},"196":{},"198":{},"199":{},"203":{},"207":{},"208":{},"212":{},"221":{},"223":{}},"component":{}}],["refer",{"_index":967,"title":{},"name":{},"text":{"14":{},"50":{},"83":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"108":{},"126":{},"128":{},"134":{},"136":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"169":{},"192":{},"194":{},"200":{},"202":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"235":{},"258":{}},"component":{}}],["referenc",{"_index":2566,"title":{},"name":{},"text":{"96":{},"103":{},"104":{},"105":{},"106":{},"107":{},"128":{},"151":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"194":{},"217":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{}},"component":{}}],["reflect",{"_index":3242,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["refresh",{"_index":1061,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["regard",{"_index":1250,"title":{},"name":{},"text":{"20":{},"32":{},"38":{},"56":{},"60":{},"68":{},"74":{},"78":{},"101":{},"117":{},"131":{},"151":{},"157":{},"197":{},"217":{},"223":{},"240":{}},"component":{}}],["regardless",{"_index":1796,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"153":{},"184":{},"219":{},"250":{}},"component":{}}],["regist",{"_index":202,"title":{},"name":{},"text":{"2":{},"41":{},"87":{},"100":{},"101":{},"108":{},"140":{},"156":{},"157":{},"169":{},"206":{},"222":{},"223":{},"235":{}},"component":{}}],["registerserviceworker.j",{"_index":1867,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["registerserviceworker.t",{"_index":1914,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["registr",{"_index":204,"title":{},"name":{},"text":{"2":{},"20":{},"30":{},"41":{},"56":{},"64":{},"101":{},"157":{},"223":{}},"component":{}}],["registri",{"_index":2093,"title":{},"name":{},"text":{"79":{},"96":{},"128":{},"132":{},"151":{},"194":{},"198":{},"217":{}},"component":{}}],["registry.access.redhat.com",{"_index":3145,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["registry.access.redhat.com/ubi8/python",{"_index":3540,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["registry.redhat.io",{"_index":3146,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["registry/]repo/image[:tag",{"_index":3351,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["registry=registry.example.com",{"_index":3312,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["regress",{"_index":1706,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["regular",{"_index":2671,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["rel",{"_index":976,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"99":{},"127":{},"128":{},"151":{},"155":{},"193":{},"194":{},"217":{},"221":{}},"component":{}}],["relat",{"_index":873,"title":{},"name":{},"text":{"12":{},"14":{},"18":{},"26":{},"50":{},"54":{},"61":{},"95":{},"96":{},"110":{},"114":{},"128":{},"136":{},"149":{},"151":{},"171":{},"176":{},"181":{},"182":{},"194":{},"202":{},"215":{},"217":{},"237":{},"240":{},"242":{},"247":{},"248":{}},"component":{}}],["relationship",{"_index":748,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["releas",{"_index":470,"title":{"126":{},"192":{},"258":{},"23-1":{},"59-1":{},"80-19":{},"98-20":{},"98-23":{},"133-19":{},"154-23":{},"154-25":{},"154-28":{},"199-19":{},"220-23":{},"220-25":{},"220-28":{}},"name":{"126":{},"192":{},"258":{}},"text":{"2":{},"14":{},"21":{},"27":{},"41":{},"50":{},"57":{},"62":{},"79":{},"80":{},"81":{},"82":{},"83":{},"95":{},"96":{},"97":{},"98":{},"101":{},"109":{},"110":{},"111":{},"112":{},"114":{},"115":{},"116":{},"118":{},"119":{},"121":{},"122":{},"126":{},"127":{},"132":{},"133":{},"135":{},"136":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"157":{},"160":{},"162":{},"163":{},"164":{},"165":{},"170":{},"171":{},"172":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"189":{},"192":{},"193":{},"198":{},"199":{},"201":{},"202":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"223":{},"226":{},"228":{},"229":{},"230":{},"231":{},"236":{},"237":{},"238":{},"239":{},"240":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["release.nam",{"_index":3338,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["release/$vers",{"_index":2675,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["release/1",{"_index":3235,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["release/1.0.0",{"_index":977,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["relev",{"_index":2237,"title":{},"name":{},"text":{"81":{},"96":{},"151":{},"181":{},"217":{},"247":{}},"component":{}}],["reli",{"_index":2452,"title":{},"name":{},"text":{"95":{},"149":{},"151":{},"153":{},"215":{},"217":{},"219":{}},"component":{}}],["reliabl",{"_index":2588,"title":{},"name":{},"text":{"96":{},"151":{},"174":{},"181":{},"217":{},"240":{},"247":{}},"component":{}}],["reload",{"_index":1930,"title":{},"name":{},"text":{"38":{},"74":{},"174":{},"240":{}},"component":{}}],["remaind",{"_index":902,"title":{},"name":{},"text":{"13":{},"49":{},"92":{},"142":{},"146":{},"208":{},"212":{}},"component":{}}],["rememb",{"_index":2058,"title":{},"name":{},"text":{"77":{},"128":{},"130":{},"194":{},"196":{}},"component":{}}],["remot",{"_index":355,"title":{"32-12":{},"68-12":{},"117-12":{}},"name":{},"text":{"2":{},"14":{},"32":{},"41":{},"50":{},"68":{},"77":{},"80":{},"81":{},"94":{},"98":{},"117":{},"126":{},"130":{},"133":{},"148":{},"154":{},"172":{},"192":{},"196":{},"199":{},"214":{},"217":{},"220":{},"238":{},"258":{}},"component":{}}],["remov",{"_index":1400,"title":{"79-9":{},"80-14":{},"132-9":{},"133-14":{},"198-9":{},"199-14":{}},"name":{},"text":{"23":{},"27":{},"39":{},"59":{},"62":{},"75":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"100":{},"108":{},"111":{},"127":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"156":{},"160":{},"162":{},"163":{},"164":{},"165":{},"169":{},"172":{},"181":{},"184":{},"193":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{},"222":{},"226":{},"228":{},"229":{},"230":{},"231":{},"235":{},"238":{},"247":{},"250":{}},"component":{}}],["renam",{"_index":2306,"title":{"95-4":{},"149-4":{},"150-11":{},"215-4":{},"216-11":{}},"name":{},"text":{"83":{},"95":{},"98":{},"136":{},"149":{},"150":{},"154":{},"202":{},"215":{},"216":{},"220":{}},"component":{}}],["render",{"_index":1965,"title":{},"name":{},"text":{"39":{},"75":{},"99":{},"108":{},"155":{},"169":{},"221":{},"235":{}},"component":{}}],["renderjenkinstemplate.sh",{"_index":1953,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["rendersonarqubetemplate.sh",{"_index":1954,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["rep",{"_index":888,"title":{},"name":{},"text":{"12":{}},"component":{}}],["repeat",{"_index":337,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"82":{},"133":{},"135":{},"199":{},"201":{}},"component":{}}],["replac",{"_index":841,"title":{"80-26":{},"133-26":{},"199-26":{}},"name":{},"text":{"11":{},"12":{},"80":{},"81":{},"83":{},"94":{},"95":{},"98":{},"99":{},"101":{},"133":{},"136":{},"148":{},"149":{},"151":{},"153":{},"154":{},"155":{},"157":{},"199":{},"202":{},"214":{},"215":{},"217":{},"219":{},"220":{},"221":{},"223":{}},"component":{}}],["replicaset",{"_index":3231,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["replicationcontrol",{"_index":3230,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["repo",{"_index":900,"title":{},"name":{},"text":{"13":{},"22":{},"39":{},"49":{},"58":{},"75":{},"77":{},"79":{},"83":{},"96":{},"98":{},"101":{},"126":{},"130":{},"132":{},"136":{},"150":{},"151":{},"154":{},"157":{},"192":{},"196":{},"198":{},"202":{},"216":{},"217":{},"220":{},"223":{},"258":{}},"component":{}}],["repo.id",{"_index":2643,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["repo.j",{"_index":1862,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["repo:refs_changed,pr:declined,pr:merged,pr:delet",{"_index":2333,"title":{},"name":{},"text":{"88":{},"141":{},"207":{}},"component":{}}],["repo_bas",{"_index":780,"title":{},"name":{},"text":{"8":{},"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["repo_base=https://bitbucket.example.com/scm",{"_index":2986,"title":{},"name":{},"text":{"108":{},"169":{},"235":{}},"component":{}}],["repo_base}/opendevstack/od",{"_index":2182,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["report",{"_index":719,"title":{},"name":{},"text":{"6":{},"7":{},"13":{},"14":{},"16":{},"17":{},"28":{},"45":{},"46":{},"49":{},"50":{},"52":{},"53":{},"65":{},"85":{},"92":{},"93":{},"96":{},"98":{},"108":{},"112":{},"114":{},"115":{},"123":{},"126":{},"138":{},"146":{},"147":{},"151":{},"154":{},"169":{},"173":{},"174":{},"176":{},"177":{},"180":{},"186":{},"192":{},"204":{},"212":{},"213":{},"217":{},"220":{},"235":{},"239":{},"240":{},"242":{},"243":{},"246":{},"247":{},"252":{},"258":{}},"component":{}}],["reporter.j",{"_index":3807,"title":{},"name":{},"text":{"247":{}},"component":{}}],["reportfil",{"_index":3297,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["repos.sh",{"_index":2043,"title":{},"name":{},"text":{"77":{},"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["repos=\"od",{"_index":3202,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"203":{},"208":{},"212":{}},"component":{}}],["repositori",{"_index":134,"title":{"2-60":{},"24-4":{},"39-9":{},"41-60":{},"60-4":{},"75-9":{},"77-3":{},"77-9":{},"79-2":{},"80-1":{},"94-3":{},"98-4":{},"98-5":{},"98-6":{},"98-7":{},"98-8":{},"98-9":{},"98-10":{},"98-11":{},"126-4":{},"126-5":{},"126-6":{},"126-7":{},"126-8":{},"126-9":{},"126-10":{},"126-11":{},"130-3":{},"130-6":{},"132-2":{},"133-1":{},"148-3":{},"154-4":{},"154-5":{},"154-6":{},"154-7":{},"154-8":{},"154-9":{},"154-10":{},"154-11":{},"154-12":{},"154-13":{},"154-14":{},"157-5":{},"192-4":{},"192-5":{},"192-6":{},"192-7":{},"192-8":{},"192-9":{},"192-10":{},"192-11":{},"196-3":{},"196-6":{},"198-2":{},"199-1":{},"214-3":{},"220-4":{},"220-5":{},"220-6":{},"220-7":{},"220-8":{},"220-9":{},"220-10":{},"220-11":{},"220-12":{},"220-13":{},"220-14":{},"223-5":{},"258-4":{},"258-5":{},"258-6":{},"258-7":{},"258-8":{},"258-9":{},"258-10":{},"258-11":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"13":{},"14":{},"17":{},"18":{},"22":{},"24":{},"27":{},"31":{},"32":{},"36":{},"37":{},"39":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"53":{},"54":{},"58":{},"60":{},"62":{},"68":{},"72":{},"73":{},"75":{},"76":{},"77":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"88":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"111":{},"117":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"130":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"141":{},"142":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"185":{},"186":{},"190":{},"191":{},"192":{},"194":{},"195":{},"196":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"207":{},"208":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"240":{},"251":{},"252":{},"256":{},"257":{},"258":{}},"component":{}}],["repositories[0].nam",{"_index":2654,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["repositorytyp",{"_index":2616,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["repositorytype=maven2",{"_index":3343,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["repositorytype=raw",{"_index":3346,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["repository’",{"_index":1074,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"126":{},"151":{},"154":{},"192":{},"217":{},"220":{},"258":{}},"component":{}}],["reproduc",{"_index":1645,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["reproduce/retrain",{"_index":1638,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["request",{"_index":736,"title":{},"name":{},"text":{"6":{},"8":{},"19":{},"32":{},"38":{},"45":{},"47":{},"55":{},"68":{},"74":{},"79":{},"80":{},"81":{},"82":{},"83":{},"88":{},"96":{},"99":{},"100":{},"109":{},"117":{},"132":{},"133":{},"135":{},"136":{},"141":{},"151":{},"155":{},"156":{},"170":{},"198":{},"199":{},"201":{},"202":{},"207":{},"217":{},"221":{},"222":{},"236":{}},"component":{}}],["requir",{"_index":45,"title":{"3":{},"42":{},"90":{},"144":{},"210":{},"2-2":{},"41-2":{},"94-1":{},"148-1":{},"150-8":{},"214-1":{},"216-8":{}},"name":{"3":{},"42":{},"90":{},"144":{},"210":{}},"text":{"1":{},"2":{},"3":{},"11":{},"22":{},"27":{},"29":{},"31":{},"32":{},"40":{},"41":{},"42":{},"58":{},"62":{},"63":{},"67":{},"68":{},"76":{},"77":{},"79":{},"80":{},"83":{},"90":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"111":{},"112":{},"116":{},"117":{},"126":{},"127":{},"129":{},"130":{},"132":{},"133":{},"136":{},"144":{},"147":{},"148":{},"149":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"161":{},"169":{},"170":{},"172":{},"173":{},"174":{},"178":{},"180":{},"192":{},"193":{},"195":{},"196":{},"198":{},"199":{},"202":{},"210":{},"213":{},"214":{},"215":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"227":{},"234":{},"235":{},"236":{},"238":{},"239":{},"240":{},"244":{},"246":{},"258":{}},"component":{}}],["require(\"filt",{"_index":3018,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["require(\"resty.openidc",{"_index":3002,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["require(\"serv",{"_index":3012,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["require(\"your",{"_index":3008,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["requirements.txt",{"_index":1441,"title":{},"name":{},"text":{"24":{},"29":{},"31":{},"32":{},"60":{},"63":{},"67":{},"68":{},"112":{},"116":{},"117":{},"173":{},"178":{},"180":{},"239":{},"244":{},"246":{}},"component":{}}],["requirements.yml",{"_index":2013,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["requirequalitygatepass",{"_index":2554,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["requisit",{"_index":1845,"title":{},"name":{},"text":{"36":{},"37":{},"72":{},"73":{},"122":{},"185":{},"251":{}},"component":{}}],["reqwest",{"_index":3761,"title":{"240-13":{}},"name":{},"text":{"240":{}},"component":{}}],["reqwest’",{"_index":3787,"title":{},"name":{},"text":{"240":{}},"component":{}}],["rersouc",{"_index":1419,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["reset",{"_index":2142,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["resolut",{"_index":2624,"title":{"98-3":{},"98-7":{},"98-10":{},"126-3":{},"126-7":{},"126-10":{},"154-3":{},"154-10":{},"154-13":{},"192-3":{},"192-7":{},"192-10":{},"220-3":{},"220-10":{},"220-13":{},"258-3":{},"258-7":{},"258-10":{}},"name":{},"text":{},"component":{}}],["resolv",{"_index":2625,"title":{"98-8":{},"98-9":{},"126-8":{},"126-9":{},"154-11":{},"154-12":{},"192-8":{},"192-9":{},"220-11":{},"220-12":{},"258-8":{},"258-9":{}},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["resourc",{"_index":465,"title":{"153":{},"219":{},"24-3":{},"60-3":{},"79-6":{},"80-7":{},"84-1":{},"94-5":{},"96-9":{},"127-2":{},"132-6":{},"133-7":{},"148-5":{},"150-4":{},"151-9":{},"193-2":{},"198-6":{},"199-7":{},"214-5":{},"216-4":{},"217-9":{}},"name":{},"text":{"2":{},"19":{},"22":{},"24":{},"31":{},"32":{},"36":{},"39":{},"41":{},"47":{},"55":{},"58":{},"60":{},"67":{},"68":{},"72":{},"75":{},"77":{},"79":{},"80":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"108":{},"116":{},"117":{},"120":{},"122":{},"123":{},"127":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"158":{},"160":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"193":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"224":{},"226":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{}},"component":{}}],["resourcelimitcpu",{"_index":1989,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["resourcelimitmemori",{"_index":1993,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["resourcenam",{"_index":2512,"title":{},"name":{},"text":{"96":{},"150":{},"151":{},"216":{},"217":{}},"component":{}}],["resourcerequestcpu",{"_index":1987,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["resourcerequestmemori",{"_index":1991,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["respect",{"_index":289,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"126":{},"128":{},"151":{},"154":{},"181":{},"192":{},"194":{},"217":{},"220":{},"247":{},"258":{}},"component":{}}],["respond",{"_index":2855,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["respons",{"_index":1967,"title":{"47-5":{},"88-5":{},"100-9":{},"141-5":{},"156-9":{},"207-5":{},"222-9":{}},"name":{},"text":{"47":{},"88":{},"100":{},"109":{},"141":{},"156":{},"170":{},"207":{},"222":{},"236":{}},"component":{}}],["response\").filter_stack_trac",{"_index":3022,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["response.txt",{"_index":2834,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["response_fil",{"_index":2836,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["response_file=response.txt",{"_index":2835,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["respositori",{"_index":3166,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["rest",{"_index":1131,"title":{"19-5":{},"22-5":{},"55-5":{},"58-5":{},"100-6":{},"100-7":{},"156-6":{},"156-7":{},"222-6":{},"222-7":{}},"name":{},"text":{"19":{},"20":{},"22":{},"32":{},"55":{},"56":{},"58":{},"68":{},"81":{},"100":{},"101":{},"108":{},"113":{},"117":{},"156":{},"157":{},"169":{},"175":{},"222":{},"223":{},"235":{},"241":{}},"component":{}}],["rest,data",{"_index":3519,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["rest,restdocs,secur",{"_index":1512,"title":{},"name":{},"text":{"27":{},"62":{},"111":{}},"component":{}}],["restart",{"_index":613,"title":{},"name":{},"text":{"4":{},"32":{},"43":{},"68":{},"79":{},"91":{},"101":{},"117":{},"128":{},"132":{},"145":{},"157":{},"194":{},"198":{},"211":{},"223":{}},"component":{}}],["restclient",{"_index":1207,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["resti",{"_index":3000,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["restrict",{"_index":1659,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"88":{},"96":{},"117":{},"141":{},"153":{},"189":{},"207":{},"219":{},"255":{}},"component":{}}],["resty_image_base=\"alpin",{"_index":875,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_image_tag=\"3.8",{"_index":876,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_openssl_version=\"1.0.2p",{"_index":882,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_pcre_version=\"8.42",{"_index":883,"title":{},"name":{},"text":{"12":{}},"component":{}}],["resty_version=\"1.13.6.2",{"_index":881,"title":{},"name":{},"text":{"12":{}},"component":{}}],["result",{"_index":630,"title":{"5-7":{},"44-7":{}},"name":{},"text":{"7":{},"14":{},"28":{},"46":{},"50":{},"65":{},"77":{},"79":{},"81":{},"96":{},"98":{},"99":{},"108":{},"114":{},"115":{},"120":{},"130":{},"132":{},"151":{},"154":{},"155":{},"169":{},"176":{},"177":{},"181":{},"183":{},"196":{},"198":{},"217":{},"220":{},"221":{},"235":{},"242":{},"243":{},"247":{},"249":{}},"component":{}}],["results/test",{"_index":2348,"title":{},"name":{},"text":{"93":{},"96":{},"108":{},"115":{},"147":{},"151":{},"169":{},"177":{},"213":{},"217":{},"235":{},"243":{}},"component":{}}],["resum",{"_index":3369,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["retri",{"_index":2610,"title":{"154-26":{},"220-26":{}},"name":{},"text":{"96":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["retriev",{"_index":375,"title":{},"name":{},"text":{"2":{},"14":{},"32":{},"41":{},"47":{},"50":{},"68":{},"88":{},"94":{},"95":{},"98":{},"99":{},"117":{},"136":{},"141":{},"148":{},"149":{},"153":{},"154":{},"155":{},"189":{},"202":{},"207":{},"214":{},"215":{},"219":{},"220":{},"221":{},"255":{}},"component":{}}],["return",{"_index":1730,"title":{},"name":{},"text":{"32":{},"47":{},"68":{},"88":{},"96":{},"117":{},"141":{},"150":{},"151":{},"207":{},"216":{},"217":{}},"component":{}}],["returnstatu",{"_index":3471,"title":{},"name":{},"text":{"161":{},"172":{},"181":{},"227":{},"234":{},"238":{},"247":{}},"component":{}}],["reus",{"_index":1013,"title":{},"name":{},"text":{"14":{},"50":{},"82":{},"96":{},"99":{},"101":{},"135":{},"151":{},"155":{},"157":{},"201":{},"217":{},"221":{},"223":{}},"component":{}}],["reusabl",{"_index":3600,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["revers",{"_index":2734,"title":{},"name":{},"text":{"98":{},"109":{},"154":{},"170":{},"220":{},"236":{}},"component":{}}],["revert",{"_index":2499,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["review",{"_index":894,"title":{},"name":{},"text":{"13":{},"14":{},"27":{},"49":{},"50":{},"62":{},"79":{},"80":{},"93":{},"95":{},"96":{},"98":{},"111":{},"132":{},"133":{},"147":{},"149":{},"151":{},"154":{},"172":{},"198":{},"199":{},"213":{},"215":{},"217":{},"220":{},"238":{}},"component":{}}],["revis",{"_index":3206,"title":{},"name":{},"text":{"137":{},"142":{},"146":{},"151":{},"153":{},"203":{},"208":{},"212":{},"217":{},"219":{}},"component":{}}],["revisit",{"_index":3119,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["revsison",{"_index":1065,"title":{},"name":{},"text":{"14":{},"50":{},"96":{}},"component":{}}],["rewrit",{"_index":3016,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["rewrite_by_lua_block",{"_index":3015,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["rfc",{"_index":1043,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["right",{"_index":335,"title":{"80-15":{},"94-4":{},"133-15":{},"148-4":{},"199-15":{},"214-4":{}},"name":{},"text":{"2":{},"4":{},"6":{},"22":{},"39":{},"41":{},"43":{},"45":{},"58":{},"60":{},"75":{},"77":{},"80":{},"91":{},"94":{},"98":{},"101":{},"109":{},"130":{},"133":{},"145":{},"148":{},"151":{},"153":{},"154":{},"157":{},"170":{},"178":{},"181":{},"196":{},"199":{},"211":{},"214":{},"217":{},"219":{},"220":{},"223":{},"236":{},"244":{},"247":{}},"component":{}}],["ring",{"_index":3798,"title":{},"name":{},"text":{"240":{}},"component":{}}],["risk",{"_index":3151,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["rm",{"_index":2837,"title":{},"name":{},"text":{"100":{},"156":{},"181":{},"222":{},"247":{}},"component":{}}],["roadmap",{"_index":2273,"title":{"83-8":{},"136-7":{},"202-7":{}},"name":{},"text":{},"component":{}}],["robots.txt",{"_index":1910,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["robust",{"_index":3601,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["role",{"_index":33,"title":{"2-61":{},"4-2":{},"41-61":{},"43-2":{},"76-2":{},"91-2":{},"101-4":{},"101-6":{},"101-7":{},"129-2":{},"145-2":{},"157-7":{},"157-9":{},"157-10":{},"189-8":{},"195-2":{},"211-2":{},"223-7":{},"223-9":{},"223-10":{},"255-8":{}},"name":{},"text":{"1":{},"2":{},"4":{},"20":{},"22":{},"40":{},"41":{},"43":{},"56":{},"58":{},"76":{},"78":{},"80":{},"91":{},"94":{},"101":{},"129":{},"131":{},"133":{},"145":{},"148":{},"153":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"184":{},"189":{},"195":{},"197":{},"199":{},"211":{},"214":{},"219":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"250":{},"255":{}},"component":{}}],["rolebind",{"_index":2710,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["roles_path",{"_index":606,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["roll",{"_index":2296,"title":{},"name":{},"text":{"83":{},"95":{},"96":{},"128":{},"136":{},"137":{},"142":{},"146":{},"149":{},"150":{},"151":{},"194":{},"202":{},"203":{},"208":{},"212":{},"215":{},"216":{},"217":{}},"component":{}}],["rollback",{"_index":1392,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["rollout",{"_index":2138,"title":{"80-16":{},"133-16":{},"199-16":{}},"name":{},"text":{"94":{},"96":{},"128":{},"137":{},"142":{},"146":{},"148":{},"151":{},"153":{},"194":{},"203":{},"208":{},"212":{},"214":{},"217":{},"219":{}},"component":{}}],["root",{"_index":608,"title":{},"name":{},"text":{"4":{},"6":{},"8":{},"19":{},"28":{},"30":{},"31":{},"32":{},"33":{},"39":{},"43":{},"45":{},"47":{},"55":{},"64":{},"65":{},"67":{},"68":{},"69":{},"75":{},"85":{},"88":{},"91":{},"93":{},"98":{},"99":{},"100":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"121":{},"138":{},"141":{},"145":{},"147":{},"154":{},"155":{},"156":{},"172":{},"175":{},"176":{},"177":{},"178":{},"179":{},"181":{},"182":{},"184":{},"187":{},"188":{},"204":{},"207":{},"211":{},"213":{},"220":{},"221":{},"222":{},"238":{},"241":{},"242":{},"243":{},"244":{},"245":{},"247":{},"248":{},"250":{},"253":{},"254":{}},"component":{}}],["root/src/work",{"_index":2006,"title":{},"name":{},"text":{"67":{},"116":{},"178":{},"244":{}},"component":{}}],["rootepic.j",{"_index":1868,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["rootreducer.j",{"_index":1869,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["roughli",{"_index":2286,"title":{},"name":{},"text":{"83":{},"95":{},"149":{},"215":{}},"component":{}}],["rout",{"_index":708,"title":{"79-9":{},"80-11":{},"109-5":{},"132-9":{},"133-11":{},"170-5":{},"198-9":{},"199-11":{},"236-5":{}},"name":{},"text":{"6":{},"8":{},"21":{},"24":{},"28":{},"30":{},"31":{},"32":{},"33":{},"45":{},"47":{},"57":{},"60":{},"64":{},"65":{},"67":{},"68":{},"69":{},"79":{},"80":{},"87":{},"88":{},"96":{},"98":{},"101":{},"113":{},"116":{},"117":{},"118":{},"132":{},"133":{},"140":{},"141":{},"151":{},"154":{},"157":{},"174":{},"175":{},"178":{},"179":{},"198":{},"199":{},"206":{},"207":{},"217":{},"220":{},"223":{},"240":{},"241":{},"244":{},"245":{}},"component":{}}],["route/proxi",{"_index":2993,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["router",{"_index":1916,"title":{},"name":{},"text":{"38":{},"74":{},"174":{},"240":{}},"component":{}}],["router.j",{"_index":1859,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["router.r",{"_index":3568,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["router.t",{"_index":1915,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["routes/ocp",{"_index":2154,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["routing.module.t",{"_index":3701,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["row",{"_index":3688,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["rsh",{"_index":2124,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["rshini",{"_index":1754,"title":{"33":{}},"name":{"33":{},"69":{},"118":{},"179":{},"245":{}},"text":{"33":{},"69":{},"94":{},"118":{},"136":{},"148":{},"150":{},"179":{},"202":{},"214":{},"216":{},"245":{}},"component":{}}],["rubi",{"_index":3451,"title":{},"name":{},"text":{"160":{},"187":{},"188":{},"226":{},"253":{},"254":{}},"component":{}}],["rule",{"_index":2363,"title":{},"name":{},"text":{"93":{},"98":{},"147":{},"154":{},"213":{},"220":{}},"component":{}}],["ruleset",{"_index":838,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["run",{"_index":29,"title":{"2-14":{},"2-30":{},"2-36":{},"2-46":{},"2-67":{},"41-14":{},"41-30":{},"41-36":{},"41-46":{},"41-67":{},"96-11":{},"100-1":{},"151-11":{},"156-1":{},"217-11":{},"222-1":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"8":{},"13":{},"14":{},"16":{},"19":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"52":{},"55":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"79":{},"80":{},"83":{},"84":{},"88":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"129":{},"130":{},"132":{},"133":{},"136":{},"141":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"158":{},"161":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"181":{},"183":{},"184":{},"185":{},"186":{},"189":{},"192":{},"194":{},"195":{},"196":{},"198":{},"199":{},"202":{},"207":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"224":{},"227":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"247":{},"249":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["run.sh",{"_index":1562,"title":{},"name":{},"text":{"29":{},"31":{},"63":{},"67":{},"112":{},"116":{},"173":{},"178":{},"239":{},"244":{}},"component":{}}],["runbook",{"_index":653,"title":{},"name":{},"text":{"5":{},"44":{}},"component":{}}],["rundeck",{"_index":16,"title":{"2-64":{},"41-64":{},"80-14":{},"133-14":{},"199-14":{}},"name":{},"text":{"1":{},"2":{},"3":{},"19":{},"20":{},"21":{},"22":{},"39":{},"40":{},"41":{},"42":{},"55":{},"56":{},"57":{},"58":{},"75":{},"80":{},"83":{},"133":{},"136":{},"199":{},"202":{}},"component":{}}],["rundeck.admin_password",{"_index":1259,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["rundeck.admin_password=rundeck_admin",{"_index":1263,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["rundeck.admin_us",{"_index":1260,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["rundeck.admin_user=rundeck_admin",{"_index":1264,"title":{},"name":{},"text":{"20":{},"56":{}},"component":{}}],["runpolici",{"_index":2180,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["runt",{"_index":1572,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["runtim",{"_index":1279,"title":{"98-13":{},"154-16":{},"189-10":{},"220-16":{},"255-10":{}},"name":{},"text":{"21":{},"57":{},"80":{},"102":{},"109":{},"114":{},"133":{},"153":{},"158":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"179":{},"180":{},"184":{},"189":{},"199":{},"219":{},"224":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"245":{},"246":{},"250":{},"255":{}},"component":{}}],["runtimevers",{"_index":3382,"title":{"189-11":{},"255-11":{}},"name":{},"text":{"153":{},"172":{},"173":{},"174":{},"175":{},"176":{},"179":{},"180":{},"184":{},"189":{},"219":{},"238":{},"239":{},"240":{},"241":{},"242":{},"245":{},"246":{},"250":{},"255":{}},"component":{}}],["rust",{"_index":3494,"title":{"167":{},"174":{},"233":{},"240":{}},"name":{"167":{},"174":{},"233":{},"240":{}},"text":{"167":{},"174":{},"233":{},"240":{}},"component":{}}],["rust/axum",{"_index":3820,"title":{},"name":{},"text":{"252":{}},"component":{}}],["rustfmt.toml",{"_index":3575,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["rustl",{"_index":3584,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["rustsec",{"_index":3773,"title":{},"name":{},"text":{"240":{}},"component":{}}],["rustup",{"_index":3578,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["s3",{"_index":3690,"title":{},"name":{},"text":{"182":{},"187":{},"248":{},"253":{}},"component":{}}],["sa",{"_index":2703,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["saa",{"_index":3258,"title":{"154-6":{},"220-6":{}},"name":{},"text":{"150":{},"154":{},"216":{},"220":{}},"component":{}}],["sadipsc",{"_index":797,"title":{},"name":{},"text":{"10":{}},"component":{}}],["safari",{"_index":1907,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["safe",{"_index":3547,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["safeti",{"_index":2602,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["same",{"_index":441,"title":{},"name":{},"text":{"2":{},"14":{},"24":{},"41":{},"50":{},"60":{},"79":{},"95":{},"96":{},"98":{},"101":{},"108":{},"109":{},"128":{},"130":{},"132":{},"149":{},"151":{},"153":{},"154":{},"157":{},"169":{},"170":{},"181":{},"189":{},"194":{},"196":{},"198":{},"215":{},"217":{},"219":{},"220":{},"223":{},"235":{},"236":{},"247":{},"255":{}},"component":{}}],["saml",{"_index":3218,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["sampl",{"_index":185,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"77":{},"80":{},"100":{},"114":{},"123":{},"130":{},"133":{},"156":{},"176":{},"186":{},"187":{},"188":{},"196":{},"199":{},"222":{},"242":{},"252":{},"253":{},"254":{}},"component":{}}],["sample.pi",{"_index":3628,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["sample_test.pi",{"_index":3632,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["sanctu",{"_index":825,"title":{},"name":{},"text":{"10":{}},"component":{}}],["sanit",{"_index":2485,"title":{},"name":{},"text":{"96":{},"151":{},"189":{},"217":{},"255":{}},"component":{}}],["sanitis",{"_index":3392,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["sass",{"_index":1830,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["save",{"_index":327,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{},"47":{},"88":{},"100":{},"141":{},"156":{},"207":{},"222":{}},"component":{}}],["sayhello(def",{"_index":2543,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sbom",{"_index":3210,"title":{},"name":{},"text":{"138":{},"151":{},"204":{},"217":{}},"component":{}}],["sbom.json",{"_index":3299,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sbt",{"_index":493,"title":{},"name":{},"text":{"2":{},"30":{},"41":{},"64":{},"107":{},"113":{},"168":{},"175":{},"234":{},"241":{}},"component":{}}],["sbt.org/scalasbt/sbt",{"_index":497,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["scaffold",{"_index":1826,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["scala",{"_index":1591,"title":{"30":{},"64":{},"107":{},"113":{},"168":{},"175":{},"234":{},"241":{}},"name":{"30":{},"64":{},"107":{},"113":{},"168":{},"175":{},"234":{},"241":{}},"text":{"30":{},"64":{},"95":{},"107":{},"113":{},"136":{},"149":{},"168":{},"175":{},"202":{},"215":{},"234":{},"241":{}},"component":{}}],["scala/akka",{"_index":1941,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["scala/play",{"_index":3125,"title":{},"name":{},"text":{"123":{},"186":{},"252":{}},"component":{}}],["scalafmt",{"_index":3061,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["scalafmt.conf",{"_index":3056,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["scalafmtcheckal",{"_index":3749,"title":{},"name":{},"text":{"234":{}},"component":{}}],["scalafmtsbtcheck",{"_index":3748,"title":{},"name":{},"text":{"234":{}},"component":{}}],["scale",{"_index":2117,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["scan",{"_index":752,"title":{"14-11":{},"14-14":{},"14-16":{},"50-11":{},"50-14":{},"50-16":{},"93-2":{},"93-3":{},"93-4":{},"147-2":{},"147-3":{},"147-4":{},"213-2":{},"213-3":{},"213-4":{}},"name":{},"text":{"7":{},"14":{},"16":{},"17":{},"46":{},"50":{},"52":{},"53":{},"85":{},"93":{},"94":{},"96":{},"98":{},"138":{},"147":{},"148":{},"151":{},"154":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"187":{},"188":{},"192":{},"204":{},"213":{},"214":{},"217":{},"220":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"253":{},"254":{},"258":{}},"component":{}}],["scanner",{"_index":717,"title":{},"name":{},"text":{"6":{},"7":{},"14":{},"17":{},"45":{},"46":{},"50":{},"53":{},"85":{},"96":{},"138":{},"151":{},"161":{},"204":{},"217":{},"227":{},"234":{}},"component":{}}],["scenario",{"_index":1294,"title":{},"name":{},"text":{"21":{},"57":{},"98":{},"100":{},"154":{},"156":{},"220":{},"222":{}},"component":{}}],["schedul",{"_index":1426,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["schema",{"_index":46,"title":{},"name":{},"text":{"1":{},"19":{},"40":{},"47":{},"55":{},"76":{},"88":{},"100":{},"101":{},"129":{},"141":{},"156":{},"157":{},"182":{},"195":{},"207":{},"222":{},"223":{},"248":{}},"component":{}}],["schemas.yml",{"_index":44,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["schemd",{"_index":2919,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["scheme",{"_index":854,"title":{"83-12":{},"83-13":{},"83-14":{},"101-5":{},"101-7":{},"136-12":{},"136-13":{},"136-14":{},"157-8":{},"157-10":{},"202-12":{},"202-13":{},"202-14":{},"223-8":{},"223-10":{}},"name":{},"text":{"11":{},"14":{},"50":{},"95":{},"96":{},"101":{},"149":{},"151":{},"157":{},"215":{},"217":{},"223":{}},"component":{}}],["scienc",{"_index":1609,"title":{"31":{},"32":{},"33":{},"67":{},"68":{},"69":{},"116":{},"117":{},"118":{},"178":{},"179":{},"180":{},"244":{},"245":{},"246":{},"39-4":{},"75-4":{},"123-5":{},"186-5":{},"252-5":{}},"name":{},"text":{"31":{},"39":{},"67":{},"75":{},"98":{},"116":{},"123":{},"126":{},"153":{},"154":{},"178":{},"186":{},"192":{},"219":{},"220":{},"244":{},"252":{},"258":{}},"component":{}}],["scientist",{"_index":1632,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["scikit",{"_index":1707,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["scm",{"_index":140,"title":{"2-65":{},"41-65":{}},"name":{},"text":{},"component":{}}],["scm.global.readablerepos.opendevstack[x",{"_index":2167,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["scope",{"_index":22,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"96":{},"129":{},"130":{},"151":{},"195":{},"196":{},"217":{}},"component":{}}],["scratch",{"_index":1944,"title":{},"name":{},"text":{"39":{},"75":{},"123":{},"186":{},"252":{}},"component":{}}],["screen",{"_index":400,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["screenshot.t",{"_index":3805,"title":{},"name":{},"text":{"247":{}},"component":{}}],["screenshot.types.t",{"_index":3806,"title":{},"name":{},"text":{"247":{}},"component":{}}],["script",{"_index":6,"title":{"6-3":{},"45-3":{},"87-2":{},"140-2":{},"206-2":{}},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"12":{},"14":{},"19":{},"24":{},"27":{},"29":{},"32":{},"35":{},"36":{},"37":{},"39":{},"40":{},"41":{},"45":{},"50":{},"55":{},"60":{},"62":{},"63":{},"68":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"80":{},"87":{},"97":{},"98":{},"100":{},"108":{},"111":{},"112":{},"114":{},"117":{},"121":{},"122":{},"127":{},"129":{},"130":{},"133":{},"137":{},"140":{},"142":{},"146":{},"152":{},"154":{},"156":{},"161":{},"169":{},"172":{},"173":{},"176":{},"181":{},"184":{},"185":{},"193":{},"195":{},"196":{},"199":{},"203":{},"206":{},"208":{},"212":{},"218":{},"220":{},"222":{},"227":{},"234":{},"235":{},"238":{},"239":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["script.sh",{"_index":1115,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["scripting/develop",{"_index":860,"title":{},"name":{},"text":{"12":{}},"component":{}}],["scripts/creat",{"_index":2698,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["scrum",{"_index":1336,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["sea",{"_index":823,"title":{},"name":{},"text":{"10":{}},"component":{}}],["search",{"_index":345,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"91":{},"98":{},"145":{},"154":{},"211":{},"220":{}},"component":{}}],["second",{"_index":1102,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"100":{},"156":{},"222":{}},"component":{}}],["secret",{"_index":712,"title":{},"name":{},"text":{"6":{},"8":{},"13":{},"20":{},"24":{},"45":{},"47":{},"49":{},"56":{},"60":{},"80":{},"88":{},"92":{},"96":{},"98":{},"101":{},"133":{},"141":{},"146":{},"150":{},"151":{},"154":{},"157":{},"188":{},"199":{},"207":{},"212":{},"216":{},"217":{},"220":{},"223":{},"254":{}},"component":{}}],["secret.env",{"_index":551,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["secret.sh",{"_index":2704,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["secret=put",{"_index":1227,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["secretnam",{"_index":3281,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["secrets.json",{"_index":1775,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["section",{"_index":340,"title":{},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"27":{},"39":{},"41":{},"43":{},"45":{},"47":{},"62":{},"75":{},"80":{},"81":{},"88":{},"91":{},"94":{},"95":{},"98":{},"101":{},"111":{},"133":{},"141":{},"145":{},"148":{},"149":{},"151":{},"154":{},"157":{},"172":{},"199":{},"207":{},"211":{},"214":{},"215":{},"217":{},"220":{},"223":{},"238":{}},"component":{}}],["secur",{"_index":439,"title":{"12-4":{},"79-9":{},"80-11":{},"132-9":{},"133-11":{},"198-9":{},"199-11":{}},"name":{},"text":{"2":{},"12":{},"13":{},"14":{},"16":{},"19":{},"22":{},"24":{},"41":{},"49":{},"50":{},"52":{},"55":{},"58":{},"60":{},"79":{},"80":{},"83":{},"88":{},"93":{},"96":{},"100":{},"101":{},"128":{},"132":{},"133":{},"136":{},"141":{},"147":{},"151":{},"156":{},"157":{},"194":{},"198":{},"199":{},"202":{},"207":{},"213":{},"217":{},"222":{},"223":{},"240":{}},"component":{}}],["sed",{"_index":799,"title":{},"name":{},"text":{"10":{}},"component":{}}],["see",{"_index":252,"title":{},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"19":{},"20":{},"22":{},"27":{},"41":{},"43":{},"45":{},"47":{},"49":{},"50":{},"55":{},"56":{},"58":{},"62":{},"77":{},"78":{},"80":{},"81":{},"82":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"120":{},"123":{},"124":{},"125":{},"130":{},"131":{},"133":{},"135":{},"136":{},"141":{},"145":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"157":{},"166":{},"167":{},"169":{},"170":{},"172":{},"173":{},"174":{},"178":{},"181":{},"183":{},"184":{},"186":{},"190":{},"191":{},"196":{},"197":{},"199":{},"201":{},"202":{},"207":{},"211":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"223":{},"232":{},"233":{},"235":{},"236":{},"238":{},"239":{},"240":{},"244":{},"247":{},"249":{},"250":{},"252":{},"256":{},"257":{}},"component":{}}],["seed",{"_index":2897,"title":{},"name":{},"text":{"101":{},"113":{},"157":{},"175":{},"223":{},"241":{}},"component":{}}],["seen",{"_index":1134,"title":{},"name":{},"text":{"19":{},"28":{},"55":{},"65":{},"100":{},"114":{},"136":{},"146":{},"151":{},"156":{},"176":{},"202":{},"212":{},"217":{},"222":{},"242":{}},"component":{}}],["seldom",{"_index":3420,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["select",{"_index":226,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"14":{},"41":{},"44":{},"45":{},"47":{},"50":{},"77":{},"79":{},"80":{},"83":{},"88":{},"96":{},"102":{},"132":{},"133":{},"136":{},"141":{},"151":{},"158":{},"178":{},"198":{},"199":{},"202":{},"207":{},"217":{},"224":{},"244":{}},"component":{}}],["selector",{"_index":2574,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["self",{"_index":2711,"title":{},"name":{},"text":{"98":{}},"component":{}}],["semant",{"_index":3371,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["send",{"_index":689,"title":{"6-4":{},"45-4":{}},"name":{},"text":{"6":{},"13":{},"14":{},"19":{},"45":{},"47":{},"49":{},"50":{},"55":{},"88":{},"92":{},"96":{},"100":{},"141":{},"146":{},"151":{},"156":{},"207":{},"212":{},"217":{},"222":{}},"component":{}}],["sens",{"_index":3402,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["sent",{"_index":2203,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["separ",{"_index":772,"title":{},"name":{},"text":{"8":{},"12":{},"20":{},"29":{},"36":{},"47":{},"56":{},"63":{},"72":{},"82":{},"88":{},"93":{},"96":{},"98":{},"101":{},"112":{},"122":{},"135":{},"137":{},"141":{},"147":{},"150":{},"151":{},"154":{},"157":{},"173":{},"180":{},"185":{},"201":{},"203":{},"207":{},"213":{},"216":{},"217":{},"220":{},"223":{},"239":{},"246":{},"251":{}},"component":{}}],["seper",{"_index":27,"title":{},"name":{},"text":{"1":{},"40":{},"76":{},"129":{},"195":{}},"component":{}}],["sequenc",{"_index":2252,"title":{},"name":{},"text":{"81":{},"96":{}},"component":{}}],["sequenti",{"_index":2657,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["seri",{"_index":2873,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["serial",{"_index":2181,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["serv",{"_index":1551,"title":{},"name":{},"text":{"28":{},"32":{},"35":{},"36":{},"38":{},"47":{},"65":{},"68":{},"71":{},"72":{},"74":{},"88":{},"117":{},"121":{},"122":{},"141":{},"153":{},"184":{},"185":{},"189":{},"207":{},"219":{},"250":{},"251":{},"255":{}},"component":{}}],["server",{"_index":211,"title":{"77-1":{},"130-1":{},"196-1":{}},"name":{},"text":{"2":{},"6":{},"11":{},"12":{},"19":{},"24":{},"28":{},"29":{},"30":{},"32":{},"35":{},"36":{},"37":{},"41":{},"45":{},"55":{},"60":{},"63":{},"64":{},"65":{},"68":{},"71":{},"72":{},"73":{},"77":{},"79":{},"80":{},"87":{},"93":{},"96":{},"100":{},"101":{},"109":{},"112":{},"114":{},"117":{},"121":{},"122":{},"130":{},"132":{},"133":{},"138":{},"140":{},"147":{},"151":{},"156":{},"157":{},"170":{},"173":{},"174":{},"176":{},"184":{},"185":{},"196":{},"198":{},"199":{},"204":{},"206":{},"213":{},"217":{},"222":{},"223":{},"236":{},"239":{},"240":{},"242":{},"250":{},"251":{}},"component":{}}],["server_signatur",{"_index":845,"title":{},"name":{},"text":{"11":{}},"component":{}}],["servic",{"_index":547,"title":{"124":{},"190":{},"256":{},"32-2":{},"32-5":{},"68-2":{},"68-5":{},"77-15":{},"94-10":{},"98-5":{},"109-5":{},"117-2":{},"117-5":{},"126-5":{},"130-13":{},"148-10":{},"150-10":{},"154-6":{},"154-7":{},"170-5":{},"192-5":{},"196-13":{},"214-10":{},"216-10":{},"220-6":{},"220-7":{},"236-5":{},"258-5":{}},"name":{"32":{},"68":{},"117":{}},"text":{"2":{},"6":{},"8":{},"11":{},"14":{},"19":{},"22":{},"24":{},"32":{},"36":{},"38":{},"39":{},"41":{},"45":{},"47":{},"50":{},"55":{},"58":{},"60":{},"68":{},"72":{},"74":{},"75":{},"77":{},"79":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"102":{},"109":{},"117":{},"122":{},"123":{},"126":{},"127":{},"128":{},"130":{},"132":{},"133":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"170":{},"172":{},"174":{},"177":{},"178":{},"179":{},"186":{},"189":{},"192":{},"193":{},"194":{},"196":{},"198":{},"199":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"236":{},"238":{},"240":{},"243":{},"244":{},"245":{},"252":{},"255":{},"258":{}},"component":{}}],["service..svc:8080",{"_index":1722,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["service.yaml",{"_index":3564,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["service.yml",{"_index":3558,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["service/airflow",{"_index":1412,"title":{},"name":{},"text":{"24":{}},"component":{}}],["serviceaccount",{"_index":1019,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"99":{},"151":{},"154":{},"155":{},"217":{},"220":{},"221":{}},"component":{}}],["serviceregistry.instance.get(bitbucketservic",{"_index":2546,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["services.infrastructure.remote.dvc.data_sync",{"_index":1695,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["services.openshift.enabled=tru",{"_index":3447,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["session",{"_index":109,"title":{"2-24":{},"41-24":{}},"name":{},"text":{"2":{},"41":{},"79":{},"132":{},"178":{},"198":{},"244":{}},"component":{}}],["set",{"_index":17,"title":{"2-39":{},"2-40":{},"2-47":{},"41-39":{},"41-40":{},"41-47":{},"178-5":{},"244-5":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"8":{},"11":{},"12":{},"13":{},"14":{},"17":{},"20":{},"22":{},"25":{},"27":{},"29":{},"31":{},"32":{},"33":{},"35":{},"36":{},"37":{},"40":{},"41":{},"44":{},"45":{},"47":{},"49":{},"50":{},"53":{},"56":{},"58":{},"62":{},"63":{},"66":{},"67":{},"68":{},"69":{},"71":{},"72":{},"73":{},"76":{},"77":{},"79":{},"80":{},"81":{},"83":{},"85":{},"87":{},"88":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"112":{},"115":{},"116":{},"117":{},"118":{},"121":{},"122":{},"123":{},"126":{},"129":{},"130":{},"132":{},"133":{},"136":{},"138":{},"140":{},"141":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"172":{},"173":{},"174":{},"177":{},"178":{},"179":{},"180":{},"181":{},"184":{},"185":{},"186":{},"189":{},"192":{},"195":{},"196":{},"198":{},"199":{},"202":{},"204":{},"206":{},"207":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"238":{},"239":{},"240":{},"243":{},"244":{},"245":{},"246":{},"247":{},"250":{},"251":{},"252":{},"255":{},"258":{}},"component":{}}],["settings.gradlew",{"_index":1497,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"172":{},"238":{}},"component":{}}],["settings.r",{"_index":3569,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["setup",{"_index":3,"title":{"1":{},"40":{},"76":{},"77":{},"129":{},"130":{},"195":{},"196":{},"2-9":{},"2-37":{},"6-8":{},"8-2":{},"13-1":{},"24-1":{},"32-1":{},"41-9":{},"41-37":{},"45-8":{},"49-1":{},"60-1":{},"68-1":{},"77-2":{},"80-11":{},"117-1":{},"130-2":{},"133-11":{},"196-2":{},"199-11":{}},"name":{"1":{},"40":{},"76":{},"129":{},"195":{}},"text":{"1":{},"2":{},"6":{},"8":{},"13":{},"14":{},"21":{},"22":{},"24":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"40":{},"41":{},"45":{},"49":{},"50":{},"57":{},"58":{},"60":{},"63":{},"64":{},"65":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"76":{},"77":{},"78":{},"79":{},"80":{},"83":{},"92":{},"94":{},"96":{},"98":{},"100":{},"101":{},"108":{},"112":{},"113":{},"114":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"129":{},"130":{},"131":{},"132":{},"133":{},"136":{},"142":{},"146":{},"148":{},"151":{},"154":{},"156":{},"157":{},"169":{},"173":{},"174":{},"175":{},"176":{},"178":{},"181":{},"183":{},"184":{},"185":{},"186":{},"192":{},"195":{},"196":{},"197":{},"198":{},"199":{},"202":{},"208":{},"212":{},"214":{},"217":{},"220":{},"222":{},"223":{},"235":{},"239":{},"240":{},"241":{},"242":{},"244":{},"247":{},"249":{},"250":{},"251":{},"252":{},"258":{}},"component":{}}],["setup.conf",{"_index":843,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["setup.pi",{"_index":1430,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["setup/ansible/rol",{"_index":2008,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["setup/repos.sh",{"_index":2049,"title":{},"name":{},"text":{"77":{}},"component":{}}],["setup/script",{"_index":449,"title":{},"name":{},"text":{"2":{}},"component":{}}],["sever",{"_index":179,"title":{},"name":{},"text":{"2":{},"6":{},"19":{},"22":{},"24":{},"41":{},"45":{},"55":{},"58":{},"60":{},"84":{},"86":{},"96":{},"100":{},"102":{},"139":{},"151":{},"156":{},"158":{},"205":{},"217":{},"222":{},"224":{}},"component":{}}],["severitythreshold",{"_index":2560,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sh",{"_index":1114,"title":{},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"99":{},"115":{},"155":{},"174":{},"177":{},"221":{},"240":{},"243":{}},"component":{}}],["sh(\"oc",{"_index":2529,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sh(script",{"_index":3466,"title":{},"name":{},"text":{"161":{},"172":{},"181":{},"227":{},"234":{},"238":{},"247":{}},"component":{}}],["sha",{"_index":1022,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"96":{},"98":{},"100":{},"151":{},"154":{},"156":{},"217":{},"220":{},"222":{}},"component":{}}],["shall",{"_index":159,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["share",{"_index":144,"title":{"10":{},"14":{},"50":{},"97":{},"152":{},"218":{},"2-68":{},"41-68":{},"80-13":{},"94-10":{},"95-3":{},"133-13":{},"148-10":{},"149-3":{},"150-2":{},"199-13":{},"214-10":{},"215-3":{},"216-2":{}},"name":{},"text":{"2":{},"4":{},"5":{},"7":{},"12":{},"14":{},"21":{},"24":{},"25":{},"26":{},"27":{},"31":{},"36":{},"37":{},"39":{},"41":{},"43":{},"44":{},"46":{},"50":{},"57":{},"60":{},"61":{},"62":{},"66":{},"67":{},"72":{},"73":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"87":{},"91":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"108":{},"109":{},"110":{},"111":{},"115":{},"116":{},"122":{},"123":{},"124":{},"125":{},"130":{},"133":{},"135":{},"136":{},"140":{},"145":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"157":{},"169":{},"170":{},"171":{},"172":{},"177":{},"178":{},"185":{},"186":{},"190":{},"191":{},"196":{},"199":{},"201":{},"202":{},"206":{},"211":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"223":{},"235":{},"236":{},"237":{},"238":{},"240":{},"243":{},"244":{},"251":{},"252":{},"256":{},"257":{}},"component":{}}],["shared_library_ref",{"_index":3434,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["sharedlibraryref",{"_index":3433,"title":{},"name":{},"text":{"155":{},"221":{}},"component":{}}],["sharedlibraryrepositori",{"_index":939,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"148":{},"214":{}},"component":{}}],["shell",{"_index":273,"title":{},"name":{},"text":{"2":{},"30":{},"41":{},"64":{},"80":{},"113":{},"133":{},"175":{},"199":{},"241":{}},"component":{}}],["shi",{"_index":626,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["shift",{"_index":2459,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["shim",{"_index":1917,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["shini",{"_index":1755,"title":{"69":{},"118":{},"179":{},"245":{}},"name":{},"text":{"33":{},"39":{},"69":{},"75":{},"118":{},"123":{},"179":{},"186":{},"245":{},"252":{}},"component":{}}],["ship",{"_index":931,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"96":{},"97":{},"123":{},"149":{},"151":{},"152":{},"184":{},"186":{},"215":{},"217":{},"218":{},"240":{},"250":{},"252":{}},"component":{}}],["shop",{"_index":3380,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["short",{"_index":2484,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["shorten",{"_index":1112,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"95":{},"96":{},"98":{},"149":{},"151":{},"154":{},"215":{},"217":{},"220":{}},"component":{}}],["shortgitcommit",{"_index":2483,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["show",{"_index":352,"title":{},"name":{},"text":{"2":{},"29":{},"41":{},"63":{},"81":{},"96":{},"120":{},"130":{},"151":{},"157":{},"161":{},"183":{},"196":{},"217":{},"223":{},"227":{},"234":{},"249":{}},"component":{}}],["showcas",{"_index":1596,"title":{},"name":{},"text":{"30":{},"32":{},"64":{},"68":{},"117":{},"187":{},"188":{},"253":{},"254":{}},"component":{}}],["shown",{"_index":374,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"93":{},"95":{},"98":{},"126":{},"133":{},"147":{},"149":{},"154":{},"192":{},"199":{},"213":{},"215":{},"220":{},"258":{}},"component":{}}],["siad",{"_index":3277,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["side",{"_index":1597,"title":{},"name":{},"text":{"30":{},"64":{},"95":{},"149":{},"215":{}},"component":{}}],["sidecar",{"_index":3634,"title":{},"name":{},"text":{"180":{},"246":{}},"component":{}}],["sieg",{"_index":886,"title":{},"name":{},"text":{"12":{}},"component":{}}],["sign",{"_index":396,"title":{},"name":{},"text":{"2":{},"41":{},"153":{},"189":{},"219":{},"255":{}},"component":{}}],["similar",{"_index":1933,"title":{},"name":{},"text":{"38":{},"47":{},"74":{},"88":{},"128":{},"141":{},"174":{},"194":{},"207":{},"240":{}},"component":{}}],["similarli",{"_index":3426,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["simmpl",{"_index":1560,"title":{},"name":{},"text":{"29":{},"63":{},"112":{}},"component":{}}],["simpl",{"_index":1123,"title":{},"name":{},"text":{"14":{},"24":{},"32":{},"50":{},"60":{},"68":{},"97":{},"109":{},"117":{},"142":{},"152":{},"170":{},"173":{},"174":{},"208":{},"218":{},"236":{},"239":{},"240":{}},"component":{}}],["simpli",{"_index":788,"title":{},"name":{},"text":{"8":{},"26":{},"36":{},"37":{},"47":{},"61":{},"72":{},"73":{},"80":{},"88":{},"96":{},"98":{},"109":{},"110":{},"114":{},"122":{},"126":{},"128":{},"133":{},"136":{},"137":{},"141":{},"151":{},"154":{},"170":{},"171":{},"176":{},"184":{},"185":{},"192":{},"194":{},"199":{},"202":{},"203":{},"207":{},"217":{},"220":{},"236":{},"237":{},"242":{},"250":{},"251":{},"258":{}},"component":{}}],["simultan",{"_index":3150,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["singl",{"_index":2076,"title":{},"name":{},"text":{"78":{},"79":{},"83":{},"98":{},"100":{},"101":{},"131":{},"132":{},"136":{},"153":{},"154":{},"156":{},"157":{},"185":{},"189":{},"197":{},"198":{},"202":{},"219":{},"220":{},"222":{},"223":{},"251":{},"255":{}},"component":{}}],["sit",{"_index":794,"title":{},"name":{},"text":{"10":{},"136":{},"202":{}},"component":{}}],["site",{"_index":436,"title":{"82-3":{},"135-3":{},"201-3":{}},"name":{},"text":{"2":{},"41":{},"82":{},"135":{},"201":{}},"component":{}}],["situat",{"_index":2872,"title":{},"name":{},"text":{"100":{},"127":{},"156":{},"193":{},"222":{}},"component":{}}],["six",{"_index":1481,"title":{},"name":{},"text":{"26":{},"61":{},"110":{},"171":{},"237":{}},"component":{}}],["size",{"_index":1652,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["skeleton",{"_index":769,"title":{},"name":{},"text":{"8":{},"189":{},"255":{}},"component":{}}],["sketch",{"_index":1309,"title":{},"name":{},"text":{"22":{},"58":{},"102":{}},"component":{}}],["skip",{"_index":287,"title":{"96-11":{},"151-11":{},"217-11":{}},"name":{},"text":{"2":{},"14":{},"38":{},"41":{},"50":{},"74":{},"76":{},"96":{},"98":{},"129":{},"151":{},"154":{},"195":{},"217":{},"220":{},"240":{}},"component":{}}],["skiplibcheck",{"_index":3066,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["sklingel",{"_index":1636,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["skopeo",{"_index":2313,"title":{"94-13":{},"148-13":{},"214-13":{}},"name":{},"text":{"85":{},"94":{},"138":{},"148":{},"204":{},"214":{}},"component":{}}],["slash",{"_index":969,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["slate",{"_index":2410,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["slave",{"_index":137,"title":{"7":{},"46":{},"2-63":{},"4-6":{},"6-5":{},"14-8":{},"25-6":{},"26-6":{},"27-12":{},"28-6":{},"29-6":{},"30-6":{},"31-6":{},"32-19":{},"33-6":{},"34-6":{},"35-6":{},"36-6":{},"37-6":{},"38-6":{},"41-63":{},"43-6":{},"45-5":{},"50-8":{},"61-6":{},"62-12":{},"63-6":{},"64-6":{},"65-6":{},"66-6":{},"67-6":{},"68-19":{},"69-6":{},"70-6":{},"71-6":{},"72-6":{},"73-6":{},"74-6":{},"94-8":{},"148-8":{},"214-8":{}},"name":{"7":{},"46":{}},"text":{"2":{},"4":{},"6":{},"7":{},"14":{},"21":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"45":{},"46":{},"50":{},"57":{},"61":{},"62":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["slightli",{"_index":1955,"title":{},"name":{},"text":{"39":{},"75":{},"95":{},"149":{},"215":{}},"component":{}}],["slim",{"_index":2429,"title":{},"name":{},"text":{"95":{},"149":{},"174":{},"215":{},"240":{}},"component":{}}],["slow",{"_index":611,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["small",{"_index":660,"title":{},"name":{},"text":{"5":{},"44":{},"83":{},"98":{},"154":{},"220":{}},"component":{}}],["smell",{"_index":899,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"213":{}},"component":{}}],["smtp",{"_index":2324,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["snapshot",{"_index":1504,"title":{},"name":{},"text":{"27":{},"30":{},"62":{},"64":{},"111":{},"172":{},"238":{}},"component":{}}],["snip",{"_index":2998,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["snyk",{"_index":762,"title":{"14-11":{},"14-14":{},"50-11":{},"50-14":{}},"name":{},"text":{"7":{},"14":{},"16":{},"46":{},"50":{},"52":{},"85":{},"96":{},"138":{},"151":{},"204":{},"217":{}},"component":{}}],["snyk.io",{"_index":1080,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["snyk_authentication_cod",{"_index":1084,"title":{},"name":{},"text":{"14":{},"16":{},"50":{},"52":{}},"component":{}}],["snyk_distribution_url",{"_index":2314,"title":{},"name":{},"text":{"85":{},"138":{},"204":{}},"component":{}}],["snykauthenticationcod",{"_index":955,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["softwar",{"_index":215,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"98":{},"101":{},"136":{},"138":{},"153":{},"154":{},"157":{},"177":{},"189":{},"202":{},"204":{},"219":{},"220":{},"223":{},"243":{},"255":{}},"component":{}}],["solut",{"_index":1783,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"128":{},"136":{},"150":{},"174":{},"181":{},"194":{},"202":{},"216":{},"217":{},"240":{},"247":{}},"component":{}}],["solv",{"_index":1563,"title":{},"name":{},"text":{"29":{},"63":{},"112":{},"173":{},"239":{}},"component":{}}],["someon",{"_index":2598,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["someth",{"_index":1295,"title":{},"name":{},"text":{"21":{},"57":{},"96":{},"98":{},"100":{},"101":{},"151":{},"154":{},"156":{},"157":{},"217":{},"220":{},"222":{},"223":{}},"component":{}}],["sometim",{"_index":610,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["sonar",{"_index":1106,"title":{"93-1":{},"147-1":{},"213-1":{}},"name":{},"text":{"14":{},"17":{},"24":{},"25":{},"26":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"39":{},"50":{},"53":{},"60":{},"61":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"75":{},"96":{},"99":{},"108":{},"110":{},"112":{},"113":{},"114":{},"115":{},"120":{},"121":{},"122":{},"146":{},"151":{},"155":{},"161":{},"169":{},"171":{},"173":{},"174":{},"175":{},"176":{},"177":{},"183":{},"184":{},"185":{},"212":{},"217":{},"221":{},"227":{},"234":{},"235":{},"237":{},"239":{},"240":{},"241":{},"242":{},"243":{},"249":{},"250":{},"251":{}},"component":{}}],["sonar.java.binaries=build/class",{"_index":2345,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.java.libraries=build/lib",{"_index":2346,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.junit.reportpaths=build/test",{"_index":2347,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.language=java",{"_index":2341,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.projectkey=test",{"_index":2338,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.projectname=test",{"_index":2339,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.projectvers",{"_index":1111,"title":{},"name":{},"text":{"14":{},"17":{},"50":{},"53":{},"96":{},"151":{},"217":{}},"component":{}}],["sonar.sourceencoding=utf",{"_index":2344,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar.sources=src",{"_index":2340,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonar:2.6.1",{"_index":703,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonar_auth_token",{"_index":714,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonar_edit",{"_index":2482,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sonar_server_url",{"_index":713,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonar_vers",{"_index":3219,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["sonarj",{"_index":916,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["sonarjava",{"_index":915,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["sonarlint",{"_index":2337,"title":{"93-3":{},"147-3":{},"213-3":{}},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["sonarqub",{"_index":135,"title":{"13":{},"49":{},"92":{},"93":{},"146":{},"147":{},"212":{},"213":{},"2-62":{},"14-16":{},"41-62":{},"50-16":{},"77-13":{},"79-8":{},"92-1":{},"93-4":{},"94-12":{},"130-11":{},"132-8":{},"146-2":{},"147-4":{},"148-12":{},"196-11":{},"198-8":{},"212-2":{},"213-4":{},"214-12":{}},"name":{},"text":{"2":{},"6":{},"7":{},"13":{},"14":{},"17":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"45":{},"46":{},"49":{},"50":{},"53":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"77":{},"79":{},"83":{},"85":{},"87":{},"92":{},"93":{},"94":{},"95":{},"96":{},"98":{},"108":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"128":{},"130":{},"132":{},"136":{},"138":{},"140":{},"146":{},"147":{},"148":{},"149":{},"151":{},"154":{},"169":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"181":{},"183":{},"184":{},"185":{},"186":{},"194":{},"196":{},"198":{},"202":{},"204":{},"206":{},"212":{},"213":{},"214":{},"215":{},"217":{},"220":{},"235":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"247":{},"249":{},"250":{},"251":{},"252":{}},"component":{}}],["sonarqube.groovi",{"_index":709,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["sonarqube/sonarqube.sql",{"_index":2122,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["sonarqubebranch",{"_index":1045,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["sonarqubeedit",{"_index":2481,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sonarserv",{"_index":710,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["sonarsourc",{"_index":891,"title":{},"name":{},"text":{"13":{},"49":{},"93":{},"147":{},"213":{}},"component":{}}],["soon",{"_index":511,"title":{},"name":{},"text":{"2":{},"41":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["sops.yaml",{"_index":3336,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sort",{"_index":1453,"title":{},"name":{},"text":{"24":{},"60":{},"121":{},"184":{},"250":{}},"component":{}}],["sound",{"_index":3149,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["sourc",{"_index":593,"title":{"96-9":{},"98-19":{},"127-4":{},"151-9":{},"154-22":{},"193-4":{},"217-9":{},"220-22":{}},"name":{},"text":{"4":{},"6":{},"13":{},"14":{},"17":{},"24":{},"29":{},"32":{},"34":{},"39":{},"43":{},"45":{},"49":{},"50":{},"53":{},"60":{},"63":{},"68":{},"70":{},"75":{},"77":{},"78":{},"80":{},"91":{},"93":{},"96":{},"98":{},"99":{},"100":{},"108":{},"112":{},"113":{},"115":{},"117":{},"119":{},"121":{},"126":{},"130":{},"131":{},"133":{},"136":{},"137":{},"142":{},"145":{},"146":{},"147":{},"151":{},"154":{},"155":{},"156":{},"169":{},"172":{},"173":{},"174":{},"175":{},"177":{},"180":{},"184":{},"185":{},"192":{},"196":{},"197":{},"199":{},"202":{},"203":{},"208":{},"211":{},"212":{},"213":{},"217":{},"220":{},"221":{},"222":{},"235":{},"238":{},"239":{},"240":{},"241":{},"243":{},"246":{},"250":{},"251":{},"258":{}},"component":{}}],["source_featur",{"_index":1670,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["sourcecompat",{"_index":3523,"title":{},"name":{},"text":{"172":{},"238":{}},"component":{}}],["sourcecredenti",{"_index":3349,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sourcedir",{"_index":2780,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["sourceenvironmenttoclon",{"_index":3128,"title":{},"name":{},"text":{"126":{},"192":{},"258":{}},"component":{}}],["sourceimageurlincludingregistri",{"_index":3350,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["sourceproject",{"_index":2583,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["sourcesecret",{"_index":2184,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["sourcetag",{"_index":2584,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["space",{"_index":438,"title":{},"name":{},"text":{"2":{},"22":{},"41":{},"58":{},"77":{},"81":{},"100":{},"101":{},"102":{},"130":{},"136":{},"156":{},"157":{},"158":{},"196":{},"202":{},"222":{},"223":{},"224":{}},"component":{}}],["speak",{"_index":2687,"title":{},"name":{},"text":{"98":{},"108":{},"154":{},"169":{},"220":{},"235":{}},"component":{}}],["spec",{"_index":1924,"title":{},"name":{},"text":{"38":{},"74":{},"80":{},"133":{},"199":{},"240":{}},"component":{}}],["spec.t",{"_index":1543,"title":{},"name":{},"text":{"28":{},"35":{},"65":{},"71":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["spec/output/imagelabel",{"_index":2218,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["spechelper.groovi",{"_index":3102,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["special",{"_index":65,"title":{},"name":{},"text":{"1":{},"22":{},"27":{},"40":{},"58":{},"62":{},"76":{},"98":{},"101":{},"103":{},"106":{},"111":{},"129":{},"154":{},"157":{},"159":{},"166":{},"167":{},"172":{},"195":{},"220":{},"223":{},"225":{},"232":{},"233":{},"238":{}},"component":{}}],["specialpermissionschemeid",{"_index":2922,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["specialpermissionset",{"_index":2867,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["specif",{"_index":972,"title":{"80-12":{},"133-12":{},"199-12":{}},"name":{},"text":{"14":{},"19":{},"20":{},"21":{},"27":{},"32":{},"50":{},"55":{},"56":{},"57":{},"62":{},"68":{},"78":{},"80":{},"81":{},"83":{},"93":{},"96":{},"98":{},"100":{},"101":{},"102":{},"111":{},"117":{},"123":{},"126":{},"127":{},"128":{},"130":{},"131":{},"133":{},"136":{},"137":{},"147":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"158":{},"172":{},"178":{},"182":{},"186":{},"189":{},"192":{},"193":{},"194":{},"196":{},"197":{},"199":{},"202":{},"203":{},"213":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"224":{},"238":{},"244":{},"248":{},"252":{},"255":{},"258":{}},"component":{}}],["specifi",{"_index":121,"title":{"2-38":{},"41-38":{}},"name":{},"text":{"6":{},"14":{},"17":{},"22":{},"29":{},"31":{},"32":{},"35":{},"45":{},"50":{},"53":{},"58":{},"63":{},"67":{},"68":{},"71":{},"76":{},"87":{},"88":{},"96":{},"98":{},"101":{},"116":{},"117":{},"121":{},"128":{},"129":{},"130":{},"140":{},"141":{},"150":{},"151":{},"153":{},"154":{},"157":{},"178":{},"184":{},"189":{},"194":{},"195":{},"196":{},"206":{},"207":{},"216":{},"217":{},"219":{},"220":{},"223":{},"244":{},"250":{},"255":{}},"component":{}}],["specs.t",{"_index":1832,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["spin",{"_index":1644,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"130":{},"196":{}},"component":{}}],["split",{"_index":1113,"title":{},"name":{},"text":{"14":{},"50":{},"151":{},"217":{}},"component":{}}],["spock",{"_index":3092,"title":{"120":{},"183":{},"249":{}},"name":{"120":{},"183":{},"249":{}},"text":{"120":{},"123":{},"183":{},"186":{},"249":{},"252":{}},"component":{}}],["spock/geb",{"_index":3104,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["spread",{"_index":2267,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["spring",{"_index":1133,"title":{"27":{},"62":{},"111":{},"172":{},"238":{}},"name":{},"text":{"19":{},"20":{},"27":{},"55":{},"56":{},"62":{},"93":{},"100":{},"101":{},"111":{},"136":{},"147":{},"153":{},"156":{},"157":{},"172":{},"189":{},"202":{},"213":{},"219":{},"222":{},"223":{},"238":{},"255":{}},"component":{}}],["spring.profiles.active=crowd",{"_index":1217,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.profiles.active=odsbox,odsbox_quickstart",{"_index":2811,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.author",{"_index":1233,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.jwk",{"_index":1243,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.token",{"_index":1237,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.provider.keycloak.us",{"_index":1240,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.azure.cli",{"_index":2938,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.author",{"_index":1229,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.cli",{"_index":1225,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.clientname=od",{"_index":1228,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.redirecturi={baseurl}/login/oauth2/code/{registrationid",{"_index":1231,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["spring.security.oauth2.client.registration.keycloak.scope=openid",{"_index":1232,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["springboot",{"_index":1484,"title":{},"name":{"27":{},"62":{},"111":{},"172":{},"238":{}},"text":{"101":{},"115":{},"123":{},"157":{},"161":{},"177":{},"186":{},"223":{},"227":{},"243":{},"252":{}},"component":{}}],["springboot.desc=backend",{"_index":2901,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["springboot.repo=od",{"_index":2902,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["springboot/java",{"_index":1938,"title":{},"name":{},"text":{"39":{},"75":{},"101":{},"157":{},"223":{}},"component":{}}],["spring’",{"_index":1175,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["sq",{"_index":750,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["sqlx",{"_index":3544,"title":{"240-12":{}},"name":{},"text":{"174":{},"240":{}},"component":{}}],["sqlx’",{"_index":3785,"title":{},"name":{},"text":{"240":{}},"component":{}}],["src",{"_index":1434,"title":{"32-5":{},"68-5":{},"117-5":{}},"name":{},"text":{"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"35":{},"36":{},"37":{},"38":{},"60":{},"62":{},"63":{},"64":{},"65":{},"68":{},"71":{},"72":{},"73":{},"74":{},"76":{},"111":{},"112":{},"114":{},"117":{},"120":{},"121":{},"122":{},"129":{},"172":{},"173":{},"174":{},"176":{},"180":{},"183":{},"184":{},"185":{},"195":{},"238":{},"239":{},"240":{},"242":{},"246":{},"249":{},"250":{},"251":{}},"component":{}}],["src/environ",{"_index":3118,"title":{},"name":{},"text":{"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["src/main.pi",{"_index":3025,"title":{},"name":{},"text":{"112":{},"173":{},"180":{},"239":{},"246":{}},"component":{}}],["src/main/resources/application.properti",{"_index":1332,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["src/main/resources/permiss",{"_index":1327,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["src/model",{"_index":1655,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/model/data_clean",{"_index":1657,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/model/feature_prep",{"_index":1658,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/model/model_wrapper.pi",{"_index":1662,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/requirements.txt",{"_index":1656,"title":{},"name":{},"text":{"32":{},"68":{},"112":{},"117":{}},"component":{}}],["src/servic",{"_index":1654,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/services/remote/dvc/data_sync.pi",{"_index":1694,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["src/trainer.pi",{"_index":1678,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["ssf",{"_index":3582,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["ssh",{"_index":119,"title":{"2-34":{},"4-1":{},"4-3":{},"41-34":{},"43-1":{},"43-3":{},"91-1":{},"91-3":{},"145-1":{},"145-3":{},"211-1":{},"211-3":{}},"name":{},"text":{"2":{},"4":{},"32":{},"41":{},"43":{},"68":{},"91":{},"117":{},"145":{},"211":{}},"component":{}}],["sso",{"_index":50,"title":{},"name":{},"text":{"1":{},"2":{},"40":{},"41":{},"76":{},"129":{},"195":{}},"component":{}}],["stabl",{"_index":1012,"title":{},"name":{},"text":{"14":{},"50":{},"77":{},"96":{},"99":{},"128":{},"151":{},"155":{},"174":{},"181":{},"194":{},"217":{},"221":{},"240":{},"247":{}},"component":{}}],["stack",{"_index":232,"title":{},"name":{},"text":{"2":{},"3":{},"41":{},"42":{},"90":{},"109":{},"144":{},"170":{},"210":{},"236":{}},"component":{}}],["stacktrac",{"_index":3468,"title":{},"name":{},"text":{"161":{},"172":{},"227":{},"238":{}},"component":{}}],["stage",{"_index":754,"title":{"14-2":{},"14-7":{},"14-12":{},"14-14":{},"14-15":{},"14-16":{},"50-2":{},"50-7":{},"50-12":{},"50-14":{},"50-15":{},"50-16":{},"95-4":{},"96-14":{},"99-6":{},"149-4":{},"150-6":{},"151-12":{},"155-6":{},"215-4":{},"216-6":{},"217-12":{},"221-6":{}},"name":{},"text":{"7":{},"14":{},"16":{},"17":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"46":{},"50":{},"52":{},"53":{},"63":{},"64":{},"65":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"77":{},"81":{},"93":{},"95":{},"96":{},"98":{},"99":{},"108":{},"109":{},"112":{},"113":{},"114":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"130":{},"147":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"169":{},"170":{},"172":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"187":{},"188":{},"196":{},"213":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"235":{},"236":{},"238":{},"239":{},"240":{},"241":{},"242":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"253":{},"254":{}},"component":{}}],["stage('build",{"_index":950,"title":{},"name":{},"text":{"14":{},"25":{},"50":{},"66":{},"96":{},"115":{},"151":{},"177":{},"217":{},"243":{}},"component":{}}],["stage('cleanup",{"_index":2521,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["stage('say",{"_index":2544,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["stage('unit",{"_index":1471,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["stage('writ",{"_index":2772,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["stagebuild",{"_index":1517,"title":{},"name":{},"text":{"27":{},"30":{},"35":{},"38":{},"62":{},"64":{},"71":{},"74":{},"111":{},"113":{},"121":{},"172":{},"175":{},"184":{},"238":{},"241":{},"250":{}},"component":{}}],["stagebuild(context",{"_index":1999,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["stagebuild(def",{"_index":1466,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["stagecreateopenshiftenviron",{"_index":2209,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["stagedeploytoopenshift",{"_index":1521,"title":{},"name":{},"text":{"27":{},"62":{},"95":{},"111":{},"149":{},"172":{},"215":{},"238":{}},"component":{}}],["stagedeploytoopenshift(context",{"_index":959,"title":{},"name":{},"text":{"14":{},"50":{},"95":{},"149":{},"215":{}},"component":{}}],["stagelint",{"_index":1817,"title":{},"name":{},"text":{"35":{},"38":{},"71":{},"74":{},"121":{}},"component":{}}],["stageowaspdependencycheck(context",{"_index":953,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["stagescanforsnyk",{"_index":1086,"title":{},"name":{"16":{},"52":{}},"text":{"14":{},"50":{},"95":{},"149":{},"215":{}},"component":{}}],["stagescanforsnyk(context",{"_index":954,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["stagescanforsonarqub",{"_index":755,"title":{},"name":{"17":{},"53":{}},"text":{"7":{},"27":{},"46":{},"62":{},"95":{},"111":{},"149":{},"172":{},"215":{},"238":{}},"component":{}}],["stagescanforsonarqube(context",{"_index":951,"title":{},"name":{},"text":{"14":{},"50":{},"94":{},"95":{},"148":{},"149":{},"214":{},"215":{}},"component":{}}],["stagestartopenshiftbuild",{"_index":1096,"title":{},"name":{"18":{},"54":{}},"text":{"14":{},"18":{},"27":{},"50":{},"54":{},"62":{},"80":{},"95":{},"111":{},"133":{},"149":{},"172":{},"199":{},"215":{},"238":{}},"component":{}}],["stagestartopenshiftbuild(context",{"_index":958,"title":{},"name":{},"text":{"14":{},"18":{},"50":{},"54":{},"95":{},"149":{},"215":{}},"component":{}}],["stagetest",{"_index":1780,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"120":{},"181":{},"183":{},"247":{},"249":{}},"component":{}}],["stagetriggerallbuild",{"_index":2210,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["stageunittest",{"_index":1465,"title":{},"name":{},"text":{"25":{},"35":{},"38":{},"66":{},"71":{},"74":{},"115":{},"121":{},"177":{},"184":{},"243":{},"250":{}},"component":{}}],["stageunittest(def",{"_index":1470,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["stageupdateopenshiftbuild",{"_index":2208,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["stageuploadtonexu",{"_index":1518,"title":{},"name":{},"text":{"27":{},"62":{},"95":{},"111":{},"149":{},"172":{},"215":{},"238":{}},"component":{}}],["stageuploadtonexus(context",{"_index":957,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["standar",{"_index":3006,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["standard",{"_index":646,"title":{},"name":{},"text":{"5":{},"44":{},"81":{},"83":{},"136":{},"202":{}},"component":{}}],["start",{"_index":148,"title":{"2":{},"41":{},"4-5":{},"14-15":{},"25-4":{},"26-4":{},"27-10":{},"28-4":{},"29-4":{},"30-4":{},"31-4":{},"33-4":{},"34-4":{},"35-4":{},"36-4":{},"37-4":{},"38-4":{},"43-5":{},"50-15":{},"61-4":{},"62-10":{},"63-4":{},"64-4":{},"65-4":{},"66-4":{},"67-4":{},"69-4":{},"70-4":{},"71-4":{},"72-4":{},"73-4":{},"74-4":{},"91-5":{},"109-4":{},"110-4":{},"111-10":{},"112-4":{},"113-4":{},"114-6":{},"115-4":{},"116-4":{},"118-4":{},"119-4":{},"120-7":{},"120-8":{},"121-4":{},"122-4":{},"124-4":{},"125-4":{},"145-5":{},"170-4":{},"171-4":{},"172-10":{},"173-4":{},"174-4":{},"175-4":{},"176-6":{},"177-4":{},"178-4":{},"179-4":{},"180-4":{},"181-4":{},"182-4":{},"183-7":{},"183-8":{},"184-4":{},"185-4":{},"187-4":{},"188-4":{},"190-4":{},"191-4":{},"211-5":{},"236-4":{},"237-4":{},"238-10":{},"239-4":{},"240-4":{},"241-4":{},"242-6":{},"243-4":{},"244-4":{},"245-4":{},"246-4":{},"247-4":{},"248-4":{},"249-7":{},"249-8":{},"250-4":{},"251-4":{},"253-4":{},"254-4":{},"256-4":{},"257-4":{}},"name":{},"text":{"2":{},"4":{},"5":{},"6":{},"13":{},"14":{},"15":{},"17":{},"19":{},"22":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"36":{},"37":{},"38":{},"39":{},"41":{},"43":{},"44":{},"45":{},"47":{},"49":{},"50":{},"51":{},"53":{},"55":{},"58":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"72":{},"73":{},"74":{},"75":{},"76":{},"78":{},"79":{},"80":{},"81":{},"83":{},"84":{},"88":{},"91":{},"92":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"131":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"145":{},"146":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"185":{},"186":{},"192":{},"193":{},"194":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"211":{},"212":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"251":{},"252":{},"258":{}},"component":{}}],["started/instal",{"_index":3656,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["starter",{"_index":1527,"title":{"32-11":{},"68-11":{},"117-11":{}},"name":{},"text":{"28":{},"29":{},"35":{},"38":{},"63":{},"65":{},"71":{},"74":{},"112":{},"173":{},"174":{},"180":{},"187":{},"239":{},"240":{},"246":{},"253":{}},"component":{}}],["startup",{"_index":540,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["stash",{"_index":3116,"title":{},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["state",{"_index":619,"title":{},"name":{},"text":{"4":{},"13":{},"22":{},"43":{},"49":{},"58":{},"77":{},"80":{},"81":{},"91":{},"96":{},"98":{},"101":{},"130":{},"133":{},"145":{},"151":{},"154":{},"157":{},"196":{},"199":{},"211":{},"217":{},"220":{},"223":{}},"component":{}}],["statement",{"_index":864,"title":{},"name":{},"text":{"12":{},"115":{},"173":{},"177":{},"239":{},"243":{}},"component":{}}],["static",{"_index":895,"title":{},"name":{},"text":{"13":{},"29":{},"38":{},"49":{},"63":{},"74":{},"82":{},"93":{},"135":{},"136":{},"147":{},"201":{},"202":{},"213":{},"240":{}},"component":{}}],["statist",{"_index":1588,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["statu",{"_index":907,"title":{},"name":{},"text":{"13":{},"22":{},"49":{},"58":{},"96":{},"151":{},"161":{},"172":{},"174":{},"178":{},"181":{},"217":{},"227":{},"234":{},"238":{},"240":{},"244":{},"247":{}},"component":{}}],["status.r",{"_index":3567,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["status_test.r",{"_index":3572,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["stay",{"_index":1343,"title":{},"name":{},"text":{"22":{},"58":{},"83":{},"101":{},"136":{},"157":{},"202":{},"223":{}},"component":{}}],["step",{"_index":90,"title":{"2-15":{},"2-16":{},"2-17":{},"2-18":{},"2-19":{},"2-20":{},"2-21":{},"2-22":{},"2-37":{},"2-38":{},"2-39":{},"2-40":{},"2-41":{},"2-47":{},"2-48":{},"2-49":{},"2-50":{},"2-51":{},"2-52":{},"2-53":{},"2-54":{},"13-4":{},"41-15":{},"41-16":{},"41-17":{},"41-18":{},"41-19":{},"41-20":{},"41-21":{},"41-22":{},"41-37":{},"41-38":{},"41-39":{},"41-40":{},"41-41":{},"41-47":{},"41-48":{},"41-49":{},"41-50":{},"41-51":{},"41-52":{},"41-53":{},"41-54":{},"49-4":{},"94-1":{},"148-1":{},"214-1":{}},"name":{},"text":{"2":{},"14":{},"18":{},"24":{},"26":{},"27":{},"32":{},"39":{},"41":{},"50":{},"54":{},"60":{},"61":{},"62":{},"68":{},"75":{},"79":{},"80":{},"81":{},"83":{},"94":{},"96":{},"109":{},"110":{},"111":{},"115":{},"117":{},"130":{},"132":{},"133":{},"136":{},"137":{},"142":{},"146":{},"148":{},"151":{},"153":{},"170":{},"171":{},"172":{},"173":{},"177":{},"180":{},"181":{},"196":{},"198":{},"199":{},"202":{},"203":{},"208":{},"212":{},"214":{},"217":{},"219":{},"236":{},"237":{},"238":{},"239":{},"243":{},"246":{},"247":{}},"component":{}}],["step:2.28",{"_index":2321,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["stet",{"_index":819,"title":{},"name":{},"text":{"10":{}},"component":{}}],["still",{"_index":1945,"title":{},"name":{},"text":{"39":{},"75":{},"76":{},"78":{},"79":{},"83":{},"95":{},"123":{},"129":{},"131":{},"132":{},"136":{},"149":{},"150":{},"153":{},"154":{},"161":{},"186":{},"195":{},"197":{},"198":{},"202":{},"215":{},"216":{},"219":{},"220":{},"227":{},"234":{},"252":{}},"component":{}}],["storag",{"_index":478,"title":{"14-10":{},"50-10":{},"96-8":{},"151-8":{},"217-8":{}},"name":{},"text":{"2":{},"19":{},"41":{},"55":{},"100":{},"156":{},"188":{},"222":{},"254":{}},"component":{}}],["storageadapt",{"_index":1167,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["store",{"_index":133,"title":{"2-59":{},"41-59":{}},"name":{},"text":{"2":{},"6":{},"24":{},"32":{},"41":{},"45":{},"60":{},"68":{},"77":{},"82":{},"85":{},"96":{},"98":{},"108":{},"117":{},"130":{},"135":{},"136":{},"138":{},"151":{},"153":{},"154":{},"169":{},"174":{},"181":{},"189":{},"196":{},"201":{},"202":{},"204":{},"217":{},"219":{},"220":{},"235":{},"240":{},"247":{},"255":{}},"component":{}}],["store.j",{"_index":1870,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["straight",{"_index":3194,"title":{},"name":{},"text":{"136":{},"179":{},"202":{},"245":{}},"component":{}}],["strategi",{"_index":1447,"title":{},"name":{},"text":{"24":{},"60":{},"80":{},"96":{},"133":{},"151":{},"199":{},"217":{}},"component":{}}],["stream",{"_index":1413,"title":{},"name":{},"text":{"24":{},"30":{},"60":{},"64":{},"77":{},"79":{},"130":{},"132":{},"196":{},"198":{}},"component":{}}],["streamlit",{"_index":3623,"title":{"180":{},"246":{}},"name":{"180":{},"246":{}},"text":{"180":{},"186":{},"246":{},"252":{}},"component":{}}],["stress",{"_index":1753,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["strict",{"_index":479,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["strictli",{"_index":2379,"title":{},"name":{},"text":{"94":{},"98":{},"126":{},"148":{},"154":{},"192":{},"214":{},"220":{},"258":{}},"component":{}}],["string",{"_index":432,"title":{},"name":{},"text":{"2":{},"32":{},"41":{},"60":{},"68":{},"96":{},"98":{},"117":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["strongli",{"_index":3527,"title":{},"name":{},"text":{"173":{},"180":{},"189":{},"239":{},"246":{},"255":{}},"component":{}}],["structur",{"_index":694,"title":{"24-4":{},"27-3":{},"32-11":{},"60-4":{},"62-3":{},"68-11":{},"111-3":{},"117-11":{},"126-1":{},"172-3":{},"192-1":{},"238-3":{},"258-1":{}},"name":{},"text":{"6":{},"24":{},"27":{},"32":{},"38":{},"45":{},"60":{},"62":{},"68":{},"74":{},"82":{},"98":{},"111":{},"117":{},"126":{},"135":{},"154":{},"172":{},"174":{},"180":{},"192":{},"201":{},"220":{},"238":{},"240":{},"246":{},"258":{}},"component":{}}],["stuck",{"_index":614,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["studio",{"_index":2360,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["style",{"_index":1660,"title":{},"name":{},"text":{"32":{},"68":{},"81":{},"117":{}},"component":{}}],["styles.scss",{"_index":1810,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"250":{}},"component":{}}],["stylesheet",{"_index":3054,"title":{},"name":{},"text":{"113":{},"175":{},"241":{}},"component":{}}],["sub",{"_index":3303,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["subject",{"_index":1288,"title":{},"name":{},"text":{"21":{},"57":{},"83":{},"151":{},"217":{}},"component":{}}],["submit",{"_index":1450,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["submodul",{"_index":3237,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["subscript",{"_index":426,"title":{},"name":{},"text":{"2":{},"41":{},"188":{},"254":{}},"component":{}}],["subsect",{"_index":3438,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["subsequ",{"_index":461,"title":{},"name":{},"text":{"2":{},"35":{},"41":{},"71":{},"98":{},"121":{},"154":{},"184":{},"220":{},"250":{}},"component":{}}],["substitut",{"_index":2735,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["subsystem",{"_index":3395,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["succesfulli",{"_index":2886,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["success",{"_index":1024,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"96":{},"100":{},"117":{},"151":{},"156":{},"172":{},"217":{},"222":{},"238":{}},"component":{}}],["successfulbuildshistorylimit",{"_index":2193,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["successfulli",{"_index":2029,"title":{},"name":{},"text":{"76":{},"100":{},"129":{},"156":{},"195":{},"222":{}},"component":{}}],["such",{"_index":865,"title":{},"name":{},"text":{"12":{},"14":{},"22":{},"35":{},"50":{},"58":{},"71":{},"77":{},"79":{},"80":{},"81":{},"83":{},"95":{},"96":{},"98":{},"99":{},"102":{},"108":{},"109":{},"115":{},"121":{},"123":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"170":{},"177":{},"184":{},"186":{},"189":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"236":{},"243":{},"250":{},"252":{},"255":{},"258":{}},"component":{}}],["sudo",{"_index":2035,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["suffici",{"_index":1623,"title":{},"name":{},"text":{"31":{},"67":{},"77":{},"116":{},"130":{},"178":{},"196":{},"244":{}},"component":{}}],["suffix",{"_index":2528,"title":{},"name":{},"text":{"96":{},"98":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["suffixedcompon",{"_index":2510,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["suggest",{"_index":1849,"title":{},"name":{},"text":{"36":{},"72":{},"81":{},"95":{},"101":{},"122":{},"149":{},"157":{},"185":{},"215":{},"223":{},"251":{}},"component":{}}],["suit",{"_index":654,"title":{"130-5":{},"196-5":{}},"name":{},"text":{"5":{},"26":{},"44":{},"61":{},"77":{},"83":{},"110":{},"112":{},"130":{},"136":{},"171":{},"173":{},"180":{},"196":{},"202":{},"237":{},"239":{},"246":{}},"component":{}}],["suitabl",{"_index":2468,"title":{},"name":{},"text":{"96":{},"99":{},"151":{},"153":{},"155":{},"189":{},"217":{},"219":{},"221":{},"255":{}},"component":{}}],["sum.spec.t",{"_index":3071,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["sum.t",{"_index":3069,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["summari",{"_index":2601,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["supersed",{"_index":3254,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["supervis",{"_index":1677,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["suppli",{"_index":2673,"title":{},"name":{},"text":{"98":{},"101":{},"123":{},"136":{},"151":{},"154":{},"157":{},"186":{},"202":{},"217":{},"220":{},"223":{},"252":{}},"component":{}}],["supplier",{"_index":3087,"title":{"189-5":{},"255-5":{}},"name":{},"text":{"115":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"189":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"255":{}},"component":{}}],["support",{"_index":1483,"title":{"27-4":{},"62-4":{},"95-11":{},"111-4":{},"120-3":{},"149-11":{},"150-7":{},"150-10":{},"161-3":{},"172-4":{},"173-8":{},"183-3":{},"215-11":{},"216-7":{},"216-10":{},"227-3":{},"234-3":{},"238-4":{},"239-8":{},"249-3":{}},"name":{},"text":{"29":{},"32":{},"34":{},"35":{},"36":{},"38":{},"63":{},"68":{},"70":{},"71":{},"72":{},"74":{},"83":{},"85":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"108":{},"112":{},"117":{},"119":{},"121":{},"122":{},"126":{},"136":{},"138":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"156":{},"157":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"169":{},"173":{},"174":{},"181":{},"184":{},"185":{},"187":{},"188":{},"189":{},"192":{},"202":{},"204":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"222":{},"223":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"239":{},"240":{},"247":{},"250":{},"251":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["supris",{"_index":2095,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["sure",{"_index":225,"title":{},"name":{},"text":{"2":{},"19":{},"32":{},"41":{},"55":{},"68":{},"100":{},"108":{},"117":{},"151":{},"156":{},"169":{},"180":{},"217":{},"222":{},"235":{},"246":{}},"component":{}}],["surfac",{"_index":1346,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["svc",{"_index":2199,"title":{"124":{},"190":{},"256":{}},"name":{"124":{},"190":{},"256":{}},"text":{"80":{},"124":{},"125":{},"133":{},"190":{},"191":{},"199":{},"256":{},"257":{}},"component":{}}],["svc.git",{"_index":2183,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["switch",{"_index":1174,"title":{},"name":{},"text":{"19":{},"23":{},"55":{},"59":{},"94":{},"100":{},"142":{},"148":{},"150":{},"156":{},"161":{},"162":{},"163":{},"164":{},"165":{},"173":{},"208":{},"214":{},"216":{},"222":{},"227":{},"228":{},"229":{},"230":{},"231":{},"234":{},"239":{}},"component":{}}],["sync",{"_index":250,"title":{},"name":{},"text":{"2":{},"41":{},"47":{},"77":{},"79":{},"80":{},"88":{},"96":{},"98":{},"130":{},"132":{},"133":{},"141":{},"151":{},"154":{},"196":{},"198":{},"199":{},"207":{},"217":{},"220":{}},"component":{}}],["sync:1.0.44",{"_index":2322,"title":{},"name":{},"text":{"87":{},"140":{},"206":{}},"component":{}}],["syncer",{"_index":1697,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["syncer.pull_data_dependency(file_nam",{"_index":1701,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["synchor",{"_index":1454,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["synchron",{"_index":383,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["syntax",{"_index":1118,"title":{},"name":{},"text":{"14":{},"50":{},"97":{},"127":{},"152":{},"193":{},"218":{}},"component":{}}],["sysctl",{"_index":2036,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["sysenv",{"_index":559,"title":{},"name":{"3":{},"42":{},"90":{},"144":{},"210":{}},"text":{},"component":{}}],["system",{"_index":130,"title":{"3":{},"42":{},"90":{},"144":{},"210":{},"2-54":{},"41-54":{}},"name":{},"text":{"2":{},"22":{},"32":{},"35":{},"41":{},"58":{},"68":{},"71":{},"79":{},"82":{},"87":{},"100":{},"101":{},"117":{},"121":{},"132":{},"135":{},"140":{},"151":{},"153":{},"156":{},"157":{},"182":{},"184":{},"198":{},"201":{},"206":{},"217":{},"219":{},"222":{},"223":{},"248":{},"250":{}},"component":{}}],["system:authent",{"_index":623,"title":{},"name":{},"text":{"4":{},"43":{},"80":{},"91":{},"133":{},"145":{},"199":{},"211":{}},"component":{}}],["system:imag",{"_index":2161,"title":{},"name":{},"text":{"80":{},"94":{},"133":{},"148":{},"199":{},"214":{}},"component":{}}],["system:serviceaccounts:$project_id",{"_index":2380,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["systemat",{"_index":3401,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["system’",{"_index":3529,"title":{},"name":{},"text":{"173":{},"180":{},"239":{},"246":{}},"component":{}}],["tab",{"_index":336,"title":{},"name":{},"text":{"2":{},"36":{},"41":{},"72":{},"122":{}},"component":{}}],["tab.svg",{"_index":1909,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tabl",{"_index":77,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"19":{},"20":{},"22":{},"39":{},"40":{},"41":{},"42":{},"45":{},"55":{},"56":{},"58":{},"75":{},"76":{},"78":{},"87":{},"90":{},"94":{},"95":{},"100":{},"101":{},"102":{},"123":{},"129":{},"131":{},"140":{},"144":{},"148":{},"149":{},"150":{},"156":{},"157":{},"182":{},"186":{},"189":{},"195":{},"197":{},"206":{},"210":{},"214":{},"215":{},"216":{},"222":{},"223":{},"248":{},"252":{},"255":{}},"component":{}}],["tag",{"_index":1066,"title":{"94-2":{},"95-2":{},"95-8":{},"148-2":{},"149-2":{},"149-8":{},"150-1":{},"214-2":{},"215-2":{},"215-8":{},"216-1":{}},"name":{},"text":{"14":{},"50":{},"80":{},"81":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"128":{},"133":{},"136":{},"137":{},"141":{},"142":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"181":{},"187":{},"188":{},"189":{},"194":{},"199":{},"202":{},"203":{},"207":{},"208":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"247":{},"253":{},"254":{},"255":{}},"component":{}}],["tagintotargetenv",{"_index":3352,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["tags.tf",{"_index":3722,"title":{},"name":{},"text":{"187":{},"188":{},"253":{},"254":{}},"component":{}}],["tagvers",{"_index":1020,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["tagversion}.tar.gz",{"_index":2618,"title":{},"name":{},"text":{"96":{}},"component":{}}],["tailor",{"_index":86,"title":{"127":{},"153":{},"193":{},"219":{},"2-10":{},"41-10":{},"77-5":{},"79-4":{},"80-5":{},"94-9":{},"130-8":{},"132-4":{},"133-5":{},"148-9":{},"151-27":{},"151-29":{},"153-1":{},"196-8":{},"198-4":{},"199-5":{},"214-9":{},"217-27":{},"217-29":{},"219-1":{}},"name":{},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"13":{},"41":{},"44":{},"45":{},"46":{},"49":{},"77":{},"79":{},"80":{},"85":{},"94":{},"96":{},"98":{},"99":{},"108":{},"127":{},"130":{},"132":{},"133":{},"138":{},"142":{},"146":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"169":{},"193":{},"196":{},"198":{},"199":{},"204":{},"208":{},"212":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"235":{}},"component":{}}],["tailorexclud",{"_index":2612,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorfil",{"_index":696,"title":{},"name":{},"text":{"6":{},"45":{},"96":{},"98":{},"108":{},"151":{},"154":{},"169":{},"217":{},"220":{},"235":{}},"component":{}}],["tailorfile.foo",{"_index":2738,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["tailorinclud",{"_index":2576,"title":{},"name":{},"text":{"96":{}},"component":{}}],["tailorparam",{"_index":2515,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorparamfil",{"_index":2578,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorpreserv",{"_index":2579,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorprivatekeycredentialsid",{"_index":2573,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorselector",{"_index":2513,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailorverifi",{"_index":2575,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tailor’",{"_index":2737,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["take",{"_index":68,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"15":{},"18":{},"32":{},"40":{},"41":{},"45":{},"50":{},"51":{},"54":{},"68":{},"76":{},"79":{},"80":{},"85":{},"95":{},"96":{},"98":{},"99":{},"117":{},"128":{},"129":{},"132":{},"133":{},"138":{},"149":{},"150":{},"151":{},"154":{},"155":{},"194":{},"195":{},"198":{},"199":{},"204":{},"215":{},"216":{},"217":{},"220":{},"221":{}},"component":{}}],["taken",{"_index":1053,"title":{},"name":{},"text":{"14":{},"50":{},"83":{},"96":{},"98":{},"99":{},"136":{},"137":{},"142":{},"146":{},"151":{},"153":{},"154":{},"155":{},"189":{},"202":{},"203":{},"208":{},"212":{},"217":{},"219":{},"220":{},"221":{},"255":{}},"component":{}}],["takimata",{"_index":824,"title":{},"name":{},"text":{"10":{}},"component":{}}],["target",{"_index":790,"title":{"83-9":{},"136-8":{},"202-8":{}},"name":{},"text":{"8":{},"14":{},"24":{},"32":{},"39":{},"47":{},"50":{},"60":{},"68":{},"75":{},"77":{},"81":{},"84":{},"88":{},"96":{},"97":{},"98":{},"99":{},"100":{},"114":{},"117":{},"126":{},"130":{},"136":{},"137":{},"141":{},"142":{},"146":{},"150":{},"151":{},"152":{},"154":{},"155":{},"156":{},"174":{},"176":{},"192":{},"196":{},"202":{},"203":{},"207":{},"208":{},"212":{},"216":{},"217":{},"218":{},"220":{},"221":{},"222":{},"240":{},"242":{},"258":{}},"component":{}}],["target_vari",{"_index":1676,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["targetdir",{"_index":2781,"title":{},"name":{},"text":{"99":{},"155":{},"221":{}},"component":{}}],["targetdirectori",{"_index":2622,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["targetenviron",{"_index":3353,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["targetproject",{"_index":1032,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["targettag",{"_index":2585,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["task",{"_index":1092,"title":{},"name":{},"text":{"14":{},"16":{},"22":{},"24":{},"27":{},"32":{},"50":{},"52":{},"58":{},"60":{},"62":{},"68":{},"87":{},"96":{},"101":{},"102":{},"111":{},"117":{},"137":{},"140":{},"151":{},"157":{},"158":{},"172":{},"203":{},"206":{},"217":{},"223":{},"224":{},"238":{}},"component":{}}],["tcp/udp",{"_index":3507,"title":{},"name":{},"text":{"170":{},"236":{}},"component":{}}],["team",{"_index":1284,"title":{},"name":{},"text":{"21":{},"57":{},"93":{},"98":{},"102":{},"147":{},"154":{},"158":{},"213":{},"220":{},"224":{},"240":{}},"component":{}}],["technic",{"_index":1213,"title":{"20-4":{},"56-4":{},"101-14":{},"157-17":{},"223-17":{}},"name":{},"text":{"20":{},"32":{},"56":{},"68":{},"83":{},"98":{},"101":{},"108":{},"117":{},"136":{},"154":{},"157":{},"169":{},"202":{},"220":{},"223":{},"235":{}},"component":{}}],["technolog",{"_index":647,"title":{"174-8":{},"240-8":{}},"name":{},"text":{"5":{},"19":{},"36":{},"39":{},"44":{},"55":{},"72":{},"75":{},"77":{},"83":{},"100":{},"122":{},"123":{},"130":{},"136":{},"137":{},"156":{},"170":{},"174":{},"182":{},"185":{},"186":{},"187":{},"188":{},"196":{},"202":{},"203":{},"222":{},"236":{},"240":{},"248":{},"251":{},"252":{},"253":{},"254":{}},"component":{}}],["tell",{"_index":591,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"98":{},"145":{},"154":{},"211":{},"220":{}},"component":{}}],["templat",{"_index":248,"title":{"22-4":{},"58-4":{},"101-3":{},"127-1":{},"157-6":{},"193-1":{},"223-6":{}},"name":{},"text":{"2":{},"6":{},"8":{},"13":{},"22":{},"29":{},"30":{},"38":{},"39":{},"41":{},"45":{},"47":{},"49":{},"58":{},"63":{},"64":{},"74":{},"75":{},"77":{},"80":{},"88":{},"95":{},"96":{},"98":{},"99":{},"101":{},"108":{},"113":{},"123":{},"126":{},"127":{},"128":{},"130":{},"133":{},"136":{},"141":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"169":{},"174":{},"175":{},"186":{},"188":{},"189":{},"192":{},"193":{},"194":{},"196":{},"199":{},"202":{},"207":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"235":{},"240":{},"241":{},"252":{},"254":{},"255":{},"258":{}},"component":{}}],["template.=/api/2/project/%project_key%/properties/webhook_proxy.url",{"_index":2930,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["template.={\\\"webhook_proxy.url",{"_index":2933,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["template.openshift.io/v1",{"_index":3174,"title":{},"name":{},"text":{"133":{},"199":{}},"component":{}}],["template.yml",{"_index":2718,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["templates..name=utest",{"_index":2917,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["templates..permiss",{"_index":2918,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["templates..rol",{"_index":3443,"title":{},"name":{},"text":{"157":{},"223":{}},"component":{}}],["templates/confluence.permiss",{"_index":1329,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["templates/jira.permission.all.txt",{"_index":1328,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["templates/templ",{"_index":2206,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["tempor",{"_index":803,"title":{},"name":{},"text":{"10":{}},"component":{}}],["temporari",{"_index":2370,"title":{},"name":{},"text":{"93":{},"98":{},"130":{},"147":{},"154":{},"196":{},"213":{},"220":{}},"component":{}}],["tenant",{"_index":2958,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["teplat",{"_index":1569,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["term",{"_index":3041,"title":{},"name":{},"text":{"112":{},"173":{},"239":{}},"component":{}}],["termin",{"_index":569,"title":{"4-1":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"77":{},"130":{},"178":{},"196":{},"244":{}},"component":{}}],["terraform",{"_index":3450,"title":{"160":{},"187":{},"188":{},"226":{},"253":{},"254":{},"186-7":{},"252-7":{}},"name":{"160":{},"187":{},"188":{},"226":{},"253":{},"254":{}},"text":{"160":{},"182":{},"186":{},"187":{},"188":{},"226":{},"248":{},"252":{},"253":{},"254":{}},"component":{}}],["terraform:latest",{"_index":3456,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["test",{"_index":161,"title":{"34":{},"70":{},"119":{},"120":{},"181":{},"182":{},"183":{},"247":{},"248":{},"249":{},"12-4":{},"32-6":{},"68-6":{},"98-6":{},"117-6":{},"120-8":{},"123-6":{},"126-6":{},"128-4":{},"154-8":{},"183-8":{},"186-6":{},"192-6":{},"194-4":{},"220-8":{},"249-8":{},"252-6":{},"258-6":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"21":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"41":{},"44":{},"47":{},"50":{},"55":{},"57":{},"58":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"68":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"102":{},"108":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"128":{},"132":{},"133":{},"141":{},"147":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"160":{},"169":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"194":{},"198":{},"199":{},"207":{},"213":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"226":{},"234":{},"235":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["test.192.168.56.101.nip.io",{"_index":527,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["test.dev",{"_index":2726,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["test.e2",{"_index":1831,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["test.env",{"_index":2740,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["test.j",{"_index":1925,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["test.json",{"_index":3693,"title":{},"name":{},"text":{"182":{},"187":{},"188":{},"248":{},"253":{},"254":{}},"component":{}}],["test.t",{"_index":1811,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["test.tfbackend.config",{"_index":3727,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["test.yml",{"_index":3731,"title":{},"name":{},"text":{"188":{},"254":{}},"component":{}}],["test/:/opt/provision/histori",{"_index":2111,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["test_all.sh",{"_index":1445,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_crazy_python.pi",{"_index":1442,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_dag_integrity.pi",{"_index":1443,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_dag_integrity.sh",{"_index":1446,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["test_requirements.txt",{"_index":1571,"title":{},"name":{},"text":{"29":{},"63":{},"180":{},"246":{}},"component":{}}],["testpaths=test",{"_index":3534,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["testresult",{"_index":2476,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["tests.pi",{"_index":1573,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["tests/requirements.txt",{"_index":3036,"title":{},"name":{},"text":{"112":{}},"component":{}}],["tests_requirements.txt",{"_index":3526,"title":{},"name":{},"text":{"173":{},"239":{}},"component":{}}],["testusernam",{"_index":1776,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["testuserpassword",{"_index":1777,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["test→prod",{"_index":2471,"title":{},"name":{},"text":{"96":{}},"component":{}}],["text",{"_index":2752,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["textbox",{"_index":295,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["tfenv",{"_index":3458,"title":{},"name":{},"text":{"160":{},"226":{}},"component":{}}],["thank",{"_index":3033,"title":{},"name":{},"text":{"112":{},"173":{},"174":{},"180":{},"182":{},"187":{},"188":{},"239":{},"240":{},"246":{},"248":{},"253":{},"254":{}},"component":{}}],["that’",{"_index":2520,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["theinstal",{"_index":213,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["theme",{"_index":1838,"title":{},"name":{},"text":{"36":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["theme.j",{"_index":1871,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["therefor",{"_index":195,"title":{},"name":{},"text":{"2":{},"8":{},"12":{},"41":{},"47":{},"79":{},"80":{},"83":{},"88":{},"93":{},"95":{},"98":{},"127":{},"128":{},"132":{},"133":{},"136":{},"141":{},"147":{},"149":{},"150":{},"153":{},"154":{},"181":{},"193":{},"194":{},"198":{},"199":{},"202":{},"207":{},"213":{},"215":{},"216":{},"219":{},"220":{},"247":{}},"component":{}}],["therein",{"_index":2666,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["there’",{"_index":2130,"title":{},"name":{},"text":{"79":{},"93":{},"132":{},"147":{},"198":{},"213":{}},"component":{}}],["thing",{"_index":983,"title":{},"name":{},"text":{"14":{},"26":{},"39":{},"50":{},"61":{},"75":{},"96":{},"98":{},"110":{},"130":{},"151":{},"154":{},"171":{},"196":{},"217":{},"220":{},"237":{}},"component":{}}],["third",{"_index":765,"title":{"20-4":{},"56-4":{},"101-14":{},"157-17":{},"223-17":{}},"name":{},"text":{"7":{},"20":{},"27":{},"46":{},"56":{},"62":{},"85":{},"101":{},"111":{},"138":{},"157":{},"172":{},"204":{},"223":{},"238":{}},"component":{}}],["those",{"_index":1942,"title":{},"name":{},"text":{"39":{},"75":{},"77":{},"79":{},"81":{},"83":{},"94":{},"95":{},"98":{},"102":{},"123":{},"128":{},"130":{},"132":{},"136":{},"137":{},"148":{},"149":{},"150":{},"154":{},"181":{},"186":{},"189":{},"194":{},"196":{},"198":{},"202":{},"203":{},"214":{},"215":{},"216":{},"220":{},"247":{},"252":{},"255":{}},"component":{}}],["though",{"_index":2097,"title":{},"name":{},"text":{"79":{},"94":{},"108":{},"128":{},"132":{},"148":{},"153":{},"169":{},"194":{},"198":{},"214":{},"219":{},"235":{}},"component":{}}],["three",{"_index":966,"title":{},"name":{},"text":{"14":{},"21":{},"22":{},"50":{},"57":{},"58":{},"95":{},"96":{},"98":{},"101":{},"102":{},"128":{},"149":{},"150":{},"151":{},"152":{},"154":{},"157":{},"158":{},"194":{},"215":{},"216":{},"217":{},"218":{},"220":{},"223":{},"224":{}},"component":{}}],["threshold",{"_index":2561,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["through",{"_index":460,"title":{"25-5":{},"26-5":{},"29-5":{},"30-5":{},"31-5":{},"32-18":{},"33-5":{},"34-5":{},"35-5":{},"38-5":{},"61-5":{},"63-5":{},"64-5":{},"66-5":{},"67-5":{},"68-18":{},"69-5":{},"70-5":{},"71-5":{},"74-5":{},"109-8":{},"110-5":{},"112-5":{},"113-5":{},"114-7":{},"115-5":{},"116-5":{},"117-18":{},"118-5":{},"119-5":{},"120-9":{},"121-5":{},"124-5":{},"125-5":{},"170-9":{},"171-6":{},"173-6":{},"174-6":{},"175-6":{},"176-8":{},"177-6":{},"178-7":{},"179-6":{},"180-6":{},"181-5":{},"183-9":{},"184-6":{},"187-5":{},"188-5":{},"190-5":{},"191-5":{},"236-9":{},"237-6":{},"239-6":{},"240-6":{},"241-6":{},"242-8":{},"243-6":{},"244-7":{},"245-6":{},"246-6":{},"247-5":{},"249-9":{},"250-6":{},"253-5":{},"254-5":{},"256-5":{},"257-5":{}},"name":{},"text":{"2":{},"5":{},"11":{},"12":{},"31":{},"33":{},"41":{},"44":{},"67":{},"69":{},"77":{},"83":{},"98":{},"104":{},"105":{},"107":{},"108":{},"109":{},"116":{},"118":{},"120":{},"128":{},"130":{},"136":{},"137":{},"142":{},"146":{},"153":{},"154":{},"158":{},"162":{},"163":{},"164":{},"165":{},"168":{},"169":{},"170":{},"178":{},"179":{},"183":{},"194":{},"196":{},"202":{},"203":{},"208":{},"212":{},"219":{},"220":{},"224":{},"228":{},"229":{},"230":{},"231":{},"234":{},"235":{},"236":{},"244":{},"245":{},"249":{}},"component":{}}],["thru",{"_index":666,"title":{"22-5":{},"27-11":{},"28-5":{},"36-5":{},"37-5":{},"58-5":{},"62-11":{},"65-5":{},"72-5":{},"73-5":{},"111-11":{},"122-5":{},"172-12":{},"185-6":{},"238-12":{},"251-6":{}},"name":{},"text":{"5":{},"7":{},"8":{},"19":{},"21":{},"22":{},"27":{},"39":{},"44":{},"46":{},"55":{},"57":{},"58":{},"62":{},"75":{},"100":{},"101":{},"111":{},"156":{},"157":{},"172":{},"222":{},"223":{},"238":{}},"component":{}}],["thu",{"_index":2261,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["thymeleaf",{"_index":1160,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["ticket",{"_index":625,"title":{},"name":{},"text":{"4":{},"14":{},"43":{},"50":{},"81":{},"91":{},"96":{},"145":{},"151":{},"211":{},"217":{}},"component":{}}],["tight",{"_index":1330,"title":{},"name":{},"text":{"22":{},"58":{},"101":{}},"component":{}}],["tighten",{"_index":1322,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["till",{"_index":3747,"title":{},"name":{},"text":{"234":{}},"component":{}}],["tiller",{"_index":3130,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["time",{"_index":292,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"27":{},"29":{},"41":{},"44":{},"50":{},"62":{},"63":{},"77":{},"79":{},"94":{},"95":{},"96":{},"98":{},"99":{},"101":{},"102":{},"108":{},"111":{},"112":{},"126":{},"130":{},"132":{},"137":{},"142":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"157":{},"158":{},"169":{},"172":{},"173":{},"180":{},"192":{},"196":{},"198":{},"203":{},"208":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"223":{},"224":{},"235":{},"238":{},"239":{},"246":{},"258":{}},"component":{}}],["timeout",{"_index":581,"title":{"4-4":{},"43-4":{},"91-4":{},"145-4":{},"154-26":{},"211-4":{},"220-26":{}},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"154":{},"217":{},"220":{}},"component":{}}],["timeout=10m",{"_index":3294,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["timeoutsecond",{"_index":2604,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["titl",{"_index":309,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"41":{},"45":{},"151":{},"217":{}},"component":{}}],["tl",{"_index":3781,"title":{},"name":{},"text":{"240":{}},"component":{}}],["tlsv1.2",{"_index":3581,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["tmp",{"_index":1961,"title":{},"name":{},"text":{"39":{},"50":{},"75":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["togeth",{"_index":2493,"title":{},"name":{},"text":{"96":{},"150":{},"151":{},"182":{},"216":{},"217":{},"248":{}},"component":{}}],["token",{"_index":509,"title":{},"name":{},"text":{"2":{},"6":{},"13":{},"14":{},"20":{},"41":{},"45":{},"49":{},"50":{},"56":{},"77":{},"78":{},"80":{},"87":{},"96":{},"98":{},"99":{},"101":{},"130":{},"131":{},"133":{},"140":{},"151":{},"154":{},"155":{},"157":{},"196":{},"197":{},"199":{},"206":{},"217":{},"220":{},"221":{},"223":{}},"component":{}}],["tokio",{"_index":3598,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["toml",{"_index":3768,"title":{},"name":{},"text":{"240":{}},"component":{}}],["tool",{"_index":12,"title":{"2-6":{},"2-12":{},"41-6":{},"41-12":{},"77-7":{}},"name":{},"text":{"1":{},"2":{},"6":{},"19":{},"20":{},"26":{},"27":{},"40":{},"41":{},"45":{},"55":{},"56":{},"61":{},"62":{},"76":{},"77":{},"78":{},"85":{},"100":{},"101":{},"107":{},"110":{},"111":{},"120":{},"127":{},"128":{},"129":{},"130":{},"131":{},"136":{},"138":{},"153":{},"156":{},"157":{},"160":{},"167":{},"168":{},"171":{},"172":{},"174":{},"183":{},"186":{},"187":{},"188":{},"193":{},"194":{},"195":{},"196":{},"197":{},"202":{},"204":{},"219":{},"222":{},"223":{},"226":{},"233":{},"234":{},"237":{},"238":{},"240":{},"249":{},"252":{},"253":{},"254":{}},"component":{}}],["toolchain",{"_index":3579,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["toolkit",{"_index":3713,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["toolstack",{"_index":156,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["top",{"_index":760,"title":{},"name":{},"text":{"7":{},"14":{},"25":{},"46":{},"50":{},"66":{},"96":{},"98":{},"114":{},"115":{},"126":{},"151":{},"154":{},"176":{},"177":{},"178":{},"192":{},"217":{},"220":{},"242":{},"243":{},"244":{},"258":{}},"component":{}}],["topic",{"_index":849,"title":{},"name":{},"text":{"11":{}},"component":{}}],["toref",{"_index":3272,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["total",{"_index":3430,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["touch",{"_index":1893,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tower",{"_index":3599,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["trace",{"_index":3021,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["traceabl",{"_index":2741,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["tracebl",{"_index":2491,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["track",{"_index":1073,"title":{},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"81":{},"83":{},"96":{},"117":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["train",{"_index":1627,"title":{"32-12":{},"32-14":{},"32-16":{},"68-12":{},"68-14":{},"68-16":{},"117-12":{},"117-14":{},"117-16":{}},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["trainin",{"_index":1736,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["trane",{"_index":1731,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["transfer",{"_index":1726,"title":{},"name":{},"text":{"32":{},"68":{},"117":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["transform",{"_index":3687,"title":{},"name":{},"text":{"182":{},"248":{}},"component":{}}],["transpil",{"_index":1552,"title":{},"name":{},"text":{"28":{},"34":{},"65":{},"70":{},"114":{},"119":{},"176":{},"242":{}},"component":{}}],["travi",{"_index":2271,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["travis.yml",{"_index":2272,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["tree",{"_index":1795,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"174":{},"184":{},"240":{},"250":{}},"component":{}}],["trend",{"_index":2754,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["tri",{"_index":145,"title":{"2-69":{},"41-69":{}},"name":{},"text":{"4":{},"14":{},"22":{},"43":{},"50":{},"58":{},"77":{},"81":{},"91":{},"96":{},"97":{},"101":{},"108":{},"130":{},"145":{},"151":{},"152":{},"153":{},"157":{},"169":{},"196":{},"211":{},"217":{},"218":{},"219":{},"223":{},"235":{}},"component":{}}],["trick",{"_index":2065,"title":{},"name":{},"text":{"77":{}},"component":{}}],["trigger",{"_index":665,"title":{},"name":{},"text":{"5":{},"6":{},"8":{},"14":{},"15":{},"18":{},"21":{},"22":{},"32":{},"39":{},"44":{},"45":{},"47":{},"50":{},"51":{},"54":{},"57":{},"58":{},"68":{},"75":{},"80":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"102":{},"108":{},"117":{},"121":{},"122":{},"123":{},"128":{},"133":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"158":{},"169":{},"182":{},"184":{},"185":{},"186":{},"194":{},"199":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"224":{},"235":{},"248":{},"250":{},"251":{},"252":{}},"component":{}}],["trigger_secret",{"_index":781,"title":{},"name":{},"text":{"8":{},"47":{},"80":{},"88":{},"133":{},"141":{},"199":{},"207":{}},"component":{}}],["trivi",{"_index":3208,"title":{},"name":{},"text":{"138":{},"151":{},"204":{},"217":{}},"component":{}}],["trivial",{"_index":2492,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["troubleshoot",{"_index":587,"title":{"4":{},"43":{},"91":{},"145":{},"211":{}},"name":{"4":{},"43":{},"91":{},"145":{},"211":{}},"text":{},"component":{}}],["true",{"_index":580,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{"5":{},"14":{},"22":{},"32":{},"44":{},"50":{},"58":{},"68":{},"80":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"117":{},"133":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"161":{},"172":{},"181":{},"199":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"227":{},"234":{},"238":{},"247":{}},"component":{}}],["trust",{"_index":747,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["tsc",{"_index":3065,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["tsconfig",{"_index":3064,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["tsconfig.app.json",{"_index":1812,"title":{},"name":{},"text":{"35":{},"71":{},"121":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["tsconfig.json",{"_index":1544,"title":{},"name":{},"text":{"28":{},"34":{},"35":{},"36":{},"38":{},"65":{},"70":{},"71":{},"72":{},"74":{},"114":{},"119":{},"121":{},"122":{},"176":{},"181":{},"184":{},"185":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["tsconfig.spec.json",{"_index":1813,"title":{},"name":{},"text":{"35":{},"36":{},"71":{},"72":{},"121":{},"122":{},"184":{},"185":{},"250":{},"251":{}},"component":{}}],["tslint",{"_index":3648,"title":{},"name":{},"text":{"181":{},"184":{},"247":{},"250":{}},"component":{}}],["tslint.json",{"_index":1545,"title":{},"name":{},"text":{"28":{},"34":{},"35":{},"36":{},"65":{},"70":{},"71":{},"72":{},"114":{},"119":{},"121":{},"122":{},"176":{},"242":{}},"component":{}}],["tsx",{"_index":1919,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tsx.d.t",{"_index":1918,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["tui",{"_index":3585,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["turn",{"_index":1308,"title":{},"name":{},"text":{"22":{},"58":{},"96":{},"98":{},"101":{},"102":{},"108":{},"151":{},"154":{},"157":{},"169":{},"217":{},"220":{},"223":{},"235":{}},"component":{}}],["two",{"_index":963,"title":{},"name":{},"text":{"14":{},"18":{},"19":{},"21":{},"22":{},"31":{},"32":{},"33":{},"50":{},"54":{},"55":{},"57":{},"58":{},"67":{},"68":{},"69":{},"76":{},"78":{},"80":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"109":{},"116":{},"117":{},"118":{},"127":{},"129":{},"131":{},"133":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"160":{},"170":{},"178":{},"179":{},"180":{},"182":{},"193":{},"195":{},"197":{},"199":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"226":{},"236":{},"244":{},"245":{},"246":{},"248":{}},"component":{}}],["type",{"_index":361,"title":{"22-4":{},"58-4":{},"98-4":{},"98-5":{},"98-6":{},"101-3":{},"101-5":{},"101-6":{},"101-8":{},"126-4":{},"126-5":{},"126-6":{},"154-4":{},"154-5":{},"154-6":{},"154-7":{},"154-8":{},"154-9":{},"157-6":{},"157-8":{},"157-9":{},"157-11":{},"189-7":{},"192-4":{},"192-5":{},"192-6":{},"220-4":{},"220-5":{},"220-6":{},"220-7":{},"220-8":{},"220-9":{},"223-6":{},"223-8":{},"223-9":{},"223-11":{},"255-7":{},"258-4":{},"258-5":{},"258-6":{}},"name":{},"text":{"2":{},"22":{},"39":{},"41":{},"58":{},"75":{},"76":{},"80":{},"94":{},"98":{},"100":{},"101":{},"126":{},"129":{},"133":{},"148":{},"150":{},"151":{},"153":{},"154":{},"156":{},"157":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"184":{},"185":{},"189":{},"192":{},"195":{},"199":{},"214":{},"216":{},"217":{},"219":{},"220":{},"222":{},"223":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"250":{},"251":{},"255":{},"258":{}},"component":{}}],["type=authorization_cod",{"_index":1230,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["types/nod",{"_index":3077,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["typesaf",{"_index":498,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["typescript",{"_index":1528,"title":{},"name":{"65":{},"114":{},"176":{},"242":{}},"text":{"28":{},"34":{},"35":{},"36":{},"38":{},"65":{},"70":{},"71":{},"72":{},"74":{},"114":{},"119":{},"121":{},"122":{},"176":{},"181":{},"184":{},"185":{},"242":{},"247":{},"250":{},"251":{}},"component":{}}],["typescript/express",{"_index":3124,"title":{},"name":{},"text":{"123":{},"186":{},"252":{}},"component":{}}],["typic",{"_index":1477,"title":{},"name":{},"text":{"26":{},"39":{},"61":{},"75":{},"77":{},"81":{},"98":{},"108":{},"110":{},"123":{},"128":{},"130":{},"136":{},"151":{},"153":{},"154":{},"158":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"184":{},"185":{},"186":{},"189":{},"194":{},"196":{},"202":{},"217":{},"219":{},"220":{},"224":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"250":{},"251":{},"252":{},"255":{}},"component":{}}],["typo",{"_index":2227,"title":{},"name":{},"text":{"81":{}},"component":{}}],["t’",{"_index":1278,"title":{},"name":{},"text":{"21":{},"57":{},"101":{},"157":{},"223":{}},"component":{}}],["u",{"_index":2066,"title":{},"name":{},"text":{"77":{},"94":{},"130":{},"148":{},"196":{},"214":{}},"component":{}}],["uat",{"_index":988,"title":{},"name":{},"text":{"14":{},"50":{},"96":{},"151":{},"217":{}},"component":{}}],["ug=rx",{"_index":3673,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["ui",{"_index":1139,"title":{},"name":{},"text":{"19":{},"22":{},"37":{},"55":{},"58":{},"73":{},"79":{},"82":{},"83":{},"100":{},"101":{},"102":{},"132":{},"135":{},"153":{},"156":{},"157":{},"185":{},"189":{},"198":{},"201":{},"219":{},"222":{},"223":{},"251":{},"255":{}},"component":{}}],["umbrella",{"_index":3165,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["umbrella_dir",{"_index":3170,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["umbrella_dir=~/opendevstack",{"_index":3168,"title":{},"name":{},"text":{"130":{},"137":{},"142":{},"146":{},"196":{},"203":{},"208":{},"212":{}},"component":{}}],["unavail",{"_index":2876,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["unawar",{"_index":2442,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["uncheck",{"_index":323,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["under",{"_index":38,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"8":{},"13":{},"14":{},"19":{},"24":{},"27":{},"32":{},"40":{},"41":{},"45":{},"47":{},"49":{},"50":{},"55":{},"60":{},"62":{},"68":{},"76":{},"78":{},"79":{},"80":{},"87":{},"88":{},"96":{},"98":{},"100":{},"111":{},"113":{},"114":{},"117":{},"129":{},"131":{},"132":{},"133":{},"140":{},"141":{},"151":{},"154":{},"156":{},"175":{},"176":{},"195":{},"197":{},"198":{},"199":{},"206":{},"207":{},"217":{},"220":{},"222":{},"241":{},"242":{}},"component":{}}],["underscor",{"_index":3390,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["understand",{"_index":850,"title":{},"name":{},"text":{"11":{},"14":{},"27":{},"38":{},"50":{},"62":{},"74":{},"81":{},"96":{},"98":{},"111":{},"126":{},"150":{},"154":{},"172":{},"192":{},"216":{},"220":{},"238":{},"258":{}},"component":{}}],["unexpect",{"_index":3368,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["unfortun",{"_index":2695,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["uniqu",{"_index":2756,"title":{},"name":{},"text":{"98":{},"153":{},"154":{},"219":{},"220":{}},"component":{}}],["unirest",{"_index":3094,"title":{"120":{},"183":{},"249":{}},"name":{},"text":{"120":{},"183":{},"249":{}},"component":{}}],["unit",{"_index":1390,"title":{},"name":{},"text":{"22":{},"25":{},"28":{},"29":{},"35":{},"36":{},"37":{},"38":{},"58":{},"63":{},"65":{},"66":{},"71":{},"72":{},"73":{},"74":{},"101":{},"112":{},"114":{},"115":{},"121":{},"122":{},"157":{},"172":{},"173":{},"174":{},"176":{},"177":{},"184":{},"185":{},"223":{},"238":{},"239":{},"240":{},"242":{},"243":{},"250":{},"251":{}},"component":{}}],["unittest",{"_index":1642,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["unknown",{"_index":715,"title":{},"name":{},"text":{"6":{},"45":{}},"component":{}}],["unless",{"_index":241,"title":{},"name":{},"text":{"2":{},"41":{},"80":{},"81":{},"128":{},"133":{},"155":{},"194":{},"199":{},"221":{}},"component":{}}],["unlik",{"_index":2430,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["unnecessari",{"_index":1709,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["unreach",{"_index":574,"title":{"4-3":{},"43-3":{},"91-3":{},"145-3":{},"211-3":{}},"name":{},"text":{},"component":{}}],["unrel",{"_index":2242,"title":{},"name":{},"text":{"81":{}},"component":{}}],["unsur",{"_index":2384,"title":{},"name":{},"text":{"94":{},"148":{},"214":{}},"component":{}}],["until",{"_index":434,"title":{},"name":{},"text":{"2":{},"41":{},"128":{},"194":{},"217":{}},"component":{}}],["unwant",{"_index":2753,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["unzip",{"_index":3670,"title":{},"name":{},"text":{"181":{},"247":{}},"component":{}}],["up",{"_index":18,"title":{"2-39":{},"2-40":{},"2-47":{},"41-39":{},"41-40":{},"41-47":{},"178-5":{},"244-5":{}},"name":{},"text":{"1":{},"2":{},"4":{},"6":{},"8":{},"14":{},"18":{},"19":{},"22":{},"31":{},"32":{},"33":{},"36":{},"37":{},"40":{},"41":{},"43":{},"45":{},"47":{},"50":{},"54":{},"55":{},"58":{},"67":{},"68":{},"69":{},"72":{},"73":{},"76":{},"77":{},"79":{},"81":{},"85":{},"88":{},"91":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"108":{},"114":{},"116":{},"117":{},"118":{},"122":{},"123":{},"126":{},"128":{},"129":{},"130":{},"132":{},"136":{},"137":{},"138":{},"141":{},"142":{},"145":{},"146":{},"149":{},"151":{},"152":{},"154":{},"156":{},"157":{},"169":{},"176":{},"178":{},"179":{},"180":{},"184":{},"185":{},"186":{},"192":{},"194":{},"195":{},"196":{},"198":{},"202":{},"203":{},"204":{},"207":{},"208":{},"211":{},"212":{},"215":{},"217":{},"218":{},"220":{},"222":{},"223":{},"235":{},"242":{},"244":{},"245":{},"246":{},"250":{},"251":{},"252":{},"258":{}},"component":{}}],["upcom",{"_index":2171,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["updat",{"_index":552,"title":{"80":{},"94":{},"95":{},"133":{},"148":{},"149":{},"150":{},"199":{},"214":{},"215":{},"216":{},"76-2":{},"79-2":{},"80-1":{},"80-2":{},"80-3":{},"80-22":{},"80-23":{},"80-24":{},"94-2":{},"94-3":{},"95-2":{},"129-2":{},"132-2":{},"133-1":{},"133-2":{},"133-3":{},"133-22":{},"133-23":{},"133-24":{},"137-1":{},"142-1":{},"146-2":{},"148-2":{},"148-3":{},"149-2":{},"150-1":{},"195-2":{},"198-2":{},"199-1":{},"199-2":{},"199-3":{},"199-22":{},"199-23":{},"199-24":{},"203-1":{},"208-1":{},"212-2":{},"214-2":{},"214-3":{},"215-2":{},"216-1":{}},"name":{"79":{},"80":{},"132":{},"133":{},"198":{},"199":{}},"text":{"2":{},"5":{},"6":{},"8":{},"13":{},"14":{},"22":{},"28":{},"35":{},"36":{},"37":{},"38":{},"41":{},"44":{},"45":{},"49":{},"50":{},"58":{},"65":{},"71":{},"72":{},"73":{},"74":{},"76":{},"77":{},"79":{},"80":{},"82":{},"83":{},"94":{},"95":{},"96":{},"97":{},"100":{},"101":{},"102":{},"108":{},"114":{},"121":{},"122":{},"128":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"152":{},"155":{},"156":{},"157":{},"158":{},"169":{},"172":{},"176":{},"184":{},"185":{},"194":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"218":{},"221":{},"222":{},"223":{},"224":{},"235":{},"238":{},"242":{},"250":{},"251":{}},"component":{}}],["update/add/remov",{"_index":2146,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["updated/added/remov",{"_index":2105,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["upfront",{"_index":3249,"title":{},"name":{},"text":{"150":{},"216":{}},"component":{}}],["upgrad",{"_index":871,"title":{"23":{},"59":{},"39-9":{},"75-9":{},"95-10":{},"149-10":{},"215-10":{}},"name":{},"text":{"12":{},"39":{},"75":{},"77":{},"95":{},"128":{},"130":{},"149":{},"151":{},"172":{},"178":{},"194":{},"196":{},"215":{},"217":{},"238":{},"244":{}},"component":{}}],["upgrade_not",{"_index":1395,"title":{},"name":{"23":{},"59":{}},"text":{},"component":{}}],["upload",{"_index":1090,"title":{"27-7":{},"62-7":{},"111-7":{},"172-7":{},"238-7":{}},"name":{},"text":{"14":{},"15":{},"16":{},"27":{},"50":{},"51":{},"52":{},"62":{},"79":{},"80":{},"96":{},"111":{},"132":{},"133":{},"151":{},"172":{},"198":{},"199":{},"217":{},"238":{}},"component":{}}],["upsid",{"_index":2594,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["upstream",{"_index":2223,"title":{"81-2":{}},"name":{},"text":{"81":{},"137":{},"203":{}},"component":{}}],["uri",{"_index":1256,"title":{},"name":{},"text":{"20":{},"23":{},"56":{},"59":{},"80":{},"101":{},"133":{},"157":{},"199":{},"223":{}},"component":{}}],["uri=${idmanager.url}/auth/realms/${idmanager.realm",{"_index":1234,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid",{"_index":1238,"title":{},"name":{},"text":{"20":{},"56":{},"101":{},"157":{},"223":{}},"component":{}}],["uri=userinfo",{"_index":2937,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["url",{"_index":171,"title":{"98-7":{},"98-8":{},"98-9":{},"101-8":{},"126-7":{},"126-8":{},"126-9":{},"154-10":{},"154-11":{},"154-12":{},"157-11":{},"192-7":{},"192-8":{},"192-9":{},"220-10":{},"220-11":{},"220-12":{},"223-11":{},"258-7":{},"258-8":{},"258-9":{}},"name":{},"text":{"2":{},"6":{},"8":{},"11":{},"14":{},"20":{},"21":{},"22":{},"27":{},"32":{},"34":{},"39":{},"41":{},"45":{},"47":{},"50":{},"56":{},"57":{},"58":{},"62":{},"68":{},"70":{},"75":{},"77":{},"79":{},"80":{},"87":{},"88":{},"93":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"111":{},"117":{},"119":{},"120":{},"126":{},"130":{},"132":{},"133":{},"140":{},"141":{},"147":{},"149":{},"151":{},"154":{},"155":{},"156":{},"157":{},"158":{},"172":{},"183":{},"192":{},"196":{},"198":{},"199":{},"206":{},"207":{},"213":{},"215":{},"217":{},"220":{},"221":{},"222":{},"223":{},"224":{},"238":{},"249":{},"258":{}},"component":{}}],["url.groovi",{"_index":707,"title":{},"name":{},"text":{"6":{},"45":{},"87":{},"140":{},"206":{}},"component":{}}],["urlencod",{"_index":1353,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["us",{"_index":8,"title":{"4-1":{},"5-4":{},"22-5":{},"25-3":{},"25-6":{},"26-3":{},"26-6":{},"27-8":{},"27-12":{},"28-1":{},"28-3":{},"28-6":{},"29-3":{},"29-6":{},"30-3":{},"30-6":{},"31-3":{},"31-6":{},"32-19":{},"32-20":{},"33-3":{},"33-6":{},"34-3":{},"34-6":{},"35-3":{},"35-6":{},"36-3":{},"36-6":{},"37-3":{},"37-6":{},"38-3":{},"38-6":{},"43-1":{},"44-4":{},"58-5":{},"61-3":{},"61-6":{},"62-8":{},"62-12":{},"63-3":{},"63-6":{},"64-3":{},"64-6":{},"65-1":{},"65-3":{},"65-6":{},"66-3":{},"66-6":{},"67-3":{},"67-6":{},"68-19":{},"68-20":{},"69-3":{},"69-6":{},"70-3":{},"70-6":{},"71-3":{},"71-6":{},"72-3":{},"72-6":{},"73-3":{},"73-6":{},"74-3":{},"74-6":{},"83-2":{},"83-4":{},"83-12":{},"83-13":{},"83-14":{},"91-1":{},"109-3":{},"109-7":{},"109-9":{},"110-3":{},"110-6":{},"111-8":{},"111-12":{},"112-3":{},"112-6":{},"113-3":{},"113-6":{},"114-1":{},"114-3":{},"114-8":{},"115-3":{},"115-6":{},"116-3":{},"116-6":{},"117-19":{},"117-20":{},"118-3":{},"118-6":{},"119-3":{},"119-6":{},"120-6":{},"120-10":{},"121-3":{},"121-6":{},"122-3":{},"122-6":{},"124-3":{},"124-6":{},"125-3":{},"125-6":{},"128-2":{},"128-3":{},"128-4":{},"136-12":{},"136-13":{},"136-14":{},"145-1":{},"158-2":{},"170-3":{},"170-7":{},"170-10":{},"171-3":{},"171-7":{},"172-8":{},"172-13":{},"173-3":{},"173-7":{},"174-3":{},"174-7":{},"174-8":{},"175-3":{},"175-7":{},"176-1":{},"176-3":{},"176-9":{},"177-3":{},"177-7":{},"178-3":{},"178-8":{},"179-3":{},"179-7":{},"180-3":{},"180-7":{},"181-3":{},"181-8":{},"182-3":{},"182-5":{},"183-6":{},"183-10":{},"184-3":{},"184-7":{},"185-3":{},"185-7":{},"187-3":{},"187-6":{},"188-3":{},"188-6":{},"190-3":{},"190-6":{},"191-3":{},"191-6":{},"194-2":{},"194-3":{},"194-4":{},"202-12":{},"202-13":{},"202-14":{},"211-1":{},"224-2":{},"236-3":{},"236-7":{},"236-10":{},"237-3":{},"237-7":{},"238-8":{},"238-13":{},"239-3":{},"239-7":{},"240-3":{},"240-7":{},"240-8":{},"240-10":{},"240-14":{},"241-3":{},"241-7":{},"242-1":{},"242-3":{},"242-9":{},"243-3":{},"243-7":{},"244-3":{},"244-8":{},"245-3":{},"245-7":{},"246-3":{},"246-7":{},"247-3":{},"247-8":{},"248-3":{},"248-5":{},"249-6":{},"249-10":{},"250-3":{},"250-7":{},"251-3":{},"251-7":{},"253-3":{},"253-6":{},"254-3":{},"254-6":{},"256-3":{},"256-6":{},"257-3":{},"257-6":{}},"name":{},"text":{"1":{},"2":{},"4":{},"5":{},"6":{},"7":{},"8":{},"11":{},"12":{},"13":{},"14":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"43":{},"44":{},"45":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"88":{},"91":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"135":{},"136":{},"137":{},"138":{},"141":{},"142":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"201":{},"202":{},"203":{},"204":{},"207":{},"208":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"258":{}},"component":{}}],["usag",{"_index":236,"title":{"6-7":{},"14-1":{},"22-1":{},"25-4":{},"26-4":{},"27-10":{},"28-4":{},"29-4":{},"30-4":{},"31-4":{},"33-4":{},"34-4":{},"35-4":{},"36-4":{},"37-4":{},"38-4":{},"39-6":{},"45-7":{},"50-1":{},"58-1":{},"61-4":{},"62-10":{},"63-4":{},"64-4":{},"65-4":{},"66-4":{},"67-4":{},"69-4":{},"70-4":{},"71-4":{},"72-4":{},"73-4":{},"74-4":{},"75-6":{},"96-1":{},"98-1":{},"99-1":{},"102-1":{},"109-4":{},"110-4":{},"111-10":{},"112-4":{},"113-4":{},"114-6":{},"115-4":{},"116-4":{},"118-4":{},"119-4":{},"120-7":{},"121-4":{},"122-4":{},"124-4":{},"125-4":{},"151-1":{},"153-2":{},"154-1":{},"155-1":{},"170-4":{},"171-4":{},"172-10":{},"173-4":{},"174-4":{},"175-4":{},"176-6":{},"177-4":{},"178-4":{},"179-4":{},"180-4":{},"181-4":{},"182-4":{},"183-7":{},"184-4":{},"185-4":{},"187-4":{},"188-4":{},"190-4":{},"191-4":{},"217-1":{},"219-2":{},"220-1":{},"221-1":{},"236-4":{},"237-4":{},"238-10":{},"239-4":{},"240-4":{},"241-4":{},"242-6":{},"243-4":{},"244-4":{},"245-4":{},"246-4":{},"247-4":{},"248-4":{},"249-7":{},"250-4":{},"251-4":{},"253-4":{},"254-4":{},"256-4":{},"257-4":{}},"name":{},"text":{"2":{},"12":{},"19":{},"22":{},"39":{},"41":{},"55":{},"58":{},"75":{},"78":{},"94":{},"100":{},"102":{},"108":{},"131":{},"148":{},"156":{},"169":{},"174":{},"181":{},"197":{},"214":{},"222":{},"235":{},"247":{}},"component":{}}],["usage.md",{"_index":905,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["usecas",{"_index":1459,"title":{},"name":{},"text":{"25":{},"66":{},"115":{},"177":{},"243":{}},"component":{}}],["useful",{"_index":2893,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["user",{"_index":113,"title":{"94":{},"95":{},"148":{},"149":{},"150":{},"214":{},"215":{},"216":{},"2-26":{},"2-34":{},"2-42":{},"2-53":{},"2-55":{},"2-61":{},"20-4":{},"41-26":{},"41-34":{},"41-42":{},"41-53":{},"41-55":{},"41-61":{},"56-4":{},"78-2":{},"78-5":{},"80-12":{},"80-23":{},"101-14":{},"131-2":{},"131-5":{},"133-12":{},"133-23":{},"157-17":{},"197-2":{},"197-5":{},"199-12":{},"199-23":{},"223-17":{}},"name":{},"text":{"2":{},"4":{},"6":{},"13":{},"14":{},"20":{},"22":{},"25":{},"29":{},"30":{},"32":{},"34":{},"35":{},"39":{},"41":{},"43":{},"45":{},"49":{},"50":{},"56":{},"58":{},"63":{},"64":{},"66":{},"68":{},"70":{},"71":{},"75":{},"77":{},"78":{},"79":{},"80":{},"83":{},"91":{},"92":{},"94":{},"95":{},"97":{},"98":{},"101":{},"102":{},"112":{},"115":{},"117":{},"119":{},"121":{},"128":{},"130":{},"131":{},"132":{},"133":{},"136":{},"145":{},"146":{},"148":{},"149":{},"151":{},"152":{},"153":{},"154":{},"157":{},"158":{},"173":{},"177":{},"178":{},"181":{},"184":{},"189":{},"194":{},"196":{},"197":{},"198":{},"199":{},"202":{},"211":{},"212":{},"214":{},"215":{},"217":{},"218":{},"219":{},"220":{},"223":{},"224":{},"239":{},"243":{},"244":{},"247":{},"250":{},"255":{}},"component":{}}],["user1",{"_index":2078,"title":{},"name":{},"text":{"78":{},"131":{},"197":{}},"component":{}}],["usergroup",{"_index":1374,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["userinterfac",{"_index":1324,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["usernam",{"_index":304,"title":{},"name":{},"text":{"2":{},"14":{},"22":{},"32":{},"41":{},"50":{},"58":{},"68":{},"80":{},"96":{},"101":{},"117":{},"133":{},"151":{},"157":{},"199":{},"217":{},"223":{}},"component":{}}],["username=tru",{"_index":2952,"title":{},"name":{},"text":{"101":{},"157":{},"223":{}},"component":{}}],["userregistryactor.scala",{"_index":1605,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["userrepos.j",{"_index":1863,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["userroutes.scala",{"_index":1606,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["userroutesspec.scala",{"_index":1607,"title":{},"name":{},"text":{"30":{},"64":{}},"component":{}}],["users.sh",{"_index":3217,"title":{},"name":{},"text":{"146":{},"212":{}},"component":{}}],["user’",{"_index":344,"title":{},"name":{},"text":{"2":{},"20":{},"41":{},"56":{},"78":{},"101":{},"131":{},"157":{},"197":{},"223":{}},"component":{}}],["usr/bin/env",{"_index":2820,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["usual",{"_index":779,"title":{},"name":{},"text":{"8":{},"29":{},"32":{},"39":{},"47":{},"63":{},"68":{},"75":{},"81":{},"88":{},"98":{},"108":{},"112":{},"117":{},"121":{},"122":{},"141":{},"151":{},"153":{},"154":{},"169":{},"173":{},"180":{},"184":{},"185":{},"189":{},"207":{},"217":{},"219":{},"220":{},"235":{},"239":{},"246":{},"250":{},"251":{},"255":{}},"component":{}}],["usus",{"_index":3421,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["ut",{"_index":805,"title":{},"name":{},"text":{"10":{}},"component":{}}],["util",{"_index":3571,"title":{},"name":{},"text":{"174":{},"186":{},"187":{},"188":{},"240":{},"252":{},"253":{},"254":{}},"component":{}}],["uuid",{"_index":3782,"title":{},"name":{},"text":{"240":{}},"component":{}}],["v",{"_index":1381,"title":{},"name":{},"text":{"22":{},"27":{},"29":{},"58":{},"62":{},"63":{},"111":{},"120":{},"172":{},"183":{},"234":{},"238":{},"249":{}},"component":{}}],["v1",{"_index":1399,"title":{},"name":{},"text":{"23":{},"59":{},"80":{},"98":{},"154":{},"220":{}},"component":{}}],["v1.0.9",{"_index":2019,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["v1.1.x",{"_index":1383,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["v10",{"_index":3063,"title":{},"name":{},"text":{"114":{},"176":{},"242":{}},"component":{}}],["v2",{"_index":1397,"title":{},"name":{},"text":{"23":{},"59":{},"101":{},"157":{},"223":{}},"component":{}}],["v2.0",{"_index":2164,"title":{},"name":{},"text":{"80":{},"81":{},"83":{},"96":{},"133":{},"151":{},"199":{},"217":{}},"component":{}}],["v2.0.0",{"_index":3196,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["v20",{"_index":3603,"title":{},"name":{},"text":{"176":{}},"component":{}}],["v22",{"_index":3800,"title":{},"name":{},"text":{"242":{}},"component":{}}],["v3.0",{"_index":2290,"title":{},"name":{},"text":{"83":{}},"component":{}}],["v3.0.0",{"_index":3197,"title":{},"name":{},"text":{"136":{},"202":{}},"component":{}}],["v4.0.0",{"_index":3167,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["v6",{"_index":1525,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["vagrant",{"_index":80,"title":{"2-4":{},"4-1":{},"41-4":{},"43-1":{},"91-1":{},"145-1":{},"211-1":{}},"name":{},"text":{"2":{},"4":{},"20":{},"41":{},"43":{},"56":{},"78":{},"91":{},"101":{},"131":{},"145":{},"157":{},"197":{},"211":{},"223":{}},"component":{}}],["vagrant/ansible/playbooks/rol",{"_index":571,"title":{"4-2":{},"43-2":{},"91-2":{},"145-2":{},"211-2":{}},"name":{},"text":{},"component":{}}],["vagrant/ansible/rol",{"_index":607,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["vagrant/ansible/roles/geerlingguy.git",{"_index":2028,"title":{},"name":{},"text":{"76":{},"129":{},"195":{}},"component":{}}],["vagrant_prefer_system_bin=1",{"_index":589,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["valid",{"_index":206,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"100":{},"126":{},"151":{},"153":{},"154":{},"156":{},"178":{},"189":{},"192":{},"217":{},"219":{},"220":{},"222":{},"244":{},"255":{},"258":{}},"component":{}}],["valu",{"_index":277,"title":{},"name":{},"text":{"2":{},"8":{},"12":{},"14":{},"20":{},"32":{},"41":{},"47":{},"50":{},"56":{},"60":{},"68":{},"77":{},"79":{},"88":{},"94":{},"96":{},"98":{},"99":{},"100":{},"101":{},"117":{},"126":{},"128":{},"130":{},"132":{},"141":{},"148":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"182":{},"184":{},"185":{},"188":{},"189":{},"192":{},"194":{},"196":{},"198":{},"207":{},"214":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"248":{},"250":{},"251":{},"254":{},"255":{},"258":{}},"component":{}}],["values.dev.yaml",{"_index":3330,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.env.yaml",{"_index":3327,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.prod.yaml",{"_index":3332,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.test.yaml",{"_index":3331,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["values.yaml",{"_index":3311,"title":{},"name":{},"text":{"151":{},"174":{},"217":{},"240":{}},"component":{}}],["vanilla",{"_index":3142,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["var",{"_index":952,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["var/lib/jenkins/init.groovy.d/url.groovi",{"_index":2217,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["var/lib/pgsql",{"_index":2123,"title":{},"name":{},"text":{"79":{},"132":{},"198":{}},"component":{}}],["variabl",{"_index":35,"title":{"11-1":{},"32-16":{},"32-17":{},"68-16":{},"68-17":{},"117-16":{},"117-17":{}},"name":{},"text":{"1":{},"6":{},"8":{},"11":{},"12":{},"14":{},"16":{},"19":{},"27":{},"32":{},"40":{},"45":{},"47":{},"50":{},"52":{},"55":{},"62":{},"68":{},"76":{},"80":{},"87":{},"88":{},"95":{},"96":{},"98":{},"100":{},"107":{},"109":{},"111":{},"117":{},"129":{},"133":{},"140":{},"141":{},"149":{},"151":{},"154":{},"156":{},"168":{},"170":{},"172":{},"181":{},"195":{},"199":{},"206":{},"207":{},"215":{},"217":{},"220":{},"222":{},"234":{},"236":{},"238":{},"247":{}},"component":{}}],["variables.scss",{"_index":3707,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["variou",{"_index":464,"title":{},"name":{},"text":{"2":{},"19":{},"29":{},"30":{},"35":{},"38":{},"41":{},"55":{},"63":{},"64":{},"71":{},"74":{},"98":{},"100":{},"112":{},"113":{},"136":{},"154":{},"156":{},"173":{},"174":{},"175":{},"180":{},"187":{},"188":{},"202":{},"220":{},"222":{},"239":{},"240":{},"241":{},"246":{},"253":{},"254":{}},"component":{}}],["vars/odspipeline.groovi",{"_index":992,"title":{},"name":{},"text":{"14":{},"50":{}},"component":{}}],["vault",{"_index":237,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["vendor",{"_index":3417,"title":{},"name":{},"text":{"154":{},"220":{},"240":{}},"component":{}}],["venv",{"_index":1581,"title":{},"name":{},"text":{"29":{},"63":{},"173":{},"178":{},"180":{},"239":{},"244":{},"246":{}},"component":{}}],["venv/bin/activ",{"_index":1582,"title":{},"name":{},"text":{"29":{},"63":{}},"component":{}}],["verbatim",{"_index":3320,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["verbos",{"_index":2212,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["veri",{"_index":1210,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"128":{},"156":{},"194":{},"222":{}},"component":{}}],["verifi",{"_index":315,"title":{},"name":{},"text":{"2":{},"5":{},"27":{},"41":{},"44":{},"47":{},"62":{},"79":{},"88":{},"96":{},"100":{},"111":{},"120":{},"132":{},"141":{},"151":{},"156":{},"157":{},"172":{},"183":{},"198":{},"207":{},"217":{},"222":{},"223":{},"238":{},"249":{}},"component":{}}],["verifytl",{"_index":3354,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["vero",{"_index":812,"title":{},"name":{},"text":{"10":{}},"component":{}}],["versa",{"_index":3134,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["version",{"_index":191,"title":{"94":{},"95":{},"148":{},"149":{},"150":{},"214":{},"215":{},"216":{},"12-3":{},"14-9":{},"32-9":{},"50-9":{},"68-9":{},"83-7":{},"83-12":{},"83-13":{},"83-14":{},"94-9":{},"114-5":{},"117-9":{},"136-6":{},"136-12":{},"136-13":{},"136-14":{},"137-1":{},"142-1":{},"146-2":{},"148-9":{},"153-11":{},"153-16":{},"161-3":{},"173-8":{},"176-5":{},"189-6":{},"202-6":{},"202-12":{},"202-13":{},"202-14":{},"203-1":{},"208-1":{},"212-2":{},"214-9":{},"219-11":{},"219-16":{},"227-3":{},"234-3":{},"239-8":{},"242-5":{},"255-6":{}},"name":{},"text":{"2":{},"3":{},"12":{},"14":{},"16":{},"21":{},"27":{},"30":{},"32":{},"34":{},"38":{},"41":{},"42":{},"50":{},"52":{},"57":{},"62":{},"64":{},"68":{},"70":{},"74":{},"76":{},"77":{},"79":{},"80":{},"82":{},"83":{},"90":{},"94":{},"96":{},"98":{},"101":{},"111":{},"113":{},"114":{},"115":{},"117":{},"119":{},"120":{},"128":{},"129":{},"130":{},"132":{},"133":{},"135":{},"136":{},"137":{},"142":{},"144":{},"146":{},"148":{},"150":{},"151":{},"153":{},"154":{},"157":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"183":{},"184":{},"185":{},"189":{},"194":{},"195":{},"196":{},"198":{},"199":{},"201":{},"202":{},"203":{},"208":{},"210":{},"212":{},"214":{},"216":{},"217":{},"219":{},"220":{},"223":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"249":{},"250":{},"251":{},"255":{}},"component":{}}],["version=1",{"_index":2688,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["version=wip",{"_index":2708,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["version=x",{"_index":2709,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["versioneddevenv",{"_index":2713,"title":{},"name":{},"text":{"98":{},"150":{},"154":{},"216":{},"220":{}},"component":{}}],["via",{"_index":525,"title":{"4-3":{},"20-4":{},"22-5":{},"27-7":{},"43-3":{},"56-4":{},"58-5":{},"62-7":{},"91-3":{},"100-7":{},"101-14":{},"111-7":{},"145-3":{},"156-7":{},"157-17":{},"172-7":{},"211-3":{},"222-7":{},"223-17":{},"238-7":{}},"name":{},"text":{"2":{},"5":{},"14":{},"17":{},"19":{},"20":{},"22":{},"27":{},"30":{},"34":{},"39":{},"41":{},"44":{},"47":{},"50":{},"53":{},"55":{},"56":{},"58":{},"62":{},"64":{},"70":{},"75":{},"77":{},"79":{},"80":{},"82":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"111":{},"113":{},"115":{},"119":{},"120":{},"121":{},"130":{},"132":{},"133":{},"135":{},"136":{},"141":{},"148":{},"149":{},"150":{},"151":{},"153":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"172":{},"175":{},"177":{},"183":{},"184":{},"188":{},"196":{},"198":{},"199":{},"201":{},"202":{},"207":{},"214":{},"215":{},"216":{},"217":{},"219":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"238":{},"240":{},"241":{},"243":{},"249":{},"250":{},"254":{}},"component":{}}],["vice",{"_index":3133,"title":{},"name":{},"text":{"127":{},"193":{}},"component":{}}],["view",{"_index":506,"title":{},"name":{},"text":{"2":{},"22":{},"29":{},"38":{},"41":{},"58":{},"63":{},"74":{},"80":{},"101":{},"113":{},"133":{},"157":{},"175":{},"199":{},"223":{},"241":{}},"component":{}}],["virtual",{"_index":863,"title":{},"name":{},"text":{"12":{},"29":{},"63":{},"112":{},"173":{},"178":{},"180":{},"239":{},"244":{},"246":{}},"component":{}}],["virtualbox",{"_index":81,"title":{"2-5":{},"41-5":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["virtualenv",{"_index":1580,"title":{},"name":{},"text":{"29":{},"63":{},"106":{},"112":{},"166":{},"232":{}},"component":{}}],["virutalenv",{"_index":2456,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["visual",{"_index":2359,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["vm",{"_index":187,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["vm.max_map_count",{"_index":3162,"title":{},"name":{},"text":{"130":{},"196":{}},"component":{}}],["vm.max_map_count=262144",{"_index":2034,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["void",{"_index":2536,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["volum",{"_index":1015,"title":{},"name":{},"text":{"14":{},"31":{},"50":{},"67":{},"96":{},"99":{},"116":{},"151":{},"155":{},"178":{},"217":{},"221":{},"244":{}},"component":{}}],["voluptua",{"_index":811,"title":{},"name":{},"text":{"10":{}},"component":{}}],["vs",{"_index":2361,"title":{},"name":{},"text":{"93":{},"147":{},"213":{}},"component":{}}],["vue",{"_index":1878,"title":{"38":{},"74":{}},"name":{"38":{},"74":{}},"text":{"38":{},"39":{},"74":{},"75":{}},"component":{}}],["vue.d.t",{"_index":1920,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["vue.j",{"_index":1883,"title":{},"name":{},"text":{"38":{},"74":{}},"component":{}}],["vuln,config,secret,licens",{"_index":3300,"title":{},"name":{},"text":{"151":{},"217":{}},"component":{}}],["vulner",{"_index":764,"title":{"128-5":{},"194-5":{}},"name":{},"text":{"7":{},"13":{},"14":{},"16":{},"46":{},"49":{},"50":{},"52":{},"85":{},"93":{},"96":{},"128":{},"138":{},"147":{},"151":{},"194":{},"204":{},"213":{},"217":{}},"component":{}}],["vulnerabilti",{"_index":3161,"title":{},"name":{},"text":{"128":{},"194":{}},"component":{}}],["vultyp",{"_index":3301,"title":{},"name":{},"text":{"151":{}},"component":{}}],["vvv",{"_index":2848,"title":{},"name":{},"text":{"100":{},"156":{},"222":{}},"component":{}}],["w",{"_index":2037,"title":{},"name":{},"text":{"77":{},"100":{},"130":{},"156":{},"196":{},"222":{}},"component":{}}],["w/o",{"_index":657,"title":{},"name":{},"text":{"5":{},"25":{},"44":{},"66":{},"83":{}},"component":{}}],["waf",{"_index":847,"title":{"12":{},"12-4":{}},"name":{},"text":{"11":{},"12":{}},"component":{}}],["waf_modsecur",{"_index":839,"title":{},"name":{},"text":{"11":{},"12":{}},"component":{}}],["wait",{"_index":2611,"title":{},"name":{},"text":{"96":{},"151":{},"217":{}},"component":{}}],["walkthrough",{"_index":2632,"title":{"98-22":{},"154-27":{},"220-27":{}},"name":{},"text":{},"component":{}}],["want",{"_index":280,"title":{"28-1":{},"65-1":{},"114-1":{},"176-1":{},"242-1":{}},"name":{},"text":{"2":{},"5":{},"14":{},"19":{},"21":{},"22":{},"25":{},"26":{},"27":{},"30":{},"32":{},"35":{},"36":{},"41":{},"44":{},"47":{},"50":{},"55":{},"57":{},"58":{},"61":{},"62":{},"64":{},"66":{},"68":{},"71":{},"72":{},"77":{},"79":{},"80":{},"81":{},"83":{},"88":{},"93":{},"96":{},"98":{},"99":{},"100":{},"101":{},"108":{},"109":{},"110":{},"111":{},"113":{},"115":{},"117":{},"120":{},"121":{},"122":{},"126":{},"128":{},"130":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"147":{},"150":{},"151":{},"154":{},"155":{},"156":{},"157":{},"169":{},"170":{},"171":{},"172":{},"175":{},"177":{},"183":{},"184":{},"185":{},"192":{},"194":{},"196":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"213":{},"216":{},"217":{},"220":{},"221":{},"222":{},"223":{},"235":{},"236":{},"237":{},"238":{},"241":{},"243":{},"249":{},"250":{},"251":{},"258":{}},"component":{}}],["warrant",{"_index":3375,"title":{},"name":{},"text":{"153":{},"219":{}},"component":{}}],["wasm",{"_index":3553,"title":{},"name":{},"text":{"174":{},"240":{}},"component":{}}],["watch",{"_index":1771,"title":{},"name":{},"text":{"34":{},"70":{},"119":{},"174":{},"240":{}},"component":{}}],["way",{"_index":523,"title":{},"name":{},"text":{"2":{},"5":{},"14":{},"34":{},"41":{},"44":{},"50":{},"70":{},"80":{},"81":{},"83":{},"95":{},"96":{},"97":{},"98":{},"100":{},"101":{},"108":{},"119":{},"133":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"156":{},"157":{},"169":{},"189":{},"199":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"222":{},"223":{},"235":{},"255":{}},"component":{}}],["weather.t",{"_index":1541,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["web",{"_index":557,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"24":{},"29":{},"36":{},"41":{},"44":{},"45":{},"60":{},"63":{},"72":{},"83":{},"85":{},"96":{},"98":{},"108":{},"109":{},"112":{},"113":{},"122":{},"138":{},"151":{},"154":{},"158":{},"169":{},"170":{},"174":{},"175":{},"178":{},"179":{},"185":{},"189":{},"204":{},"217":{},"220":{},"224":{},"235":{},"236":{},"240":{},"241":{},"244":{},"245":{},"251":{},"255":{}},"component":{}}],["webhook",{"_index":680,"title":{"8":{},"47":{},"88":{},"141":{},"207":{},"6-6":{},"8-1":{},"8-2":{},"8-3":{},"22-2":{},"45-6":{},"47-6":{},"47-7":{},"58-2":{},"80-16":{},"84-4":{},"88-6":{},"88-7":{},"101-8":{},"133-16":{},"141-6":{},"141-7":{},"157-11":{},"199-16":{},"207-6":{},"207-7":{},"223-11":{}},"name":{"8":{},"47":{},"88":{},"141":{},"207":{}},"text":{"5":{},"6":{},"8":{},"21":{},"22":{},"44":{},"45":{},"47":{},"57":{},"58":{},"77":{},"79":{},"80":{},"83":{},"84":{},"88":{},"94":{},"95":{},"101":{},"102":{},"123":{},"128":{},"130":{},"132":{},"133":{},"141":{},"148":{},"149":{},"150":{},"157":{},"158":{},"186":{},"194":{},"196":{},"198":{},"199":{},"207":{},"214":{},"215":{},"216":{},"223":{},"224":{},"252":{}},"component":{}}],["webhook.setevents(ev",{"_index":1318,"title":{},"name":{},"text":{"22":{},"58":{}},"component":{}}],["webjar",{"_index":1209,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["webpack",{"_index":1829,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["webpag",{"_index":1856,"title":{},"name":{},"text":{"37":{},"73":{}},"component":{}}],["websecurityconfigureradapt",{"_index":1188,"title":{},"name":{},"text":{"19":{},"55":{},"100":{},"156":{},"222":{}},"component":{}}],["webserv",{"_index":1425,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["websit",{"_index":2268,"title":{},"name":{},"text":{"82":{},"135":{},"201":{}},"component":{}}],["web—al",{"_index":3714,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}],["welcom",{"_index":149,"title":{},"name":{},"text":{"2":{},"41":{}},"component":{}}],["well",{"_index":446,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"14":{},"19":{},"20":{},"22":{},"26":{},"28":{},"32":{},"38":{},"41":{},"45":{},"47":{},"50":{},"55":{},"56":{},"58":{},"61":{},"65":{},"68":{},"74":{},"79":{},"80":{},"81":{},"83":{},"88":{},"94":{},"95":{},"96":{},"98":{},"100":{},"101":{},"102":{},"110":{},"114":{},"117":{},"126":{},"127":{},"132":{},"133":{},"136":{},"137":{},"141":{},"142":{},"146":{},"148":{},"149":{},"150":{},"151":{},"154":{},"156":{},"157":{},"171":{},"176":{},"189":{},"192":{},"193":{},"198":{},"199":{},"202":{},"203":{},"207":{},"208":{},"212":{},"214":{},"215":{},"216":{},"217":{},"220":{},"222":{},"223":{},"237":{},"242":{},"255":{},"258":{}},"component":{}}],["went",{"_index":1296,"title":{},"name":{},"text":{"21":{},"57":{},"100":{},"101":{},"156":{},"157":{},"222":{},"223":{}},"component":{}}],["whatev",{"_index":1463,"title":{},"name":{},"text":{"25":{},"66":{},"98":{},"115":{},"154":{},"177":{},"220":{},"243":{}},"component":{}}],["what’",{"_index":3225,"title":{"150-3":{},"216-3":{}},"name":{},"text":{"150":{},"216":{}},"component":{}}],["whenev",{"_index":3400,"title":{},"name":{},"text":{"153":{},"157":{},"189":{},"219":{},"223":{},"255":{}},"component":{}}],["whether",{"_index":961,"title":{},"name":{},"text":{"14":{},"50":{},"77":{},"79":{},"96":{},"99":{},"101":{},"130":{},"132":{},"151":{},"153":{},"155":{},"157":{},"196":{},"198":{},"217":{},"219":{},"221":{},"223":{}},"component":{}}],["whole",{"_index":1449,"title":{},"name":{},"text":{"24":{},"60":{},"79":{},"132":{},"198":{}},"component":{}}],["whose",{"_index":2645,"title":{},"name":{},"text":{"98":{},"126":{},"154":{},"192":{},"220":{},"258":{}},"component":{}}],["wide",{"_index":1319,"title":{},"name":{},"text":{"22":{},"58":{},"101":{},"157":{},"223":{}},"component":{}}],["wikipedia",{"_index":1713,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["wikipedia.org/wiki/iris_flower_data_set",{"_index":1717,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["wildcard",{"_index":727,"title":{},"name":{},"text":{"6":{},"45":{},"85":{},"138":{},"150":{},"204":{},"216":{}},"component":{}}],["window",{"_index":222,"title":{},"name":{},"text":{"2":{},"4":{},"41":{},"43":{},"77":{},"91":{},"130":{},"145":{},"196":{},"211":{}},"component":{}}],["windows’",{"_index":592,"title":{},"name":{},"text":{"4":{},"43":{},"91":{},"145":{},"211":{}},"component":{}}],["wip",{"_index":2674,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["withenv",{"_index":2453,"title":{},"name":{},"text":{"95":{},"149":{},"215":{}},"component":{}}],["within",{"_index":168,"title":{"83-4":{},"158-2":{},"224-2":{}},"name":{},"text":{"2":{},"7":{},"8":{},"14":{},"19":{},"21":{},"22":{},"31":{},"32":{},"33":{},"39":{},"41":{},"46":{},"50":{},"55":{},"57":{},"58":{},"67":{},"68":{},"69":{},"75":{},"80":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"109":{},"116":{},"117":{},"118":{},"121":{},"128":{},"133":{},"136":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"170":{},"174":{},"178":{},"179":{},"181":{},"182":{},"184":{},"194":{},"199":{},"202":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"236":{},"240":{},"244":{},"245":{},"247":{},"248":{},"250":{}},"component":{}}],["without",{"_index":333,"title":{"181-6":{},"240-12":{},"240-13":{},"247-6":{}},"name":{},"text":{"2":{},"6":{},"14":{},"19":{},"27":{},"41":{},"45":{},"50":{},"55":{},"62":{},"78":{},"83":{},"95":{},"98":{},"100":{},"108":{},"111":{},"115":{},"120":{},"131":{},"136":{},"149":{},"151":{},"154":{},"156":{},"169":{},"172":{},"177":{},"183":{},"197":{},"202":{},"215":{},"217":{},"220":{},"222":{},"235":{},"238":{},"243":{},"249":{}},"component":{}}],["wizard",{"_index":89,"title":{"2-14":{},"2-30":{},"2-36":{},"2-46":{},"41-14":{},"41-30":{},"41-36":{},"41-46":{}},"name":{},"text":{"2":{},"41":{}},"component":{}}],["work",{"_index":160,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"14":{},"22":{},"27":{},"29":{},"39":{},"41":{},"44":{},"45":{},"50":{},"58":{},"62":{},"63":{},"75":{},"77":{},"79":{},"80":{},"81":{},"83":{},"85":{},"94":{},"95":{},"96":{},"98":{},"101":{},"108":{},"111":{},"123":{},"127":{},"130":{},"132":{},"133":{},"136":{},"138":{},"148":{},"149":{},"151":{},"153":{},"154":{},"157":{},"169":{},"172":{},"186":{},"193":{},"196":{},"198":{},"199":{},"202":{},"204":{},"214":{},"215":{},"217":{},"219":{},"220":{},"223":{},"235":{},"238":{},"252":{}},"component":{}}],["worker",{"_index":1407,"title":{},"name":{},"text":{"24":{},"60":{}},"component":{}}],["worker.j",{"_index":1840,"title":{},"name":{},"text":{"36":{},"72":{},"122":{}},"component":{}}],["workflow",{"_index":917,"title":{"14-3":{},"50-3":{},"96-4":{},"151-4":{},"217-4":{}},"name":{},"text":{"14":{},"32":{},"50":{},"68":{},"87":{},"96":{},"117":{},"140":{},"151":{},"206":{},"217":{}},"component":{}}],["workingdir",{"_index":1986,"title":{},"name":{},"text":{"50":{},"96":{},"99":{},"151":{},"155":{},"217":{},"221":{}},"component":{}}],["world",{"_index":2548,"title":{},"name":{},"text":{"96":{},"136":{},"151":{},"202":{},"217":{}},"component":{}}],["worri",{"_index":658,"title":{},"name":{},"text":{"5":{},"44":{},"79":{},"83":{},"132":{},"198":{}},"component":{}}],["wrap",{"_index":1639,"title":{},"name":{},"text":{"32":{},"68":{},"109":{},"117":{},"170":{},"236":{}},"component":{}}],["wrapper",{"_index":1488,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"161":{},"172":{},"183":{},"227":{},"238":{},"249":{}},"component":{}}],["wrapper.jar",{"_index":1495,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["wrapper.properti",{"_index":3103,"title":{},"name":{},"text":{"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["write",{"_index":394,"title":{"14-7":{},"50-7":{}},"name":{},"text":{"2":{},"14":{},"22":{},"26":{},"41":{},"50":{},"58":{},"61":{},"77":{},"96":{},"98":{},"99":{},"101":{},"108":{},"110":{},"151":{},"154":{},"155":{},"157":{},"169":{},"171":{},"174":{},"217":{},"220":{},"221":{},"223":{},"235":{},"237":{},"240":{}},"component":{}}],["written",{"_index":1561,"title":{},"name":{},"text":{"29":{},"63":{},"77":{},"82":{},"95":{},"112":{},"130":{},"135":{},"149":{},"173":{},"174":{},"196":{},"201":{},"215":{},"239":{},"240":{}},"component":{}}],["wrong",{"_index":602,"title":{},"name":{},"text":{"4":{},"14":{},"21":{},"43":{},"50":{},"57":{},"91":{},"96":{},"100":{},"101":{},"145":{},"156":{},"157":{},"211":{},"222":{},"223":{}},"component":{}}],["wsl",{"_index":2057,"title":{},"name":{},"text":{"77":{},"130":{},"196":{}},"component":{}}],["www",{"_index":1352,"title":{},"name":{},"text":{"22":{},"36":{},"58":{},"72":{},"122":{},"185":{},"251":{}},"component":{}}],["x",{"_index":1110,"title":{},"name":{},"text":{"14":{},"17":{},"22":{},"50":{},"53":{},"58":{},"77":{},"96":{},"98":{},"130":{},"137":{},"142":{},"146":{},"151":{},"154":{},"170":{},"174":{},"196":{},"203":{},"208":{},"212":{},"217":{},"220":{},"236":{},"240":{}},"component":{}}],["x.foo",{"_index":2723,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["x.x",{"_index":2714,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["x_route=x.foo",{"_index":2733,"title":{},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["xml",{"_index":2646,"title":{},"name":{},"text":{"98":{},"108":{},"112":{},"115":{},"154":{},"169":{},"173":{},"177":{},"220":{},"235":{},"239":{},"243":{}},"component":{}}],["xunit",{"_index":2477,"title":{},"name":{},"text":{"96":{},"112":{},"115":{},"123":{},"151":{},"173":{},"174":{},"177":{},"180":{},"186":{},"217":{},"239":{},"240":{},"243":{},"246":{},"252":{}},"component":{}}],["xx",{"_index":3422,"title":{},"name":{},"text":{"154":{},"220":{}},"component":{}}],["xxxx",{"_index":1778,"title":{},"name":{},"text":{"34":{},"70":{},"119":{}},"component":{}}],["xyz",{"_index":616,"title":{"80-22":{},"133-22":{},"199-22":{}},"name":{},"text":{"4":{},"43":{},"80":{},"91":{},"133":{},"145":{},"199":{},"211":{}},"component":{}}],["y",{"_index":516,"title":{},"name":{},"text":{"2":{},"41":{},"98":{},"114":{},"154":{},"176":{},"220":{},"242":{}},"component":{}}],["y2rfdxnlcg",{"_index":2157,"title":{},"name":{},"text":{"80":{},"133":{},"199":{}},"component":{}}],["yaml",{"_index":1157,"title":{},"name":{},"text":{"19":{},"22":{},"55":{},"58":{},"80":{},"100":{},"102":{},"133":{},"156":{},"199":{},"222":{}},"component":{}}],["yarn",{"_index":1816,"title":{},"name":{},"text":{"35":{},"36":{},"37":{},"71":{},"72":{},"73":{},"105":{},"122":{},"162":{},"163":{},"164":{},"165":{},"228":{},"229":{},"230":{},"231":{}},"component":{}}],["ye",{"_index":1738,"title":{},"name":{},"text":{"32":{},"68":{},"117":{}},"component":{}}],["year",{"_index":2288,"title":{},"name":{},"text":{"83":{}},"component":{}}],["yeoman",{"_index":1535,"title":{},"name":{},"text":{"28":{},"65":{}},"component":{}}],["yml",{"_index":1949,"title":{},"name":{},"text":{"39":{},"75":{}},"component":{}}],["yourself",{"_index":1499,"title":{},"name":{},"text":{"27":{},"62":{},"82":{},"95":{},"98":{},"108":{},"111":{},"120":{},"135":{},"149":{},"154":{},"169":{},"172":{},"183":{},"201":{},"215":{},"220":{},"235":{},"238":{},"249":{}},"component":{}}],["you´ll",{"_index":1491,"title":{},"name":{},"text":{"27":{},"62":{},"111":{},"120":{},"172":{},"183":{},"238":{},"249":{}},"component":{}}],["you’d",{"_index":1478,"title":{},"name":{},"text":{"26":{},"47":{},"61":{},"88":{},"110":{},"141":{},"171":{},"207":{},"237":{}},"component":{}}],["you’ll",{"_index":1125,"title":{},"name":{},"text":{"14":{},"36":{},"37":{},"50":{},"72":{},"73":{},"83":{},"95":{},"97":{},"98":{},"108":{},"122":{},"130":{},"149":{},"150":{},"152":{},"154":{},"158":{},"169":{},"185":{},"196":{},"215":{},"216":{},"218":{},"220":{},"224":{},"235":{},"251":{}},"component":{}}],["you’r",{"_index":739,"title":{},"name":{},"text":{"6":{},"8":{},"45":{}},"component":{}}],["z",{"_index":2847,"title":{},"name":{},"text":{"100":{},"153":{},"156":{},"189":{},"219":{},"222":{},"255":{}},"component":{}}],["z0",{"_index":3388,"title":{},"name":{},"text":{"153":{},"189":{},"219":{},"255":{}},"component":{}}],["zephyr",{"_index":2631,"title":{"98-16":{},"154-19":{},"220-19":{}},"name":{},"text":{"98":{},"154":{},"220":{}},"component":{}}],["zmartzone/lua",{"_index":2999,"title":{},"name":{},"text":{"109":{},"170":{},"236":{}},"component":{}}],["zone",{"_index":3709,"title":{},"name":{},"text":{"185":{},"251":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app (including Rundeck. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools and Rundeck. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables.","title":"Infrastructure Setup","component":"opendevstack","version":"1.x","name":"infrastructure-setup","url":"/opendevstack/1.x/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1}]},"2":{"id":2,"text":"Welcome to the OpenDevStack. The OpenDevStack is a framework to help in setting up a project infrastructure and continuous delivery processes on OpenShift and Atlassian toolstack with one click. This guide shall help you to setup the OpenDevStack, so you can work with it and test it in a local environment setup. The steps for the setup can also be adapted for running the OpenDevstack with an existing OpenShift installation or to connect it with your Atlassian tools, if you use Atlassian Crowd as SSO provider. Important: The credentials provided in the guide are only meant to be used within the local test installation. For use in production you will have to customize paths, URLs and credentials! The following requirements have to be met to setup a local environment. You should have a computer with at least 32 GB of RAM, because we are going to install several Atlassian tools and a local OpenShift environment. Important: We assume, you will have a full functional internet connection We use Git as code repository, so you have to be familiar to work with Git. The OpenDevStack uses Vagrant to provide a sample infrastructure for the Atlassian tools, Rundeck and a so called Ansible controller, a VM, where you can run Ansible scripts against the Atlassian VM. It is recommended to use the latest Vagrant version available from the HashiCorp Vagrant page. Vagrant uses Virtualbox for running the provisioned VMs. Therefore you must have Virtualbox installed. To use the Atlassian tools you need a license to run them. For testing and evaluation Atlassian provides evalutation licenses, which you can get on the My Atlassian license page. Here you have to keep in mind, that you have to register, if you don’t have an Atlassian account. The registration is for free. You need licenses for the following products: Bitbucket Jira Confluence Crowd The evaluation licenses are valid for 30 days from the date of purchase. If you need a server id, this will be provided by the tools within the installation, so you are able to inlcude the licenses within theinstallation wizards of the tools, after the base setup provided by the Ansible scripts. The base setup uses the following versions: Software Version Bitbucket 5.16.3 Jira 7.13.3 Confluence 6.14.3 Crowd 3.4.4 You must have the possibility to run bash scripts to install the OpenDevStack. On Linux systems you can use these scripts out-of-the box, on Windows systems you will have to install either a bash port for Windows like Cygwin. For Windows, our recommendation is to use Cygwin for configuration. Make sure to select the curl package under the \"net\" category when installing cygwin. The OpenDevStack uses Ansible to install and configure the necessary software for the enabling stack, so it’s recommended to get familiar with its core concepts and usage. Credentials are stored within an Ansible vault, so even if you commit them in a public repository they are not available unless you know the vault password. Nevertheless, it is recommended to take care with handling credentials, even if they are encrypted. From now on we assume, you work from a Bash (Cygwin / Linux). We use tailor to handle our versioned OpenShift templates and keep our cluster in sync. Please see its installation instructions for your platform. The following lists the version requirements: OpenDevStack version Tailor version 0.1.x = 0.8 1.0.x >= 0.9.1 1.1.x >= 0.9.3 First create a base directory for the OpenDevStack repositories, e.g. ods. This will be your base directory for all following operations. This path will also be mounted to the VMs provisioned by Vagrant. Then you have to clone the ods-core repository into the created directory. git clone https://github.com/opendevstack/ods-core.git Navigate to the folder ods ods-core infrastructure-setup. There you will find the setup and configuration shell scripts. You can start the infrastructure provisioning and setup by using ./setup-local-environment.sh This script allows you to set the necessary installation pathes, clones the necessary OpenDevStack repositories and prepares the vagrant infrastructure, including the base installation of the Atlassian tools, Rundeck and datatbase preparing. For a local test environment it is recommended to keep the default values. During script execution you will have the possibility to choose, if you want to confirm the Atlassian and Rundeck installation for every tool or to run a complete setup. After the base installation, you will have to configure the Atlassian tools, before you are able to proceed. The following steps explain the Atlassian tools configuration i the local test environment. If you have already installed the Atlassian tools, you can skip the Configuration Wizard chapter for the respective tool Access http://192.168.56.31:8095/crowd/console Be patient. First time accessing this page will take some time. Here you can see the server id you need for the license you can get from the My Atlassian page. Use the link to get an evaluation license (Crowd Server) or enter a valid license key into the textbox. Here choose the New installation option. The next step is the database configuration. Choose the JDBC Connection option and configure the database with the following settings Option Value Database PostgreSQL Driver class name org.postgresql.Driver JDBC URL jdbc:postgresql://localhost:5432/crowd?reWriteBatchedInserts=true&prepareThreshold=0 Username crowd Password crowd Hibernate dialect org.hibernate.dialect.PostgreSQLDialect Choose a deployment title, e.g. OpenDevStack and set the Base URL to http://192.168.56.31:8095/crowd Enter the name for the internal crowd directory, e.g. OpenDevStack Enter the data for the default administrator, so you are able to login to crowd. For the test installation, we will choose the username opendevstack.admin with the password admin. Enable the OpenID Server. Now you can verify the installation and log in with the credentials defined in the previous step. You will have to configure crowd to enable the Atlassian tools and Rundeck to login with crowd credentials. The following paragraphs assume, that you are logged in to the Crowd console. You will have to change the default session configuration. Open the Administration menu and choose the Session configuration entry. Uncheck the Require consistent client IP address checkbox. Click save and login again. You will have to add additional groups Crowd’s internal directory. The groups are listed in the table below. Group Description opendevstack-users Group for normal users without adminstration rights opendevstack-administrators Group for administration users To add a group, open the Groups tab and choose Add group Enter the name and the description for the group, choose the OpenDevStack directory and click Create. The group has been created. Repeat the steps of group creation for all necessary groups. After creating the groups you have to create a user, that is used by continuous integration mechanisms of the OpenDevStack. Go to the Users section in Crowd and click Add user. Enter the details for the CD user and click Create. For the provided scripts we assume, that the username cd_user with the password cd_user is used. In the following overview choose the user’s group tab and click Add groups Now search for all groups by leaving the Search fields empty, check the opendevstack-users group and click Add selected groups. The group has been added to the user. Now you have to add all groups to the administrator. Go to the Users section in Crowd, choose your administration user and open the Groups tab. Click Add groups, search for all by leaving the Search fields empty and add all groups. You will have to add the applications you want to access with your Crowd credentials in the Crowd console. Access the Crowd console at http://192.168.56.31:8095/crowd/console/ The following example shows, how to add Jira to the application section. The steps for the other applications are equal. Choose the Applications menu point and click Add application You enter the Add application-Wizard. Enter your application details and proceed with Next. Enter the URL and Remote IP address and click Next. Check the OpenDevStack user directory checkbox. Then proceed with Next. Check the Allow all users to authenticate checkbox. Click Next. Confirm the application information by clicking Add application In the following overview choose the Remote addresses tab. Now enter the CIDR 0.0.0.0/0 in the input field and click Add. You will have to add all applications listed in the table below. The provided data is meant to be used in the local test environment. Application type Name Password URL IP address Directories Authorisation Additional Remote Adresses Jira jira jira http://192.168.56.31:8080 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Confluence confluence confluence http://192.168.56.31:8090 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Bitbucket Server bitbucket bitbucket http://192.168.56.31:7990 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application rundeck rundeck http://192.168.56.31:4440 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application provision provision http://192.168.56.1:8088 192.168.56.1 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application sonarqube sonarqube https://sonarqube-cd.192.168.56.101.nip.io 192.168.56.101 Internal directory with OpenDevStack groups all users 0.0.0.0/0 After adding all applications they should shown at the applications overview in Crowd. Access http://192.168.56.31:7990 Be patient. First time accessing this page takes some time. On the configuration page you have the possibility to define the application name, the base URL and to get an evaluation license or enter a valid license. If you choose to get an evaluation license you can retrieve it from the my atlassian page. You will be redirected automatically. After adding the license you have to create a local Bitbucket administrator account. Don’t integrate Bitbucket with Jira, but proceed with going to Bitbucket. Go to the Bitbucket start page at http://192.168.56.31:7990/ Open the administration settings and navigate to the User directories menu. Here you have to add a directory of type Atlassian Crowd. In the following form add the Crowd server URL http://192.168.56.31:8095/crowd, the application name and the password you have defined for Bitbucket in crowd. For the local test environment this is bitbucket bitbucket Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Bitbucket. Now you have to configure the permissions for the OpenDevStack groups. Go to the Global permissions menu. In the Group access section add the opendevstack-administrators group with System Admin rights. Add the opendevstack-users group with Project Creator rights. The local checked out OpenDevStack repositories will be mirrored into the Bitbucket instance. Therefore, we need to create a new project within Bitbucket. Go to the Projects page in Bitbucket and click the Create project button. Now enter the Project name: OpenDevStack with the Project key OPENDEVSTACK and hit Create Project. Now open the project settings. In the Project permissions section, allow the opendevstack-users group write access. After you have adjusted the project permissions, you will have to create the repositories for the OpenDevStack. Go to the OpenDevStack project overview and choose the Create repository option, either with the '+' sign on the left menu bar or with the Create repository button in the middle of the screen, if you have an empty project. Enter the name for the repository and click Create repository. You will have to create the repositories listed in the table below. Repositories ods-core ods-configuration ods-configuration-sample ods-jenkins-shared-library ods-project-quickstarters ods-provisioning-app You will have to add a SSH key to the cd_user in Bitbucket, so Rundeck will be able to communicate with Bitbucket. First got to the Users section in the Bitbucket administration. Choose the cd_user and select the SSH keys tab. Click Add key The key has been auto generated during the setup script execution. Navigate to the base directory you created at the beginning of the setup process. There you will find a file named id_rsa_bitbucket.pub Copy the content of the file Paste the key to the input field in Bitbucket and click Add key Access http://192.168.56.31:8080 Be patient. First time accessing this page takes time. Here you have to choose the application title and the base URL. You can leave the data as is for the test environment. Here you have to enter the license key for the Jira instance (Jira Software (Server)). With the provided link in the dialogue you are able to generate an evaluation license at Atlassian. Now you have to set up a Jira administrator account. Unless you have configured a mail server, leave this for later. To finish this part of the Jira installation, you will have to provide some informations to your prefered language, your avatar and you will have to create an empty or a sample project. After these basic configurations, you have access to the Jira board. Open the User management in the Jira administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Jira in crowd. For the local test environment this is jira jira. Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Jira. The next step is to configure the permissions for the OpenDevStack user groups. Go to the Global Permissions menu beneath the System tab. There you will have to add the OpenDevStack groups according to the Jira user groups. For this choose the permission and the user group in the Add Permission section of the page and click Add. See the table below for the permission mapping. Permission User group Jira System Administrators opendevstack-administrators Jira Administrators opendevstack-administrators Browse Users opendevstack-(administrators|users) Create Shared Objects opendevstack-(administrators|users) Manage Group Filter Subscriptions opendevstack-(administrators|users) Bulk Change opendevstack-(administrators|users) The last step is to grant the created OpenDevStack groups application access. Go to the Application access menu beneath the Applications tab. There you will have to add the OpenDevStack groups according to the Jira user groups. Click on the group selection and choose the group you want to add to Jira. Access http://192.168.56.31:8090 Here you have to choose Production Installation, because we want to configure an external database. Ensure the add-ons are unchecked and proceed. Here you are able to get an evaluation license from atlassian or to enter a valid license key. Here you have to choose My own database. Choose By connection string as Setup type and configure the database with the following values: Option Value Database Type PostgreSQL Database URL jdbc:postgresql://localhost:5432/confluence User Name confluence Password confluence Click Next to proceed. Be patient. This step takes some time until next page appears. Here you have to choose Empty Site or Example Site Choose Manage users and groups within Confluence. Crowd will be configured later. Here you have to configure a local administrator account. After this step, you are able to work with Confluence. Just press Start and create a space. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left in the USERS & SECURITY section. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Now enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Confluence in crowd. For the local test environment this is confluence confluence Activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position and synchronize the directory. The last step is to configure the permissions for the OpenDevStack groups. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the Global Permissions entry at the left in the USERS & SECURITY section. Now choose Edit Permissions and add the OpenDevStack groups with the Input field in the groups section. Check the checkboxes, so the OpenDevStack groups have the same permissions the local confluence groups have. Click Save all to persist the permissions. After the configuration of the Atlassian tools has been done, it’s time to continue with the preparation oft the OpenDevStack environment. In this step the basic configuration for the OpenShift cluster takes place, as well as the installation of Sonarqube, Nexus3 and the Provisioning application. In addition Rundeck will be prepared automatically as far as possible. Navigate to the ods-core/infrastructure-setup/scripts directory on your local machine and execute the script prepare-local-environment.sh Now you will have to decide, which configuration should be done. In a first time installation you will have to keep the defaults. For further customization there will be an additional guide. Important; The preparation script also activates SSO in Confluence and Jira. After the activation has been done a login with the local administrator credentials is no longer possible! During the mirroring of the local repositories to your Bitbucket instance, it is possible, that you will be asked for credentials. Here you have to enter the credentials for your loacl Crowd administrator or the cd_user credentials. After the repository mirroring you may setup project branch permissions in Bitbucket, if the production branch should be guarded against direct merges except through admins. The subsequent paragraphs explain the installation and configuration content for Nexus3, Sonarqube, Rundeck and the Provisioning application. Nexus3 will be installed automatically, if you have confirmed the installation in the prepare script. After the installation Nexus3 will be accessible at http://nexus-cd.192.168.56.101.nip.io/ You are able to login with the default credentials for Nexus3 admin admin123. During installation various resources will be created automatically. You will find their description in the subsequent paragraphs. In the automated installation the following blob stores will be created Type Name Path File candidates /nexus-data/blobs/candidates File releases /nexus-data/blobs/releases File atlassian_public /nexus-data/blobs/atlassian_public This table lists the repositories created automatically. Name Format Type Online Version policy Layout policy Storage Strict Content Type Validation Deployment policy Remote Storage belongs to group candidates maven2 hosted checked Release Strict candidates checked Disable-redeploy none releases maven2 hosted checked Release Strict releases checked Disable-redeploy none npmjs npm proxy checked default checked https://registry.npmjs.org atlassian_public maven2 proxy checked Release Strict atlassian_public checked Disable-redeploy https://maven.atlassian.com/content/repositories/atlassian-public/ jcenter maven2 proxy checked Release Strict default checked Disable-redeploy https://jcenter.bintray.com maven-public sbt-plugins maven2 proxy checked Release permissive default unchecked Disable-redeploy http://dl.bintray.com/sbt/sbt-plugin-releases/ ivy-releases sbt-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases ivy-releases typesafe-ivy-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://dl.bintray.com/typesafe/ivy-releases ivy-releases ivy-releases maven2 group checked Release permissive default unchecked Disable-redeploy pypi-all pypi group checked default pypi-proxy pypi-proxy pypi proxy checked default https://pypi.org/ During installation the following user will be created. Name Password developer developer The user will get the opendevstack-developer role listed below. Role ID Role name Role description opendevstack-developer OpenDevStack-Developer Role for access from OpenDevStack This role has the following privileges: Privilege nx-repository-admin-maven2-candidates-browse nx-repository-admin-maven2-candidates-edit nx-repository-admin-maven2-candidates-read nx-repository-view-maven2-- nx-repository-view-maven2-candidates-* nx-repository-view-npm-- The account created is used to authenticate against Nexus3, anonymous access is disabled. By default Sonarqube will be installed with the preparation script. You will have to pass a valid authentication token for Sonarqube to the OpenShift templates, so the script will pause as soon as Sonarqube is available. Go to https://sonarqube-cd.192.168.56.101.nip.io . Login with your Crowd credentials. Now open your personal account settings. Generate a token in the Security section. Copy the token value to the input of the preparation script and follow the instructions. The token will be processed and integrated in the templates for future builds. In additon to the base Jenkins images you have the option to build additional Jenkins slave images. To do so, just type y instead of typing n or pressing Enter, if you are asked, if you want to install the additional slave images. After the preparation script execution, you will have to configure some values in Rundeck. Access Rundeck at http://192.168.56.31:4440/ Login with your Crowd credentials. Now choose the Quickstarters project. Open the Job Actions button on the right and Import Remote Changes Click Import Now you should see the imported jobs. Choose the verify global rundeck settings job and execute it to verify that Rundeck has all necessary data. If you use the Github repository, and use as is this step isn’t necessary! If you use your own repository, configure the export plugin in same way as the import plugin, except the file path template - set to rundeck-jobs/${job.group}${job.name}.${config.format} ##Run from OpenShift The Provisioning application has been installed with the environment preparation script and is accessible via https://prov-app-test.192.168.56.101.nip.io There is no further configuration needed. If the application is not available, you will have to proof in OpenShift, if there have been any errors during the installation. Open the cloned provision application in your favorite IDE If you run the application from your IDE, you will have to provide some addional informations. In case you want to use your local Nexus, you will have to create a gradle.properties file in the ods-provisioning-app project to provide the Nexus credentials, because we disabled anonymous access. nexus_url=http://nexus-cd.192.168.56.101.nip.io nexus_user=developer nexus_pw=developer You also have to ensure the Nexus certificate is integrated in the keystore of the JDK the IDE uses. If you don’t want to use the internal Nexus and run the application from your IDE, you will have to provide a gradle.properties file with the following content: no_nexus=true After startup via the IDE the application is available at http://localhost:8080/ You can login in with the Crowd admin user you set up earlier. OpenDevStack provides shared images used accross the stack - like the authproxy based on NGINX and lua for crowd In order to install, create a new project called shared-services Make the required customizations in the ods-configuration under ods-core shared-images nginx-authproxy-crowd ocp-config bc.env and secret.env and run tailor update inside ods-core\\shared-images\\nginx-authproxy-crowd: and start the build: oc start-build -n shared-services nginx-authproxy. After you have set up your local environment it’s time to test the OpenDevStack and see it working. Open the Provisioning application in your web browser and login with your crowd credentials. Provision your first project and have a look at your project in the Atlassian tools and OpenShift.","title":"Getting started","component":"opendevstack","version":"1.x","name":"local-installation","url":"/opendevstack/1.x/local-installation.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Requirements","hash":"_requirements","id":2},{"text":"Git","hash":"_git","id":3},{"text":"Vagrant","hash":"_vagrant","id":4},{"text":"Virtualbox","hash":"_virtualbox","id":5},{"text":"Atlassian tools licenses","hash":"_atlassian_tools_licenses","id":6},{"text":"Cygwin / Linux","hash":"_cygwin_linux","id":7},{"text":"Ansible","hash":"_ansible","id":8},{"text":"Setup your local environment","hash":"_setup_your_local_environment","id":9},{"text":"Tailor","hash":"_tailor","id":10},{"text":"Prepare infrastructure","hash":"_prepare_infrastructure","id":11},{"text":"Configure Atlassian Tools","hash":"_configure_atlassian_tools","id":12},{"text":"Atlassian Crowd","hash":"_atlassian_crowd","id":13},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard","id":14},{"text":"Step 1: License key","hash":"_step_1_license_key","id":15},{"text":"Step 2: Crowd installation","hash":"_step_2_crowd_installation","id":16},{"text":"Step 3: Database Configuration","hash":"_step_3_database_configuration","id":17},{"text":"Step 4: Options","hash":"_step_4_options","id":18},{"text":"Step 5: Internal directory","hash":"_step_5_internal_directory","id":19},{"text":"Step 6: Default administrator","hash":"_step_6_default_administrator","id":20},{"text":"Step 7: Integrated applications","hash":"_step_7_integrated_applications","id":21},{"text":"Step 8: Log in to Crowd console","hash":"_step_8_log_in_to_crowd_console","id":22},{"text":"Configure Crowd","hash":"_configure_crowd","id":23},{"text":"Session configuration","hash":"_session_configuration","id":24},{"text":"Add OpenDevStack groups","hash":"_add_opendevstack_groups","id":25},{"text":"Add CD user","hash":"_add_cd_user","id":26},{"text":"Add groups to administrator","hash":"_add_groups_to_administrator","id":27},{"text":"Add applications to crowd","hash":"_add_applications_to_crowd","id":28},{"text":"Attlassian Bitbucket","hash":"_attlassian_bitbucket","id":29},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_2","id":30},{"text":"Configure Crowd access","hash":"_configure_crowd_access","id":31},{"text":"Add permissions","hash":"_add_permissions","id":32},{"text":"Create OpenDevStack project in Bitbucket","hash":"_create_opendevstack_project_in_bitbucket","id":33},{"text":"Add SSH Key for CD user to Bitbucket","hash":"_add_ssh_key_for_cd_user_to_bitbucket","id":34},{"text":"Atlassian Jira","hash":"_atlassian_jira","id":35},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_3","id":36},{"text":"Step 1: Setup application properties","hash":"_step_1_setup_application_properties","id":37},{"text":"Step 2: Specify your license key","hash":"_step_2_specify_your_license_key","id":38},{"text":"Step 3: Set up administrator account","hash":"_step_3_set_up_administrator_account","id":39},{"text":"Step 4: Set up email notifications","hash":"_step_4_set_up_email_notifications","id":40},{"text":"Step 5: Basic configuration","hash":"_step_5_basic_configuration","id":41},{"text":"Configure user directory","hash":"_configure_user_directory","id":42},{"text":"Add permissions","hash":"_add_permissions_2","id":43},{"text":"Add application access","hash":"_add_application_access","id":44},{"text":"Atlassian Confluence","hash":"_atlassian_confluence","id":45},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_4","id":46},{"text":"Step 1: Set up Confluence","hash":"_step_1_set_up_confluence","id":47},{"text":"Step 2: Get add-ons","hash":"_step_2_get_add_ons","id":48},{"text":"Step 3: License key","hash":"_step_3_license_key","id":49},{"text":"Step 4: Choose a Database Configuration","hash":"_step_4_choose_a_database_configuration","id":50},{"text":"Step 5: Configure Database","hash":"_step_5_configure_database","id":51},{"text":"Step 6: Load Content","hash":"_step_6_load_content","id":52},{"text":"Step 7: Configure User Management","hash":"_step_7_configure_user_management","id":53},{"text":"Step 8: Configure System Administrator account","hash":"_step_8_configure_system_administrator_account","id":54},{"text":"Configure user directory","hash":"_configure_user_directory_2","id":55},{"text":"Add permissions","hash":"_add_permissions_3","id":56},{"text":"Prepare local OpenDevStack environment","hash":"_prepare_local_opendevstack_environment","id":57},{"text":"Nexus3","hash":"_nexus3","id":58},{"text":"Blob stores","hash":"_blob_stores","id":59},{"text":"Repositories","hash":"_repositories","id":60},{"text":"User and roles","hash":"_user_and_roles","id":61},{"text":"Sonarqube","hash":"_sonarqube","id":62},{"text":"Prepare Jenkins slave docker images","hash":"_prepare_jenkins_slave_docker_images","id":63},{"text":"Rundeck configuration","hash":"_rundeck_configuration","id":64},{"text":"Configure SCM Export plugin","hash":"_configure_scm_export_plugin","id":65},{"text":"Provisioning application","hash":"_provisioning_application","id":66},{"text":"Run from IDE","hash":"_run_from_ide","id":67},{"text":"Add shared images","hash":"_add_shared_images","id":68},{"text":"Try out the OpenDevStack","hash":"_try_out_the_opendevstack","id":69}]},"3":{"id":3,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 Rundeck 2.8.2-1.31.GA OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"1.x","name":"sysenv-requirements","url":"/opendevstack/1.x/sysenv-requirements.html","titles":[]},"4":{"id":4,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a slave pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"1.x","name":"troubleshooting","url":"/opendevstack/1.x/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins slave - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_slave_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"5":{"id":5,"text":"When we started with Redhat’s OpenShift we were blown away by the 100s of possibilities to use it, while there was not anything along \"This is how you make it work for your org\". Its catalog provides items for almost everything - yet what we wanted is to enable people to quickly introduce Continous delivery and standardized technology archetypes. We call this lean, empowered governance. So what does OpenDevStack now provide? A set of images to get the CI infrastructure running, called ods-core. It also contains ansible runbooks to get the atlassian suite going. A shared jenkins library that harmonizes the way you build, test, govern and deploy. A set of technology quickstarters that already provide the complete CI/CD integration, w/o anything to worry about for the engineer A small provision application that gives you one place to start, no matter if you want to start a new initiative, or enhance and existing one. Trigger project creation thru the provisioning application to get a new project. The web GUI of the provisioning app is located at https://prov-app-test.;. When openshiftproject == true, this will also create OpenShift projects, namely -dev and -test. A Jenkins deployment will be created in the -cd project to allow each project full freedom of build management. This deployment is based on common jenkins images from the CD namespace. Open the web GUI of the provisioning app https://prov-app-test.;. This time, rather than new initiative, pick modify and select your project. Pick a matching quickstarter. If no framework fits to your needs, choose the be-plain-docker quickstarter. Now you got the boilerplate of the picked quickstarter in your BitBucket project in its own repository, which the provisioning app created. Also, CI/CD is already working - you can verify this as the boilerplate application runs in the -test project. This was deployed through a Jenkins pipeline, which is triggered via webhooks from BitBucket. Create a branch in the newly created repository - once pushed this will deploy your application to the -dev project. After merging your branch to master, the update is avilable in the -test project. The branch-to-environment mapping is defined in the Jenkinsfile, used by the jenkins shared library, and can be tailored to your needs.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":2},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":3},{"text":"Using OpenDevStack","hash":"_using_opendevstack","id":4},{"text":"Create an integrated OpenDevStack project","hash":"_create_an_integrated_opendevstack_project","id":5},{"text":"Pull a quickstarter into your project","hash":"_pull_a_quickstarter_into_your_project","id":6},{"text":"Result after quickstarted","hash":"_result_after_quickstarted","id":7},{"text":"Checking in my app code","hash":"_checking_in_my_app_code","id":8}]},"6":{"id":6,"text":"OpenDevStack provides several customized Jenkins Docker Images based on the official OpenShift images. The idea is, that you do not need to configure anything on Jenkings before you can start using it. In ods-core/jenkins, you find the following directory structure: Table 1. Table Directories Directory Description master Dockerfile for Jenkins Master ocp-config OpenShift templates and Tailorfile slave-base Dockerfile and customization for Jenkins Slave Images webhook-proxy Dockerfile and source code for Bitbucket webhook proxy The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.12 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 Jira offers to deploy post-initialization scripts. Table 2. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins Location based on the OpenShift route sonarqube.groovy Sets the sonarserver url and auth token based on the configured secrets and config maps The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the sonarqube server. SONAR_AUTH_TOKEN this is the sonarqube auth token that is generated when deploying and configuring sonarqube We enable (in Dockerfile) the sending of mails to unknown users and users without read rights. We have a base image for different jenkins slaves. The concrete slave images are then configured as part of the quickstarters. The base image contains the following customizations Sonarqube Scanner Sonarqube CNES Report Plugin OWASP Dependency Checker Tailor Setting of Enterprise Proxy When the docker image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins slave works also on OpenShift clusters in enterprises that use a web proxy. Provides one endpoint accepting webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the branch name). If there is no corresponding pipeline yet, it will be created on the fly. Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted as well. Go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Enter Jenkins as Title and the route URL (see following Setup section) as URL. Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined. Save your changes and you’re done! Any other webhooks already setup to trigger Jenkins are not needed anymore and should be deactivated or deleted. Run tailor update in ocp-config. This will create BuildConfig and ImageStream in the central cd namespace. Next, you will have to create a DeploymentConfig, Service and Route in the namespace your Jenkins instance runs.","title":"Jenkins","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/jenkins/index.html","titles":[{"text":"Jenkins Master","hash":"_jenkins_master","id":1},{"text":"Configured Plugins","hash":"_configured_plugins","id":2},{"text":"Init groovy scripts","hash":"_init_groovy_scripts","id":3},{"text":"Mail Sending","hash":"_mail_sending","id":4},{"text":"Jenkins Slave","hash":"_jenkins_slave","id":5},{"text":"Webhook Proxy","hash":"_webhook_proxy","id":6},{"text":"Usage","hash":"_usage","id":7},{"text":"Setup","hash":"_setup","id":8}]},"7":{"id":7,"text":"The base jenkins slave used by all ODS builder slaves Creates trust relationship with applications in the openshift cluster (thru certificate management) Sonarqube scanner plugin binding to the central SQ instance Sonarqube report plugin used to download the scan results within the jenkins shared library's stage stageScanForSonarQube OWASP scan plugin Creates proxy awareness when HTTP_PROXY is injected during build pahse Tailor - on top of openshift CLI to provide infrastrucure as code Snyk - used to scan and monitor projects vulnerable third-party dependencies","title":"ODS Jenkins Slave base","component":"opendevstack","version":"1.x","name":"slave-base","url":"/opendevstack/1.x/jenkins/slave-base.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features / Plugins","hash":"_features_plugins","id":2}]},"8":{"id":8,"text":"Provides one endpoint accepting webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the branch name). If there is no corresponding pipeline yet, it will be created on the fly. Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted as well. Jenkinsfiles, within a project are created when provisioning quickstarters, thru the provision app. The quickstarter boilerplates contain the appropriate skeletons. One instance of the webhook proxy runs in every project-cd namespace next to the jenkins instance for this project. Go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Enter Jenkins as Title and the route URL (see following Setup section) as URL. Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined. Save your changes and you’re done! Any other webhooks already setup to trigger Jenkins are not needed anymore and should be deactivated or deleted. Run tailor update in ocp-config. This will create BuildConfig and ImageStream in the central cd namespace. Next, you will have to create a DeploymentConfig, Service and Route in the namespace your Jenkins instance runs. The following environment variables are read by the proxy: Variable Description PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be cleaned up. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the template and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the template and usually does not need to be modified. Moreover, one can pass the following query parameters to the proxy: | Variable | Description | | — | — | | jenkinsfile_path | The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. | See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"1.x","name":"webhook-proxy","url":"/opendevstack/1.x/jenkins/webhook-proxy.html","titles":[{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":1},{"text":"Setup the webhook proxy in a *-cd namespace","hash":"_setup_the_webhook_proxy_in_a_cd_namespace","id":2},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":3},{"text":"Development","hash":"_development","id":4}]},"9":{"id":9,"text":"","title":"Nexus","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/nexus/index.html","titles":[]},"10":{"id":10,"text":"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.","title":"Shared Images","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/shared-images/index.html","titles":[]},"11":{"id":11,"text":"Alpine Nginx OpenResty docker with Crowd HTTP Auth Lua module proxy enabled. The docker is based on ods-core/shared-images/openresty-nginx. See its README for further functionalities ready to be used or new to be implemented. Modsecurity is also ready to be used with default OWASP CRS rulesets, but disabled by default. To enable it you need to set on 'WAF_MODSECURITY' to on (off by default) environment variable and it will be applied in nginx.conf. For applying different custom configs you will need to load and replace with new modsecurity.conf and crs-setup.conf files. You can also enable dynamic configuration and new functionalities through Lua nginx scripting. See more in openresty-nginx README. SERVICE: the service to proxy to SERVER_SIGNATURE: the server name to be provided in the HTTP header WAF_MODSECURITY: off by default. Set to 'on' if WAF is required. See aforementioned Modsecurity topics in this readme file to understand implications of using it. CROWD_REALM_NAME: attribute required for all authentication schemes which issue a challenge CROWD_URL: the Crowd server service URL CROWD_SERVICE: the Crowd application name to connect to CROWD_PASSWORD: the Crowd application password to connect to","title":"Crowd HTTP Auth proxy","component":"opendevstack","version":"1.x","name":"nginx-authproxy-crowd","url":"/opendevstack/1.x/shared-images/nginx-authproxy-crowd.html","titles":[{"text":"Environment variables","hash":"_environment_variables","id":1}]},"12":{"id":12,"text":"Nginx based project with Lua enablement and WAF module integrated (default 'off'). Ready for scripting/developing API gateways. Modsecurity is also ready to be used with default OWASP CRS rulesets, but disabled by default. To enable it you need to set on 'WAF_MODSECURITY' to on (off by default) environment variable and it will be applied in nginx.conf. For applying different custom configs you will need to load and replace with new modsecurity.conf and crs-setup.conf files. You can also enable dynamic configuration and new functionalities through Lua nginx scripting. See more in openresty-nginx README. There is no usage of separate nginx virtual host file config since one needs to have the server statement inside the http statement in nginx.conf for loading environment variables in such statement. Therefore, 'server' statement config must go inside nginx.conf inside 'http' statement config. Modsecurity: Modsecurity module with the OWASP CSR default entries. Enable or disable (default is disabled) it by setting environment variable WAF_MODSECURITY (values: on, off). Components being used: ModSecurity library documentation Nginx ModSecurity connector documentation Crowd HTTP Auth: Crowd REALM Auth Lua module. Check shared-images/nginx-authproxy-crowd to how to use it. See lua/ folder for further examples ready to be used In order to upgrade to newer versions just change the related *_VERSION values in the base Dockerfile image. Current managed versions: RESTY_IMAGE_BASE=\"alpine\" RESTY_IMAGE_TAG=\"3.8\" NGINX_VERSION=\"1.13.6\" MODSECURITY_VERSION=\"3.0.0\" MODSECURITY_NGINX_VERSION=\"1.0.0\" OWASP_MODSECURITY_CRS_VERSION=\"3.0.2\" RESTY_VERSION=\"1.13.6.2\" RESTY_OPENSSL_VERSION=\"1.0.2p\" RESTY_PCRE_VERSION=\"8.42\" Security: nikto -h http:// Performance: siege --concurrent 100 --reps 10 http://","title":"Alpine Nginx OpenResty + Lua + ModSecurity WAF base image","component":"opendevstack","version":"1.x","name":"openresty-nginx","url":"/opendevstack/1.x/shared-images/openresty-nginx.html","titles":[{"text":"NGINX MODULES","hash":"_nginx_modules","id":1},{"text":"Lua MODULES","hash":"_lua_modules","id":2},{"text":"VERSIONING","hash":"_versioning","id":3},{"text":"Testing WAF security and Nginx performance","hash":"_testing_waf_security_and_nginx_performance","id":4}]},"13":{"id":13,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This repo contains the build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this readme describes how that setup is done. If you are looking for instructions how to analyse your repositories, please see USAGE.md. The OpenShift templates are located in ocp-config and can be compared with the OC cluster using tailor. For example, run cd ocp-config && tailor status to see if there is any drift between current and desired state. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OC project cd, under the sonarqube-app secrets. Push to this repository, then go to the build config in OC and start a new build. Admin password changed (see OC secrets sonarqube-app). Locked Sonarqube to logged-in users (Administation > Configuration > Security > Force User Authentication). Logged in as cd_user and created a auth token (My Account > Security > Generate New Token). As the auth token and the admin password has changed, you will need to update the OCP configuration again. Installed further plugins (Administation > Marketplace), e.g. SonarJava, SonarJS, Git.","title":"SonarQube","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/sonarqube/index.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Administration","hash":"_administration","id":2},{"text":"Building a new image","hash":"_building_a_new_image","id":3},{"text":"Manual steps performed after booting the instance","hash":"_manual_steps_performed_after_booting_the_instance","id":4}]},"14":{"id":14,"text":"This library allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: def final projectId = \"hugo\" def final componentId = \"be-node-express\" def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def sharedLibraryRepository def dockerRegistry node { sharedLibraryRepository = env.SHARED_LIBRARY_REPOSITORY dockerRegistry = env.DOCKER_REGISTRY } library identifier: 'ods-library@production', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: [ 'master': 'test', '*': 'dev' ] ) { context -> stage('Build') { // custom stage } stageScanForSonarqube(context) // using a provided stage } Following stages are provided (see folder vars for more details): stageScanForSonarqube(context) stageOWASPDependencyCheck(context) stageScanForSnyk(context, snykAuthenticationCode, buildFile, projectId) stageUploadToNexus(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the shared library according to your needs. There are just two settings to control everything: branchToEnvironmentMapping and autoCloneEnvironmentsFromSourceMapping. Example: branchToEnvironmentMapping: [ \"master\": \"prod\", \"develop\": \"dev\", \"hotfix/\": \"hotfix\", \"*\": \"review\" ] Maps a branch to an environment. There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OCP. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OCP. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. Caution! Cloning environments on-the-fly is an advanced feature and should only be used if you understand OCP well, as there are many moving parts and things can go wrong in multiple places. Example: autoCloneEnvironmentsFromSourceMapping: [ \"hotfix\": \"prod\", \"review\": \"dev\" ] Instead of deploying multiple branches to the same environment, individual environments can be created on-the-fly. For example, the mapping \"*\": \"review\" deploys all branches to the review environment. To have one environment per branch / ticket ID, you can add the review environment to autoCloneEnvironmentsFromSourceMapping, e.g. like this: \"review\": \"dev\". This will create individual environments (named e.g. review-123 or review-foobar), each cloned from the dev environment. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'rel': 'dev', 'hotfix': 'prod', 'preview': 'dev' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'preview': 'prod' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'uat': 'prod' ] Inside the closure passed to odsPipeline, you have full control. Write stages just like you would do in a normal Jenkinsfile. You have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsPipeline. Please see vars/odsPipeline.groovy for possible options. When you write stages, you have access to both global variables (defined without def in the Jenkinsfile) and the context object. It contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as \"153\". buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsPipeline starts. image Container image to use for the Jenkins agent container. This value is not used when \"podContainers\" is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use. By default, only one container is used, and it is configure automatically. If you need to run multiple containers (e.g. app and database), then you can configure the containers via this property. podVolumes Volumes to make available to the pod. podAlwaysPullImage Determine whether to always pull the container image before each build run. podServiceAccount Serviceaccount to use when running the pod. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. notifyNotGreen Whether to send notifications if the build is not successful. nexusHost Nexus host (with scheme). nexusUsername Nexus username. nexusPassword Nexus password. nexusHostWithBasicAuth Nexus host (with scheme), including username and password as BasicAuth. branchToEnvironmentMapping Define which branches are deployed to which environments. autoCloneEnvironmentsFromSourceMapping Define which environments are cloned from which source environments. cloneSourceEnv The environment which was chosen as the clone source. environment The environment which was chosen as the deployment target, e.g. \"dev\". targetProject Target project, based on the environment. E.g. \"foo-dev\". groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. \"foo\". componentId Component ID, e.g. \"be-auth-service\". gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message. gitCommitTime Git commit time in RFC 3399. sonarQubeBranch Branch on which to run SonarQube analysis. failOnSnykScanVulnerabilities Boolean flag (default true) that disables build failure in case Snyk Scan finds vulnerabilities dependencyCheckBranch Branch on which to run dependency checks. environmentLimit Number of environments to allow. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketHost BitBucket host - value taken from BITBUCKET_HOST. environmentCreated Whether an environment has been created during the build. openshiftBuildTimeout Timeout for the OpenShift build of the container image. ciSkip Whether the build should be skipped, based on the Git commit message. The slave used to build your code can be customized by specifying the image to use. Further, podAlwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To control the container pods completely, set podContainers (which is passed to the podTemplate call as containers). See the kubernetes-plugin documentation for possible configuration. Each Jenkinsfile references a Git revsison of this library, e.g. library identifier: 'ods-library@production'. The Git revsison can be a branch (e.g. production or 0.1.x), a tag (e.g.0.1.1) or a specific commit. By default, each Jenkinsfile in ods-project-quickstarters on the master branch references the production branch of this library. Quickstarters on a branch point to the corresponding branch of the shared library - for example a Jenkinsfile on branch 0.1.x points to 0.1.x of the shared library. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if BitBucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate Setup organisation in snyk.io If you don´t have an snyk account just create one at snyk.io Once you logged into snyk.io, in your snyk group create an organisation for your project with exactly same name as project name. Create a service account in settings for the created organisation and keep the displayed token. You will need it later. Add environment variable to jenkins in your cd project Add the environment variable SNYK_AUTHENTICATION_CODE in jenkins in your openshift cd project with service account token as value. Edit your project Jenkinsfile Read auth code from environment by adding: node { ... snykAuthenticationCode = env.SNYK_AUTHENTICATION_CODE } Add stageScanForSnyk: ) { context -> ... stageScanForSnyk(context, snykAuthenticationCode, 'build.gradle', context.projectId) ... } The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift. The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins. stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.' The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA. Try to write tests. See if you can split things up into classes. Keep in mind that you need to access e.g. sh via script.sh. The implementation is largely based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/jenkins-shared-library/index.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Provided Stages","hash":"_provided_stages","id":2},{"text":"Workflow","hash":"_workflow","id":3},{"text":"branchToEnvironmentMapping","hash":"_branchtoenvironmentmapping","id":4},{"text":"autoCloneEnvironmentsFromSourceMapping","hash":"_autocloneenvironmentsfromsourcemapping","id":5},{"text":"Examples","hash":"_examples","id":6},{"text":"Writing stages","hash":"_writing_stages","id":7},{"text":"Slave customization","hash":"_slave_customization","id":8},{"text":"Versioning","hash":"_versioning","id":9},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":10},{"text":"How to add Snyk scanning to your ODS project","hash":"_how_to_add_snyk_scanning_to_your_ods_project","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"Ods Pipeline","hash":"_ods_pipeline","id":13},{"text":"Stage Scan for Snyk","hash":"_stage_scan_for_snyk","id":14},{"text":"Stage Start OpenShift Build","hash":"_stage_start_openshift_build","id":15},{"text":"Stage Scan For SonarQube","hash":"_stage_scan_for_sonarqube","id":16},{"text":"Development","hash":"_development","id":17},{"text":"Background","hash":"_background","id":18}]},"15":{"id":15,"text":"The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift.","title":"","component":"opendevstack","version":"1.x","name":"odsPipeline","url":"/opendevstack/1.x/jenkins-shared-library/odsPipeline.html","titles":[]},"16":{"id":16,"text":"The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins.","title":"","component":"opendevstack","version":"1.x","name":"stageScanForSnyk","url":"/opendevstack/1.x/jenkins-shared-library/stageScanForSnyk.html","titles":[]},"17":{"id":17,"text":"The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA.","title":"","component":"opendevstack","version":"1.x","name":"stageScanForSonarQube","url":"/opendevstack/1.x/jenkins-shared-library/stageScanForSonarQube.html","titles":[]},"18":{"id":18,"text":"stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.'","title":"","component":"opendevstack","version":"1.x","name":"stageStartOpenshiftBuild","url":"/opendevstack/1.x/jenkins-shared-library/stageStartOpenshiftBuild.html","titles":[]},"19":{"id":19,"text":"Table of Contents How to develop locally Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 8 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js) The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API Rundeck API","title":"Internal architecture","component":"opendevstack","version":"1.x","name":"architecture","url":"/opendevstack/1.x/provisioning-app/architecture.html","titles":[{"text":"How to develop locally","hash":"_how_to_develop_locally","id":1},{"text":"Frontend Code","hash":"_frontend_code","id":2},{"text":"Backend Code","hash":"_backend_code","id":3},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":4},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":5},{"text":"Link collection","hash":"_link_collection","id":6}]},"20":{"id":20,"text":"Table of Contents Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Authentication to third party apps via technical users The Provisioning Application is configured via spring boot profiles. Default configuration properties are definded in application.properties There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. A default oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence, Bitbucket and Rundeck. The used credentials are read from a pair of properties. For Example, rundeck.admin_password and rundeck.admin_user properties are used for Rundeck, confluence.admin_user and confluence.admin_password are used for confluence, etc. application-oauth2.properties # configure technical user for rundeck. Do not authenticate via oauth2, since not implemented. rundeck.admin_password=rundeck_admin rundeck.admin_user=rundeck_admin # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall()","title":"Configuration Guide","component":"opendevstack","version":"1.x","name":"configuration","url":"/opendevstack/1.x/provisioning-app/configuration.html","titles":[{"text":"Authentication Configuration","hash":"_authentication_configuration","id":1},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":2},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":3},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":4}]},"21":{"id":21,"text":"Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Why are three Openshift projects created when I provision a new project? A: The project-name-dev & -test ones are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the jenkins-shared-library In contrast to this, the project-name-cd namespace hosts a project specific instance of the ODS Jenkins and also of the Webhook Proxy. When a built is triggered, builder pods (=deployments of Jenkins slaves) are created in this project. This was a cautious design choice to give a project team as much power as possible - when it comes to configuration of jenkins. What is RUNDECK used for? A: Rundeck is used as orchestration engine when the provision application triggers provision jobs (e.g. create new projects, create components). This architecture is subject to change likely in release 2.0, to dramatically reduce complexity in multi cluster scenarios. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project.","title":"FAQ:","component":"opendevstack","version":"1.x","name":"faq","url":"/opendevstack/1.x/provisioning-app/faq.html","titles":[]},"22":{"id":22,"text":"Table of Contents Basic idea & usage Integration with Bitbucket (webhooks) Permissions Project/Space types based on templates Using the provision application via API / thru direct REST calls What happens in error cases This application creates new OpenDevStack digital projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as jira, confluence, bitbucket and rundeck. An admin (user in a group defined in property idmanager.group.opendevstack-administrators) creates new ODS project. This in turn creates a Jira Project (name based on project key & name) a Confluence Space (name based on project’s key) the required Openshift projects named key-dev, key-test and key-cd - in case openshiftproject == true. Internally this is done thru a rest call to rundeck triggering the create-projects rundeck job a Bitbucket Project (name based on project key) - in case openshiftproject == true. Within this project two default repositories are created key-oc-config-artifacts for all yaml resources as well as key-design for any design artifacts (e.g. sketches) A normal user (user in a group defined in property idmanager.group.opendevstack-users) creates all resources required for a working component - this happens thru the user interface - in going to modify project / picking your project and then the wanted quickstarter. Internally this is done thru a rest call to rundeck - with the picked job as parameter - here Bitbucket repository within the chosen project named key-boilerplate name Openshift components based on the chosen boilerplate, coming from ods-quickstarters The involved people receive an email with the setup, URLs to components etc. - in case mail.enabled == true Next to the provision app creating the bitbucket repository for a chosen quickstarter - it also creates a webhook on that repo, which triggers on three events List events = new ArrayList(); events.add(\"repo:refs_changed\"); events.add(\"pr:merged\"); events.add(\"pr:declined\"); webhook.setEvents(events); This webhook calls the webhook proxy which in turn creates an openshift build config of type pipeline in the name-cd project and executes it. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with tight read & write roles Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, PROVISION_API_HOST= curl -D headers.txt -k -H \"Content-Type: application/x-www-form-urlencoded\" \\ -X POST ${PROVISION_API_HOST}/j_security_check \\ -d username= -d password= # grab the login status, and exit if error login_status=$(cat headers.txt | grep ${PROVISION_API_HOST}/login?error) if [[ $login_status != \"\" ]]; then echo \"Login Error\"; exit 1; fi; # grab the needed IDs and bake the cookies JSESSION_ID=$(cat headers.txt | grep \"Set-Cookie: JSESSION\" | cut -d ';' -f1 | cut -d \":\" -f2)\";\" CROWD_COOKIE=$(cat headers.txt | grep \"Set-Cookie: crowd\" | cut -d ';' -f1 | cut -d \":\" -f2) COOKIES=${JSESSION_ID}${CROWD_COOKIE} # sample provision file >> create.txt { \"name\" : \"\", \"key\" : \"\", \"createpermissionset\" : true, \"jiraconfluencespace\" : true, \"admin\" : \"\", \"adminGroup\" : \"\", \"userGroup\" : \"\", \"readonlyGroup\" : \"\", \"openshiftproject\" : false } provisionfile=create.txt # invoke the provision API to create a new project curl -k -X POST --cookie \"$COOKIES\" -d @\"$provisionfile\" \\ -H \"Content-Type: application/json; charset=utf-8\" -v ${PROVISION_API_HOST}/api/v2/project Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false.","title":"Overview: Provisioning Application","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/provisioning-app/index.html","titles":[{"text":"Basic idea & usage","hash":"_basic_idea_usage","id":1},{"text":"Integration with Bitbucket (webhooks)","hash":"_integration_with_bitbucket_webhooks","id":2},{"text":"Permissions","hash":"_permissions","id":3},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":4},{"text":"Using the provision application via API / thru direct REST calls","hash":"_using_the_provision_application_via_api_thru_direct_rest_calls","id":5},{"text":"What happens in error cases","hash":"_what_happens_in_error_cases","id":6}]},"23":{"id":23,"text":"(#86) introduces a new v2 API, as described above. This has impact to ALL consumers, the URI to use the project api also switches to v2 with v1 being removed.","title":"Upgrade notes","component":"opendevstack","version":"1.x","name":"upgrade_notes","url":"/opendevstack/1.x/provisioning-app/upgrade_notes.html","titles":[{"text":"1.1.x to next major release","hash":"_1_1_x_to_next_major_release","id":1}]},"24":{"id":24,"text":"This boilerplate provides an Airflow Cluster using Kubernetes Executor hosted in Openshift. The AirFlow Cluster setup that is provided is based on the KubernetesExecutor and will create and destroy worker pods on demand. It also setup an ElasticSearch instance as the log repository for all workers. As illustrated bellow: All Airflow images are based on shared-service/airflow image stream. All documentation can be found at https://github.com/opendevstack/ods-core/tree/master/shared-images/airflow To deploy the quickstarter the component name must be airflow-worker otherwise nothing will be created These are the OpenShift resources and the repository structure created by this boilerplace. Nothing will be created if any rersouces in the target OpenShift namespace can be found under the label cluster=airflow This boilerplate create several resources in OpenShift and ALL of them can be found using the label cluster=airflow. The created resources are: Service Account: airflow : Service account used as OAuth client for the Airflow web server Secrets: airflow-postgresql : Credentials for the PostgreSQL database airflow-elasticsearch : Credentials for the ElasticSearch airflow-fernetkey : Fernet key for securing stored Airflow Connection Config Maps: airflow-environemnt : Airflow configuration shared among all nodes Builds and Image Stream: airflow-worker : Worker image which Airflow uses for executing the tasks Deployment Configs and Services: airflow-webserver : Airflow Web Server airflow-scheduler : Airflow Scheduler (* Only Deployment Config) airflow-postgresql : Airflow matadata database airflow-elasticsearch: Worker log database airflow-kibana: Interface for exploring Airflow logs in ElasticSearch Routes: airflow-webserver : Exposes Airflow webserver . ├── docker │ ├── scripts │ │ └── setup.py # Script for installing python dependecies in dag_deps │ └── Dockerfile # Docker file pointing to Airflow shared image ├── src # Source folder │ ├── dag_deps # Folder containing all dependencies of the DAGs │ │ └── dag_deps_package # Example package │ │ ├── __init__.py │ │ └── crazy_python.py │ ├── dags # All DAGs should be in this folder │ │ ├── hello_dag.py # Example DAG using BASH Operator │ │ ├── hello_kubernetes_operator.py # Example DAG using Kubernetes Operator │ │ └── hello_python_dag.py # Example DAG using internal and external dependencies │ └── requirements.txt # File defining all dependencies (with an example inside) ├── tests # Test source folder │ ├── dag_deps # Folder containing tests of dependecies │ │ ├── __init__.py │ │ └── test_crazy_python.py # Test example │ └── dags # Folder containing tests of DAGs │ ├── __init__.py │ └── test_dag_integrity.py # DAG integrity test ├── Jenkinsfile ├── build.sh # Build script ├── sonar-project.properties ├── test_all.sh # Script for running all tests └── test_dag_integrity.sh # Script for running DAG integrity tests All examples files are simple examples and they are only needed for guiding the first development steps. They can be deleted! An Airflow cluster will be created in each environment. This allows the DAG development to follow the same branching strategy adopted in the whole project All commited code is submitted to a CI/CD pipeline defined in Jenkinsfile. This pipeline executes DAG integrity tests, which prevents invalid DAGs to be deployed. It also enables the development of all sort of tests needed for development. The last step of the Jenkins pipeline is to synchorized the recent commited DAGs with the Airflow web server and Airflow scheduler The configuration of all deployments is documented in https://github.com/opendevstack/ods-core/tree/master/shared-images/airflow","title":"AirFlow Openshift Cluster Boilerplate","component":"opendevstack","version":"1.x","name":"airflow","url":"/opendevstack/1.x/quickstarters/airflow.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Contents","hash":"_contents","id":2},{"text":"OpenShift Resources","hash":"_openshift_resources","id":3},{"text":"File structure provided in the repository","hash":"_file_structure_provided_in_the_repository","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Features","hash":"_features","id":6},{"text":"Multi Branching","hash":"_multi_branching","id":7},{"text":"CI/CD","hash":"_cicd","id":8},{"text":"DAG Distribution","hash":"_dag_distribution","id":9},{"text":"Configuration of Airflow","hash":"_configuration_of_airflow","id":10}]},"25":{"id":25,"text":"Use this quickstarter when you want to start from a plain dockerfile only - w/o a framework on top. A good usecase here is a dockerfile you found on github that you want to run with OpenDevStack features, or that you need to \"openshiftify\", by setting an execution user or alike. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration None, except the ODS jenkins shared library Amend the generated Dockerfile as needed. The shared library is used as is - whatever is in the /docker folder is passed to oc start build as docker context. In case you want to run testing, plug into stageUnitTest. def stageBuild(def context) { stage('Build') { // copy any other artifacts if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } def stageUnitTest(def context) { stage('Unit Test') { // if needed add your unit tests here } } none N/A","title":"Plain docker image (be-docker-plain)","component":"opendevstack","version":"1.x","name":"be-docker-plain","url":"/opendevstack/1.x/quickstarters/be-docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"26":{"id":26,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. This quickstarter uses Golang builder slave. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"1.x","name":"be-golang","url":"/opendevstack/1.x/quickstarters/be-golang.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"27":{"id":27,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 8 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). Under the hook this quickstarter runs the spring boot cli init command. The quickstarter uses the latest available spring boot cli version to generate the spring boot project. This is implemented in the script init.sh (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project will be generated and pushed to your git repository. The generated project requires java 8 and include the required gradle build and wrapper artifact. The generated spring boot project contains following folders: src (maven based java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,jersey,data-jpa,h2,lombok,data-rest,restdocs,security\"), which are defined in the script init.sh (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 8 or later version is required to run gradlew and compile java classes. The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. This quickstarter uses Maven builder slave Jenkins builder slave. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"1.x","name":"be-java-springboot","url":"/opendevstack/1.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":11},{"text":"Builder Slave used","hash":"_builder_slave_used","id":12},{"text":"Known limitations","hash":"_known_limitations","id":13}]},"28":{"id":28,"text":"This is a node (v6) quick starter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The files are generated using a yeoman generator for node-express-typescript. Generated files include a minimal express server with dummy routes. ├── Jenkinsfile - Contains Jenkins build configuration ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── greeter.ts │ ├── index.ts - Entrypoint, This runs first │ └── routes │ └── weather.ts ├── test │ ├── greeter-spec.ts │ └── index-spec.ts ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration 4 directories, 14 files Express (^4.15) Mocha & Chai for Unit Testing Typescript Do a npm install form the project root to install all the dependencies. npm run serve will transpile the code and start the server Execute npm run test for unit testing The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command will be executed to build the application and then the build (including the node_modules) will be copied to the docker/dist folder. Unit Testing : npm test -- --progress false & npm run coverage commands will be executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"1.x","name":"be-node-express","url":"/opendevstack/1.x/quickstarters/be-node-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"29":{"id":29,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter is simmple WEB-server written on Python using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── files │ ├── docker - This folder contains Docker configuration settings │ │ ├── Dockerfile │ │ └── run.sh - This bash script solves issue with permissions for a container user │ └── src │ ├── app.py - This file is the main entry point in the project. │ ├── requirements.txt - This file contains a list of required Python modules to run application │ ├── static │ │ ├── css │ │ │ └── main.css │ │ └── img │ │ └── bix.jpg │ ├── templates - Flask view teplates │ │ └── base.html │ ├── test_requirements.txt - This file contains a list of required Python modules to runt tests │ └── tests │ ├── __init__.py │ └── tests.py ├── init.sh └── sonar-project.properties - This file contains SonarQube configuration settings Flask Nose The project should be started automatically by OpenShift. Server should be started on the port 8080 in the debug mode. app.run('0.0.0.0', 8080, debug=True) To disable a debug mode set debug to False. To run application locally - specify the next command in a console: python app.py If you run application the first time, please install dependencies with the next command: pip install -r requirements.txt It is recommended when you work with a Python project use separated environment for every of your project. For this purpose usually iis used virtualenv package. # Command install virtualenv package (run only once) pip install virtualenv # Creates virtual environment 'venv' (will be located in the folder venv) (run only once) virtualenv venv # Initiate virtual environment for the project (every time) source venv/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application python app.py The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Test - Runs unit test cases by executing command: nosetests -v PEP 8 - Runs lint profiler by running command: pycodestyle --show-source --show-pep8 . && pycodestyle --statistics -qq . Build - Builds the application, copies output folder dist into docker/dist folder. This quickstarter uses Python builder slave Jenkins builder slave. NA","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"1.x","name":"be-python-flask","url":"/opendevstack/1.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"30":{"id":30,"text":"This is a Akka HTTP project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an Actor / Stream based HTTP integration layer for your application, based on scala. An example Akka HTTP Server implementation is generated with a little user registration protocol and according tests to showcase the server side routing DSL. . ├── build.sbt ├── project │ ├── build.properties │ └── plugins.sbt └── src ├── main │ └── scala │ └── com │ └── example │ ├── JsonSupport.scala │ ├── QuickstartServer.scala │ ├── UserRegistryActor.scala │ └── UserRoutes.scala └── test └── scala └── com └── example └── UserRoutesSpec.scala 10 directories, 8 files This project is generated by SBT using SBTs template generation via the new command. The template used is an older snapshot of the official Akka HTTP Quickstarter. For concrete versions of used dependencies have a look at the build.sbt file. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing or run for running the server locally. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - runs the tests and builds the application by running sbt test and sbt assembly This quickstarter uses the Scala Jenkins Slave. NA","title":"Backend Scala Akka HTTP Quickstarter (be-scala-akka)","component":"opendevstack","version":"1.x","name":"be-scala-akka","url":"/opendevstack/1.x/quickstarters/be-scala-akka.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"31":{"id":31,"text":"Provision a shared jupyter notebook within openshift for rapid prototyping of data science applications using crowd authentification +-- Jenkinsfile +-- docker | +-- Dockerfile | +-- jupyter_notebook_config.json | +-- requirements.txt | +-- run.sh +-- src +-- init.sh python 3.6 + jupyter The quickstarter sets up two pods in openshift. The jupyter notebook is routed through a crowd authentication proxy. The directory /app/src/work/storage is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Patch the build configs and inject nexus credentials for installing python dependencies over nexus pypi repository Start openshift build Deploy image to openshift jenkins-slave-base Consider if sufficient computing resources can be provided by the openshift cluster.","title":"Data Science Jupyter Notebook","component":"opendevstack","version":"1.x","name":"ds-jupyter-notebook","url":"/opendevstack/1.x/quickstarters/ds-jupyter-notebook.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"32":{"id":32,"text":"This boilerplate enables data scientists to develop, serve, version models within a CI/CD pipeline hosted on OpenShift with the goal in mind that one does not have to take care/change much of the needed pipeline and infrastructure. For pull requests and discussion regarding direction, please pull in @hugowschneider, @sklingel and @gerardcl The boilerplate provides a two pod setup in OpenShift, one pod for training service and one pod for prediction service. From one Dockerfile, under docker folder, both training and prediction services are built. If required, one can edit it in order to provide different dependency management workflows for each service. The training service provides a pod that is able to reproduce/retrain the model that is developed in the current commit either locally on OpenShift or execute the training on a remote linux system using ssh. The training process is wrapped into a flask server to be able to monitor and possible restart the training process. Moreover, the training service offers an endpoint for downloading the created model afterwards. Additionally, unittests and integration tests are executed on the training pod, in order to not depend on operating dependencies in the jenkins slave. The prediction service provides a simple flask service for getting new predictions out of your model by making json posts to the prediction REST endpoint. The prediction service is already built with the newly trained model from the training pod. The Jenkinsfile organizes the correct succession of spinning up the training, executing it and starting the new deployment of the prediction service. Additionally, it triggers unittest ensuring the code is functionally before a new training process is started. Moreover, integration tests are run against the reproduced model wrapped into the prediction REST endpoint to ensure that the reproduced model (performance) behaves as expected also when wrapped in the flask service. External files that are needed either for building your model or docker images are stored under resources. For demonstration purposes a training and test csv file is stored in resources. This approach has to be reevaluated for each new use case, considering data size and confidentiality. The src folder contains the infrastructure coded needed for providing the services in OpenShift in src/services. Custom code for developing your prediction service is organized in the src/model package. In the (common) src/requirements.txt you can specify python dependencies for training, prediction and tests. To keep it simple, there is only one requirements.txt for both pods. The test directory mirrors the structure of the src, either for unittests or integration tests using the python unittest framework. To run your own customized models there is usually no need to change either the Jenkinsfile, OpenShift setup or the training and prediction microservices. Custom model code will go under src/model and can be organized in custom packages like showcased with the src/model/data_cleaning and src/model/feature_prep. In general, it can be organized as the users prefers. There are no further restrictions for developing the in the style you want, for the exception to provide the mandatory functions and attributes in src/model/model_wrapper.py for the `ModelWrapper class: prep_and_train: is called by the train script (which one can customize) and expects a pandas dataframe (current implementation). The train script is called by the training service prep_and_predict: is called by the predict endpoint service from the prediction service. It consumes the json post as a dictionary. The predict endpoint executes prep_and_predict. Good practice: source_features, specifying the name that are used a input for the model. This features include really the source columns from which also more complicated features are derived within the model boundaries Good practice: target_variable, name of the variable that should be used as target for a possible supervised approach. As well as the train function in the src/trainer.py. It specifies how the model should be trained. Make sure your specified all dependencies in the requirements.txt. It is recommended to develop your code against the python interpreter & dependencies specified in the docker images. This can be easily achieved, either by using an IDE that supports that (e.g. PyCharm) or by doing manually in the docker container. In order to ensure complete reproducibility, in case train and/or test data can’t be committed to a git repository due to size or confidentiality/data privacy considerations, data versioning can be achieved using the built in dvc data version capabilities.` Moreover, technical user account is needed so that the CI/CD pipeline is able to pull the data dependencies from the remote data versioning repository. Do the following steps in order to make use of the data versioning capabilities Initialize the quickstarter repository as a dvc repository: dvc init Setup the a remote repository on a remote ssh machine, e.g. Data Lake dvc remote add ssh://:/ Configure authentification. For local development you can set your own user account, assuming it has access to or use a technical user account. dvc remote modify user and set the prompt for password, so that you don’t commit your password to the repository dvc remote modify ask_password True Start adding files that should be tracked by data versioning dvc add this will create a new file with meta information about called .dvc. This meta file needs to be tracked with git, so that it is ensured that each git commit is linked with a specific data version git add .gitignore .dvc Modify your train() and potentially the integration tests to pull the data dependencies from the remote repository. A helper class is provided in src/services/remote/dvc/data_sync.py that can be used as follows: from services.infrastructure.remote.dvc.data_sync import DataSync syncer = DataSync(dvc_data_repo, dvc_ssh_user, dvc_ssh_password) syncer.pull_data_dependency(file_name) Commit your code and push the data versioned files to the remote repository git commit dvc push -r git push In order for a successful Jenkins build, the following environment variables need to be set in the training pod deployment: DSI_DVC_REMOTE, DSI_SSH_USERNAME, `DSI_SSH_PASSWORD An example implementation of a custom model is given in src/model, to demonstrate how to organize custom code. A Logistic Regression using scikit-learn with some (unnecessary) feature cleaning and engineering is trained on the iris data flower set. Iris flower data set. (n.d.). In Wikipedia. Retrieved January 7, 2019, from https://en .wikipedia.org/wiki/Iris_flower_data_set Training Build Config name: -training-service variables: None Deployment Config name: -training-service variables: DSI_EXECUTE_ON: LOCAL DSI_TRAINING_SERVICE_USERNAME: auto generated username DSI_TRAINING_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Prediction Build Config name: -prediction-service variables: None Deployment Config name: -prediction-service variables: DSI_TRAINING_BASE_URL: http://-training-service..svc:8080 DSI_TRAINING_SERVICE_USERNAME: username of the training service DSI_TRAINING_SERVICE_PASSWORD: password of the training service DSI_PREDICTION_SERVICE_USERNAME: auto generated username DSI_PREDICTION_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Remote training allows you to run your training outside of the OpenShift training pod on a linux node using a ssh connection. A conda environment is installed in the remote node and the requirements specified in src/requirements.txt are installed. Once this step is finished the training is executed on that node and the trained model is transferred back to the training pod. To enable remote training set the DSI_EXECUTE_ON variable in OpenShift to SSH and specify the connection information in the environment variables: DSI_SSH_HOST, DSI_SSH_PORT, DSI_SSH_USERNAME and DSI_SSH_PASSWORD. / : Return all information about the training service /start : Starts the training. /finished : Checks if the current traning task is finished /getmodel : Download the latest trained model /predict : Return all information about the training service payload: Should be a json containing the data necessary for prediciton. The payload is not pre defined, but it is defined by the trainined model There is not need for any kind of payload in all endpoints. Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_EXECUTE_ON Where the train should be executed LOCAL, SSH DSI_TRAINING_SERVICE_USERNAME Username to be set as default username for accessing the services string, required DSI_TRAINING_SERVICE_PASSWORD Password to be set as default password for accessing the services string, required Following variables are applicable if DSI_EXECUTE_ON=SSH DSI_SSH_HOST SSH host name where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) host names or ip addresses DSI_SSH_PORT SSH host port where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) port numbers (Default: 22) DSI_SSH_USERNAME SSH username for remote execution string\\ DSI_SSH_PASSWORD SSH password for remote execution string DSI_SSH_HTTP_PROXY HTTP proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_SSH_HTTPS_PROXY HTTPS proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_DVC_REMOTE Name of the dvc remote repository that has been initialized with dvc string Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_TRAINING_BASE_URL The base url where the prediction service should get the model from url (e.g. https://training.OpenShift.svc DSI_TRAINING_SERVICE_USERNAME Username of the training service string, required DSI_TRAINING_SERVICE_PASSWORD Password of the training service string, required DSI_PREDICTION_SERVICE_USERNAME Username to be set as default username for accessing the service string, required DSI_PREDICTION_SERVICE_PASSWORD Password to be set as default password for accessing the service string, required The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Prepare build Sonarqube checks Build training image Deploy training pod Unittests Execute/reproduce training either on openshift pod or in ssh remote machine Integration test against the newly trained model wrapped in the flask /prediction endpoint Build prediction image Deploy prediction service jenkins-slave-python Python 3.6 Python Flask 1.0.2 Not ready for R models yet In the case of building the docker image from behind a proxy and encountering certificate issues, adding a -k to the curl command can mitigate that, consider however the implications of disabling certificate Consider moving to ssh remote server training, if you expect high and long computational load during training phase. It might cause unnecessary stress on the openshift cluster, otherwise.","title":"Data Science Industrialization Boilerplate","component":"opendevstack","version":"1.x","name":"ds-ml-service","url":"/opendevstack/1.x/quickstarters/ds-ml-service.html","titles":[{"text":"Basic Setup","hash":"_basic_setup","id":1},{"text":"Container services","hash":"_container_services","id":2},{"text":"Jenkins","hash":"_jenkins","id":3},{"text":"External Files","hash":"_external_files","id":4},{"text":"src - the heart of your service","hash":"_src_the_heart_of_your_service","id":5},{"text":"test","hash":"_test","id":6},{"text":"How to Code Your Own Models","hash":"_how_to_code_your_own_models","id":7},{"text":"How to Develop your Model Locally","hash":"_how_to_develop_your_model_locally","id":8},{"text":"Data Versioning","hash":"_data_versioning","id":9},{"text":"Example & Example Dataset","hash":"_example_example_dataset","id":10},{"text":"Structure of the quick starter","hash":"_structure_of_the_quick_starter","id":11},{"text":"Remote Training","hash":"_remote_training","id":12},{"text":"Endoints","hash":"_endoints","id":13},{"text":"Training Endpoint","hash":"_training_endpoint","id":14},{"text":"Prediction Endpoint","hash":"_prediction_endpoint","id":15},{"text":"Environment Variables for training","hash":"_environment_variables_for_training","id":16},{"text":"Environment Variables for prediction","hash":"_environment_variables_for_prediction","id":17},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":18},{"text":"Builder slave used","hash":"_builder_slave_used","id":19},{"text":"Frameworks used","hash":"_frameworks_used","id":20},{"text":"Known limitions","hash":"_known_limitions","id":21}]},"33":{"id":33,"text":"Provisions a Rshiny application within openshift using crowd authentification. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md - This readme file ├── docker - This folder contains Docker configuration settings and main R shiny app ├── Dockerfile └── app.R R/https://shiny.rstudio.com/tutorial/[Rshiny] The quickstarter sets up two pods in openshift. The rshiny application is routed through a crowd authentication proxy. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start openshift build Deploy image to openshift jenkins-slave-base N/A","title":"Data Science Rshiny Application","component":"opendevstack","version":"1.x","name":"ds-rshiny-app","url":"/opendevstack/1.x/quickstarters/ds-rshiny-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"34":{"id":34,"text":"cypress e2e testing quickstarter project This is a cypress e2e testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile ├── README.md ├── files │ ├── README.md │ ├── build │ │ ├── integration │ │ │ └── main.spec.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── cypress.json │ ├── fixtures │ │ └── example.json │ ├── integration │ │ └── main.spec.ts │ ├── package.json │ ├── plugins │ │ └── index.js │ ├── support │ │ ├── commands.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tslint.json └── init.sh 9 directories, 16 files This project is generated by Angular CLI cypress TypeScript Run command npm install in project directory to install npm packages Run npm run e2e to execute the end-to-end tests via cypress against the test instance of the front end Run npm run watch to develop the e2e test. The tests will automatically rebuild and run, if you change any of the source files. The test will run against a local instance of the front end, e.g. localhost:4200. This destination is configurable in cypress.json. Provide credentials for a test user by defining them in a file called secrets.json inside the base directory. This file should have the following format: { \"e2e\": { \"testUserName\": \"User Name\", \"testUserPassword\": \"xxxx\" } } Please note: secrets.json is mentioned in .gitignore to prevent it from being added to version control. Please keep it this way. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there is the following stage: stageTest - Lint the TypeScript code by running npm install and npm run lint, and transpiles it to JavaScript and run the tests with the npm run build command. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. For now the URL of the front end instance to test is hard-coded inside the package.json file. There should be a better solution for handing this over. It is also possible to run npm run e2e-at with an additional parameter, e.g. npm run e2e-at https://domain.com.","title":"End-to-end tests with cypress (e2e-cypress)","component":"opendevstack","version":"1.x","name":"e2e-cypress","url":"/opendevstack/1.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"35":{"id":35,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json 7 directories, 31 files This project is generated by Angular CLI Angular CLI Angular Typescript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running yarn install, yarn build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command yarn test. stageLint - Runs ng lint profiler by running command yarn lint. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"1.x","name":"fe-angular","url":"/opendevstack/1.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"36":{"id":36,"text":"Ionic quickstarter project This quickstarter generates an Ionic 3 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/Typescript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. It scaffolds a tabbed app containing 3 basic pages (home, about and contact). . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── config - This folder contains Webpack and sass configuration settings ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── resources - This folder contains resources by platform ios, android ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.ts │ │ ├── app.html │ │ ├── app.module.ts │ │ ├── app.scss │ │ └── main.ts │ ├── assets │ ├── environments │ │ ├── environment.dev.ts | | |__ environment.e2e.ts │ │ └── environment.ts │ ├── pages │ ├── providers │ ├── theme │ ├── index.html │ ├── manifest.json │ ├── polyfills.ts │ ├── service-worker.js │ ├── test.ts │ └── tsconfig.spec.json ├── www ├── .angular-cli.json - This file contains Angular project configuration settings ├── config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── .ionic.config.json - This file contains Ionic project configuration ├── karma.conf.js ├── protractor.conf.js ├── tsconfig.json └── tslint.json Ionic CLI Ionic Framework Angular Typescript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g ionic Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with yarn install, generates the build by running npm run ionic:build, if the merged git branch is master it creates the production build with npm run ionic:build --prod. Finally, it copies the output folder www into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"1.x","name":"fe-ionic","url":"/opendevstack/1.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known Limitation","hash":"_known_limitation","id":7}]},"37":{"id":37,"text":"React quickstarter project This quickstarter generates a React project for developing webpages. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── LICENSE ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── public │ ├── favicon.ico │ ├── index.html │ └── manifest.json └── src ├── App.js ├── App.test.js ├── Router.js ├── common │ └── components │ └── PageNotFound.js ├── history.js ├── home │ ├── components │ │ └── Repo.js │ ├── containers │ │ └── UserRepos.js │ ├── epics │ │ ├── fetchUserRepos.js │ │ └── index.js │ ├── index.js │ └── reducers │ ├── applyUserRepos.duck.js │ └── index.js ├── index.js ├── registerServiceWorker.js ├── rootEpic.js ├── rootReducer.js ├── store.js └── theme.js 10 directories, 28 files React js - ^16.4.0 Redux js - ^4.0.0-rc.1 material-ui As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run npm run start command to start the dev server, it will open your browser at http://localhost:8080/ The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with npm install, generates the build by running yarn build. Finally, it copies the output folder build into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave.","title":"Frontend react.js (fe-react)","component":"opendevstack","version":"1.x","name":"fe-react","url":"/opendevstack/1.x/quickstarters/fe-react.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6}]},"38":{"id":38,"text":"Vue quickstarter project For pull requests and discussion regarding direction, please pull in @akhilsoman, @m-apsolon This quickstarter booststrap a Vue.js application with TypeScript support. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The boilerplate files are generated using the Vue CLI 3.4.0 Class based component defintion is follwed for this application with TypeScript Support. The generated file structure as follows, . ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── babel.config.js ├── cypress.json ├── docker - Contains Dockerfile for the build │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package-lock.json - Default package version lock. Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── public - Static assets for the project │ ├── favicon.ico │ ├── img │ │ └── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── sonar-project.properties ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue - Vue components are added here │ ├── main.ts - Entrypoint, This runs first │ ├── registerServiceWorker.ts │ ├── router.ts - Router configurations │ ├── shims-tsx.d.ts - The file helps your IDE to understand .tsx │ ├── shims-vue.d.ts The file helps your IDE to understand what a file ending in .vue is │ └── views │ ├── About.vue │ └── Home.vue ├── tests - Unit Test as well as ene to end test files │ ├── e2e │ │ ├── plugins │ │ │ └── index.js │ │ ├── specs │ │ │ └── test.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ └── unit │ └── example.spec.ts ├── .gitignore └── tsconfig.json - TypeScript Configuration file 14 directories, 44 files Vue (2.6,6) Mocha & Chai for Unit Testing Typescript Install the dependencies npm install Compiles and hot-reloads for development npm run serve Run your tests npm run build The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running npm run install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. stageLint - Runs vue-cli-service lint profiler by running command npm run lint. This quickstarter uses Nodejs8-Angular builder slave Jenkins builder slave. The quickstarter is generated by copying the files genreated by Vue CLI. Once the CLI start supported template genration with out dependency installation (similar to --skip-insatll in Angular CLI) this can be modfied to CLI based generation.","title":"Frontend Vue (fe-vue)","component":"opendevstack","version":"1.x","name":"fe-vue","url":"/opendevstack/1.x/quickstarters/fe-vue.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"39":{"id":39,"text":"Table of Contents Overview Backend Quickstarter Frontend Quickstarter Data Science Quickstarter Other Quickstarter Usage Changing existing quickstarters Contributing new quickstarters Upgrade an existing Git repository to OpenDevStack This repository contains quickstarters, which are basically templates that help to start out with a component quickly. The available quickstarters are: Backend - Docker/Plain Backend - Golang Backend - SpringBoot/Java Backend - NodeJS/Express Backend - Python/Flask Backend - Scala/Akka Frontend - Angular Mobile - Ionic Frontend - React Frontend - Vue Data Science - Machine Learning Data Science - Jupyter Notebook Data Science - R-Shiny Airflow E2E test - Cypress Next to those, there is a \"blank\" quickstarter allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences described in the following sections. All quickstarters are used by the Provisioning App to create a new component which basically consists of resources in OpenShift (typically BuildConfig, ImageStream, DeploymentConfig and Service) and a BitBucket repository. This repository in BitBucket will contain: Some boilerplate code A Jenkinsfile describing how to build the component, delegating most of the work to the shared library A sonar-project.properties file configuring how the source code is analyzed by SonarQube Next to those, each quickstarter can also provide its own Jenkins slave images. The quickstarters are not used directly, but triggered via the provisioning app. Login there to pick a quickstarter, give it a name and provision it. The provisioning app delegates the executation to a job in Rundeck (defined in YML files in the rundeck folder), which then clones this repository and executes the files (e.g. init.sh) within. As the quickstarters are triggered via Rundeck, the changes need to be on the production branch in order to be \"live\". As an alternative, you can copy the job in Rundeck and point it to the branch you are working on. To test out things locally, you can mimick what Rundeck. The general procedure is: Clone the repository Go into a quickstarter folder, e.g. be-node-express Run build.sh (if it exists) Run init.sh Run renderJenkinsTemplate.sh from the root of the repository Run renderSonarqubeTemplate.sh from the root of the repository Note that those scripts might need parameters to work, and often need to be adjusted slightly to work (e.g. removing chowning to rundeck user). If you contribute a new quickstarter / boilerplate - please use the provided README.adoc templates for a jenkins-slave - the slave template for a boilerplace- the boilerplate Push your repository into the newly created bitbucket project (and note the name of the repo & project) Logon to rundeck and pick the common/prepare-continuous-integration rundeck job Pick the technology target thru component type - this will ensure you get the right jenkins file based on the technology you pick - and should fit the technology you have built your application with Provide quickstarter_directory - this can be any filesystem directory - usually in /tmp/ where the git repository will be cloned to Provide project_id - this is the project name you noted in step (0) Provide component_id- this is the name of the component (from step 0) that will be rendered into the jenkins template, and also used as name for the openshift resources Provide git_url_http/ssh - this is the URL to clone and commit to for the job.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"1.x","name":"index","url":"/opendevstack/1.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":2},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":3},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":4},{"text":"Other Quickstarter","hash":"_other_quickstarter","id":5},{"text":"Usage","hash":"_usage","id":6},{"text":"Changing existing quickstarters","hash":"_changing_existing_quickstarters","id":7},{"text":"Contributing new quickstarters","hash":"_contributing_new_quickstarters","id":8},{"text":"Upgrade an existing Git repository to OpenDevStack","hash":"_upgrade_an_existing_git_repository_to_opendevstack","id":9}]},"40":{"id":40,"text":"The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app (including Rundeck. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools and Rundeck. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables.","title":"Infrastructure Setup","component":"opendevstack","version":"2.x","name":"infrastructure-setup","url":"/opendevstack/2.x/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1}]},"41":{"id":41,"text":"Welcome to the OpenDevStack. The OpenDevStack is a framework to help in setting up a project infrastructure and continuous delivery processes on OpenShift and Atlassian toolstack with one click. This guide shall help you to setup the OpenDevStack, so you can work with it and test it in a local environment setup. The steps for the setup can also be adapted for running the OpenDevstack with an existing OpenShift installation or to connect it with your Atlassian tools, if you use Atlassian Crowd as SSO provider. Important: The credentials provided in the guide are only meant to be used within the local test installation. For use in production you will have to customize paths, URLs and credentials! The following requirements have to be met to setup a local environment. You should have a computer with at least 32 GB of RAM, because we are going to install several Atlassian tools and a local OpenShift environment. Important: We assume, you will have a full functional internet connection We use Git as code repository, so you have to be familiar to work with Git. The OpenDevStack uses Vagrant to provide a sample infrastructure for the Atlassian tools, Rundeck and a so called Ansible controller, a VM, where you can run Ansible scripts against the Atlassian VM. It is recommended to use the latest Vagrant version available from the HashiCorp Vagrant page. Vagrant uses Virtualbox for running the provisioned VMs. Therefore you must have Virtualbox installed. To use the Atlassian tools you need a license to run them. For testing and evaluation Atlassian provides evalutation licenses, which you can get on the My Atlassian license page. Here you have to keep in mind, that you have to register, if you don’t have an Atlassian account. The registration is for free. You need licenses for the following products: Bitbucket Jira Confluence Crowd The evaluation licenses are valid for 30 days from the date of purchase. If you need a server id, this will be provided by the tools within the installation, so you are able to inlcude the licenses within theinstallation wizards of the tools, after the base setup provided by the Ansible scripts. The base setup uses the following versions: Software Version Bitbucket 5.16.3 Jira 7.13.3 Confluence 6.14.3 Crowd 3.4.4 You must have the possibility to run bash scripts to install the OpenDevStack. On Linux systems you can use these scripts out-of-the box, on Windows systems you will have to install either a bash port for Windows like Cygwin. For Windows, our recommendation is to use Cygwin for configuration. Make sure to select the curl package under the \"net\" category when installing cygwin. The OpenDevStack uses Ansible to install and configure the necessary software for the enabling stack, so it’s recommended to get familiar with its core concepts and usage. Credentials are stored within an Ansible vault, so even if you commit them in a public repository they are not available unless you know the vault password. Nevertheless, it is recommended to take care with handling credentials, even if they are encrypted. From now on we assume, you work from a Bash (Cygwin / Linux). We use tailor to handle our versioned OpenShift templates and keep our cluster in sync. Please see its installation instructions for your platform. The following lists the version requirements: OpenDevStack version Tailor version 0.1.x = 0.8 1.0.x >= 0.9.1 1.1.x >= 0.9.3 First create a base directory for the OpenDevStack repositories, e.g. ods. This will be your base directory for all following operations. This path will also be mounted to the VMs provisioned by Vagrant. Then you have to clone the ods-core repository into the created directory. git clone https://github.com/opendevstack/ods-core.git Navigate to the folder ods ods-core infrastructure-setup. There you will find the setup and configuration shell scripts. You can start the infrastructure provisioning and setup by using ./setup-local-environment.sh This script allows you to set the necessary installation pathes, clones the necessary OpenDevStack repositories and prepares the vagrant infrastructure, including the base installation of the Atlassian tools, Rundeck and datatbase preparing. For a local test environment it is recommended to keep the default values. During script execution you will have the possibility to choose, if you want to confirm the Atlassian and Rundeck installation for every tool or to run a complete setup. After the base installation, you will have to configure the Atlassian tools, before you are able to proceed. The following steps explain the Atlassian tools configuration i the local test environment. If you have already installed the Atlassian tools, you can skip the Configuration Wizard chapter for the respective tool Access http://192.168.56.31:8095/crowd/console Be patient. First time accessing this page will take some time. Here you can see the server id you need for the license you can get from the My Atlassian page. Use the link to get an evaluation license (Crowd Server) or enter a valid license key into the textbox. Here choose the New installation option. The next step is the database configuration. Choose the JDBC Connection option and configure the database with the following settings Option Value Database PostgreSQL Driver class name org.postgresql.Driver JDBC URL jdbc:postgresql://localhost:5432/crowd?reWriteBatchedInserts=true&prepareThreshold=0 Username crowd Password crowd Hibernate dialect org.hibernate.dialect.PostgreSQLDialect Choose a deployment title, e.g. OpenDevStack and set the Base URL to http://192.168.56.31:8095/crowd Enter the name for the internal crowd directory, e.g. OpenDevStack Enter the data for the default administrator, so you are able to login to crowd. For the test installation, we will choose the username opendevstack.admin with the password admin. Enable the OpenID Server. Now you can verify the installation and log in with the credentials defined in the previous step. You will have to configure crowd to enable the Atlassian tools and Rundeck to login with crowd credentials. The following paragraphs assume, that you are logged in to the Crowd console. You will have to change the default session configuration. Open the Administration menu and choose the Session configuration entry. Uncheck the Require consistent client IP address checkbox. Click save and login again. You will have to add additional groups Crowd’s internal directory. The groups are listed in the table below. Group Description opendevstack-users Group for normal users without adminstration rights opendevstack-administrators Group for administration users To add a group, open the Groups tab and choose Add group Enter the name and the description for the group, choose the OpenDevStack directory and click Create. The group has been created. Repeat the steps of group creation for all necessary groups. After creating the groups you have to create a user, that is used by continuous integration mechanisms of the OpenDevStack. Go to the Users section in Crowd and click Add user. Enter the details for the CD user and click Create. For the provided scripts we assume, that the username cd_user with the password cd_user is used. In the following overview choose the user’s group tab and click Add groups Now search for all groups by leaving the Search fields empty, check the opendevstack-users group and click Add selected groups. The group has been added to the user. Now you have to add all groups to the administrator. Go to the Users section in Crowd, choose your administration user and open the Groups tab. Click Add groups, search for all by leaving the Search fields empty and add all groups. You will have to add the applications you want to access with your Crowd credentials in the Crowd console. Access the Crowd console at http://192.168.56.31:8095/crowd/console/ The following example shows, how to add Jira to the application section. The steps for the other applications are equal. Choose the Applications menu point and click Add application You enter the Add application-Wizard. Enter your application details and proceed with Next. Enter the URL and Remote IP address and click Next. Check the OpenDevStack user directory checkbox. Then proceed with Next. Check the Allow all users to authenticate checkbox. Click Next. Confirm the application information by clicking Add application In the following overview choose the Remote addresses tab. Now enter the CIDR 0.0.0.0/0 in the input field and click Add. You will have to add all applications listed in the table below. The provided data is meant to be used in the local test environment. Application type Name Password URL IP address Directories Authorisation Additional Remote Adresses Jira jira jira http://192.168.56.31:8080 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Confluence confluence confluence http://192.168.56.31:8090 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Bitbucket Server bitbucket bitbucket http://192.168.56.31:7990 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application rundeck rundeck http://192.168.56.31:4440 192.168.56.31 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application provision provision http://192.168.56.1:8088 192.168.56.1 Internal directory with OpenDevStack groups all users 0.0.0.0/0 Generic application sonarqube sonarqube https://sonarqube-cd.192.168.56.101.nip.io 192.168.56.101 Internal directory with OpenDevStack groups all users 0.0.0.0/0 After adding all applications they should shown at the applications overview in Crowd. Access http://192.168.56.31:7990 Be patient. First time accessing this page takes some time. On the configuration page you have the possibility to define the application name, the base URL and to get an evaluation license or enter a valid license. If you choose to get an evaluation license you can retrieve it from the my atlassian page. You will be redirected automatically. After adding the license you have to create a local Bitbucket administrator account. Don’t integrate Bitbucket with Jira, but proceed with going to Bitbucket. Go to the Bitbucket start page at http://192.168.56.31:7990/ Open the administration settings and navigate to the User directories menu. Here you have to add a directory of type Atlassian Crowd. In the following form add the Crowd server URL http://192.168.56.31:8095/crowd, the application name and the password you have defined for Bitbucket in crowd. For the local test environment this is bitbucket bitbucket Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Bitbucket. Now you have to configure the permissions for the OpenDevStack groups. Go to the Global permissions menu. In the Group access section add the opendevstack-administrators group with System Admin rights. Add the opendevstack-users group with Project Creator rights. The local checked out OpenDevStack repositories will be mirrored into the Bitbucket instance. Therefore, we need to create a new project within Bitbucket. Go to the Projects page in Bitbucket and click the Create project button. Now enter the Project name: OpenDevStack with the Project key OPENDEVSTACK and hit Create Project. Now open the project settings. In the Project permissions section, allow the opendevstack-users group write access. After you have adjusted the project permissions, you will have to create the repositories for the OpenDevStack. Go to the OpenDevStack project overview and choose the Create repository option, either with the '+' sign on the left menu bar or with the Create repository button in the middle of the screen, if you have an empty project. Enter the name for the repository and click Create repository. You will have to create the repositories listed in the table below. Repositories ods-core ods-configuration ods-jenkins-shared-library ods-quickstarters ods-provisioning-app You will have to add a SSH key to the cd_user in Bitbucket, so Rundeck will be able to communicate with Bitbucket. First got to the Users section in the Bitbucket administration. Choose the cd_user and select the SSH keys tab. Click Add key The key has been auto generated during the setup script execution. Navigate to the base directory you created at the beginning of the setup process. There you will find a file named id_rsa_bitbucket.pub Copy the content of the file Paste the key to the input field in Bitbucket and click Add key Access http://192.168.56.31:8080 Be patient. First time accessing this page takes time. Here you have to choose the application title and the base URL. You can leave the data as is for the test environment. Here you have to enter the license key for the Jira instance (Jira Software (Server)). With the provided link in the dialogue you are able to generate an evaluation license at Atlassian. Now you have to set up a Jira administrator account. Unless you have configured a mail server, leave this for later. To finish this part of the Jira installation, you will have to provide some informations to your prefered language, your avatar and you will have to create an empty or a sample project. After these basic configurations, you have access to the Jira board. Open the User management in the Jira administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Jira in crowd. For the local test environment this is jira jira. Now activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position. Synchronize the directory, so all groups and users are available in Jira. The next step is to configure the permissions for the OpenDevStack user groups. Go to the Global Permissions menu beneath the System tab. There you will have to add the OpenDevStack groups according to the Jira user groups. For this choose the permission and the user group in the Add Permission section of the page and click Add. See the table below for the permission mapping. Permission User group Jira System Administrators opendevstack-administrators Jira Administrators opendevstack-administrators Browse Users opendevstack-(administrators|users) Create Shared Objects opendevstack-(administrators|users) Manage Group Filter Subscriptions opendevstack-(administrators|users) Bulk Change opendevstack-(administrators|users) The last step is to grant the created OpenDevStack groups application access. Go to the Application access menu beneath the Applications tab. There you will have to add the OpenDevStack groups according to the Jira user groups. Click on the group selection and choose the group you want to add to Jira. Access http://192.168.56.31:8090 Here you have to choose Production Installation, because we want to configure an external database. Ensure the add-ons are unchecked and proceed. Here you are able to get an evaluation license from atlassian or to enter a valid license key. Here you have to choose My own database. Choose By connection string as Setup type and configure the database with the following values: Option Value Database Type PostgreSQL Database URL jdbc:postgresql://localhost:5432/confluence User Name confluence Password confluence Click Next to proceed. Be patient. This step takes some time until next page appears. Here you have to choose Empty Site or Example Site Choose Manage users and groups within Confluence. Crowd will be configured later. Here you have to configure a local administrator account. After this step, you are able to work with Confluence. Just press Start and create a space. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the User Directories entry at the left in the USERS & SECURITY section. Now choose Add Directory. Here you have to add a directory of type Atlassian Crowd. Now enter the Crowd server URL http://192.168.56.31:8095/crowd You also have to fill in the application name and the password you have defined for Confluence in crowd. For the local test environment this is confluence confluence Activate nested groups and deactivate the incremental synchronization The group membership should be proofed every time a user logs in. Test the settings and save them. Now change the order of the user directories. The Crowd directory has to be on first position and synchronize the directory. The last step is to configure the permissions for the OpenDevStack groups. Open the User management in the Confluence administration. To enter the administration, you have to verify you have admin rights with the password for your admin user. Click the Global Permissions entry at the left in the USERS & SECURITY section. Now choose Edit Permissions and add the OpenDevStack groups with the Input field in the groups section. Check the checkboxes, so the OpenDevStack groups have the same permissions the local confluence groups have. Click Save all to persist the permissions. After the configuration of the Atlassian tools has been done, it’s time to continue with the preparation oft the OpenDevStack environment. In this step the basic configuration for the OpenShift cluster takes place, as well as the installation of Sonarqube, Nexus3 and the Provisioning application. In addition Rundeck will be prepared automatically as far as possible. Navigate to the ods-core/infrastructure-setup/ directory on your local machine and execute the script prepare-local-environment.sh Now you will have to decide, which configuration should be done. In a first time installation you will have to keep the defaults. For further customization there will be an additional guide. Important; The preparation script also activates SSO in Confluence and Jira. After the activation has been done a login with the local administrator credentials is no longer possible! During the mirroring of the local repositories to your Bitbucket instance, it is possible, that you will be asked for credentials. Here you have to enter the credentials for your loacl Crowd administrator or the cd_user credentials. After the repository mirroring you may setup project branch permissions in Bitbucket, if the production branch should be guarded against direct merges except through admins. The subsequent paragraphs explain the installation and configuration content for Nexus3, Sonarqube, Rundeck and the Provisioning application. Nexus3 will be installed automatically, if you have confirmed the installation in the prepare script. After the installation Nexus3 will be accessible at http://nexus-cd.192.168.56.101.nip.io/ You are able to login with the default credentials for Nexus3 admin admin123. During installation various resources will be created automatically. You will find their description in the subsequent paragraphs. In the automated installation the following blob stores will be created Type Name Path File candidates /nexus-data/blobs/candidates File releases /nexus-data/blobs/releases File atlassian_public /nexus-data/blobs/atlassian_public This table lists the repositories created automatically. Name Format Type Online Version policy Layout policy Storage Strict Content Type Validation Deployment policy Remote Storage belongs to group candidates maven2 hosted checked Release Strict candidates checked Disable-redeploy none releases maven2 hosted checked Release Strict releases checked Disable-redeploy none npmjs npm proxy checked default checked https://registry.npmjs.org atlassian_public maven2 proxy checked Release Strict atlassian_public checked Disable-redeploy https://maven.atlassian.com/content/repositories/atlassian-public/ jcenter maven2 proxy checked Release Strict default checked Disable-redeploy https://jcenter.bintray.com maven-public sbt-plugins maven2 proxy checked Release permissive default unchecked Disable-redeploy http://dl.bintray.com/sbt/sbt-plugin-releases/ ivy-releases sbt-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases ivy-releases typesafe-ivy-releases maven2 proxy checked Release permissive default unchecked Disable-redeploy https://dl.bintray.com/typesafe/ivy-releases ivy-releases ivy-releases maven2 group checked Release permissive default unchecked Disable-redeploy pypi-all pypi group checked default pypi-proxy pypi-proxy pypi proxy checked default https://pypi.org/ During installation the following user will be created. Name Password developer developer The user will get the opendevstack-developer role listed below. Role ID Role name Role description opendevstack-developer OpenDevStack-Developer Role for access from OpenDevStack This role has the following privileges: Privilege nx-repository-admin-maven2-candidates-browse nx-repository-admin-maven2-candidates-edit nx-repository-admin-maven2-candidates-read nx-repository-view-maven2-- nx-repository-view-maven2-candidates-* nx-repository-view-npm-- The account created is used to authenticate against Nexus3, anonymous access is disabled. By default Sonarqube will be installed with the preparation script. You will have to pass a valid authentication token for Sonarqube to the OpenShift templates, so the script will pause as soon as Sonarqube is available. Go to https://sonarqube-cd.192.168.56.101.nip.io . Login with your Crowd credentials. Now open your personal account settings. Generate a token in the Security section. Copy the token value to the input of the preparation script and follow the instructions. The token will be processed and integrated in the templates for future builds. Under General Settings Security, you must enable \"Force user authentication\" to avoid public access to the SonarQube interface. Under \"My Account\", you must change the default password for the admin user. In additon to the base Jenkins images you have the option to build additional Jenkins slave images. To do so, just type y instead of typing n or pressing Enter, if you are asked, if you want to install the additional slave images. After the preparation script execution, you will have to configure some values in Rundeck. Access Rundeck at http://192.168.56.31:4440/ Login with your Crowd credentials. Now choose the Quickstarters project. Open the Job Actions button on the right and Import Remote Changes Click Import Now you should see the imported jobs. Choose the verify global rundeck settings job and execute it to verify that Rundeck has all necessary data. If you use the Github repository, and use as is this step isn’t necessary! If you use your own repository, configure the export plugin in same way as the import plugin, except the file path template - set to rundeck-jobs/${job.group}${job.name}.${config.format} ##Run from OpenShift The Provisioning application has been installed with the environment preparation script and is accessible via https://prov-app-test.192.168.56.101.nip.io There is no further configuration needed. If the application is not available, you will have to proof in OpenShift, if there have been any errors during the installation. Open the cloned provision application in your favorite IDE If you run the application from your IDE, you will have to provide some addional informations. In case you want to use your local Nexus, you will have to create a gradle.properties file in the ods-provisioning-app project to provide the Nexus credentials, because we disabled anonymous access. nexus_url=http://nexus-cd.192.168.56.101.nip.io nexus_user=developer nexus_pw=developer You also have to ensure the Nexus certificate is integrated in the keystore of the JDK the IDE uses. If you don’t want to use the internal Nexus and run the application from your IDE, you will have to provide a gradle.properties file with the following content: no_nexus=true After startup via the IDE the application is available at http://localhost:8080/ You can login in with the Crowd admin user you set up earlier. This section is not required anymore from OpenDevStack 2.0 OpenDevStack provides shared images used accross the stack - like the authproxy based on NGINX and lua for crowd In order to install, create a new project called shared-services Make the required customizations in the ods-configuration under ods-core shared-images nginx-authproxy-crowd ocp-config bc.env and secret.env and run tailor update inside ods-core\\shared-images\\nginx-authproxy-crowd: and start the build: oc start-build -n shared-services nginx-authproxy. After you have set up your local environment it’s time to test the OpenDevStack and see it working. Open the Provisioning application in your web browser and login with your crowd credentials. Provision your first project and have a look at your project in the Atlassian tools and OpenShift.","title":"Getting started","component":"opendevstack","version":"2.x","name":"local-installation","url":"/opendevstack/2.x/local-installation.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Requirements","hash":"_requirements","id":2},{"text":"Git","hash":"_git","id":3},{"text":"Vagrant","hash":"_vagrant","id":4},{"text":"Virtualbox","hash":"_virtualbox","id":5},{"text":"Atlassian tools licenses","hash":"_atlassian_tools_licenses","id":6},{"text":"Cygwin / Linux","hash":"_cygwin_linux","id":7},{"text":"Ansible","hash":"_ansible","id":8},{"text":"Setup your local environment","hash":"_setup_your_local_environment","id":9},{"text":"Tailor","hash":"_tailor","id":10},{"text":"Prepare infrastructure","hash":"_prepare_infrastructure","id":11},{"text":"Configure Atlassian Tools","hash":"_configure_atlassian_tools","id":12},{"text":"Atlassian Crowd","hash":"_atlassian_crowd","id":13},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard","id":14},{"text":"Step 1: License key","hash":"_step_1_license_key","id":15},{"text":"Step 2: Crowd installation","hash":"_step_2_crowd_installation","id":16},{"text":"Step 3: Database Configuration","hash":"_step_3_database_configuration","id":17},{"text":"Step 4: Options","hash":"_step_4_options","id":18},{"text":"Step 5: Internal directory","hash":"_step_5_internal_directory","id":19},{"text":"Step 6: Default administrator","hash":"_step_6_default_administrator","id":20},{"text":"Step 7: Integrated applications","hash":"_step_7_integrated_applications","id":21},{"text":"Step 8: Log in to Crowd console","hash":"_step_8_log_in_to_crowd_console","id":22},{"text":"Configure Crowd","hash":"_configure_crowd","id":23},{"text":"Session configuration","hash":"_session_configuration","id":24},{"text":"Add OpenDevStack groups","hash":"_add_opendevstack_groups","id":25},{"text":"Add CD user","hash":"_add_cd_user","id":26},{"text":"Add groups to administrator","hash":"_add_groups_to_administrator","id":27},{"text":"Add applications to crowd","hash":"_add_applications_to_crowd","id":28},{"text":"Attlassian Bitbucket","hash":"_attlassian_bitbucket","id":29},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_2","id":30},{"text":"Configure Crowd access","hash":"_configure_crowd_access","id":31},{"text":"Add permissions","hash":"_add_permissions","id":32},{"text":"Create OpenDevStack project in Bitbucket","hash":"_create_opendevstack_project_in_bitbucket","id":33},{"text":"Add SSH Key for CD user to Bitbucket","hash":"_add_ssh_key_for_cd_user_to_bitbucket","id":34},{"text":"Atlassian Jira","hash":"_atlassian_jira","id":35},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_3","id":36},{"text":"Step 1: Setup application properties","hash":"_step_1_setup_application_properties","id":37},{"text":"Step 2: Specify your license key","hash":"_step_2_specify_your_license_key","id":38},{"text":"Step 3: Set up administrator account","hash":"_step_3_set_up_administrator_account","id":39},{"text":"Step 4: Set up email notifications","hash":"_step_4_set_up_email_notifications","id":40},{"text":"Step 5: Basic configuration","hash":"_step_5_basic_configuration","id":41},{"text":"Configure user directory","hash":"_configure_user_directory","id":42},{"text":"Add permissions","hash":"_add_permissions_2","id":43},{"text":"Add application access","hash":"_add_application_access","id":44},{"text":"Atlassian Confluence","hash":"_atlassian_confluence","id":45},{"text":"Run Configuration Wizard","hash":"_run_configuration_wizard_4","id":46},{"text":"Step 1: Set up Confluence","hash":"_step_1_set_up_confluence","id":47},{"text":"Step 2: Get add-ons","hash":"_step_2_get_add_ons","id":48},{"text":"Step 3: License key","hash":"_step_3_license_key","id":49},{"text":"Step 4: Choose a Database Configuration","hash":"_step_4_choose_a_database_configuration","id":50},{"text":"Step 5: Configure Database","hash":"_step_5_configure_database","id":51},{"text":"Step 6: Load Content","hash":"_step_6_load_content","id":52},{"text":"Step 7: Configure User Management","hash":"_step_7_configure_user_management","id":53},{"text":"Step 8: Configure System Administrator account","hash":"_step_8_configure_system_administrator_account","id":54},{"text":"Configure user directory","hash":"_configure_user_directory_2","id":55},{"text":"Add permissions","hash":"_add_permissions_3","id":56},{"text":"Prepare local OpenDevStack environment","hash":"_prepare_local_opendevstack_environment","id":57},{"text":"Nexus3","hash":"_nexus3","id":58},{"text":"Blob stores","hash":"_blob_stores","id":59},{"text":"Repositories","hash":"_repositories","id":60},{"text":"User and roles","hash":"_user_and_roles","id":61},{"text":"Sonarqube","hash":"_sonarqube","id":62},{"text":"Prepare Jenkins slave docker images","hash":"_prepare_jenkins_slave_docker_images","id":63},{"text":"Rundeck configuration","hash":"_rundeck_configuration","id":64},{"text":"Configure SCM Export plugin","hash":"_configure_scm_export_plugin","id":65},{"text":"Provisioning application","hash":"_provisioning_application","id":66},{"text":"Run from IDE","hash":"_run_from_ide","id":67},{"text":"Add shared images","hash":"_add_shared_images","id":68},{"text":"Try out the OpenDevStack","hash":"_try_out_the_opendevstack","id":69}]},"42":{"id":42,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 Rundeck 2.8.2-1.31.GA OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"2.x","name":"sysenv-requirements","url":"/opendevstack/2.x/sysenv-requirements.html","titles":[]},"43":{"id":43,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a slave pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"2.x","name":"troubleshooting","url":"/opendevstack/2.x/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins slave - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_slave_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"44":{"id":44,"text":"When we started with Redhat’s OpenShift we were blown away by the 100s of possibilities to use it, while there was not anything along \"This is how you make it work for your org\". Its catalog provides items for almost everything - yet what we wanted is to enable people to quickly introduce Continous delivery and standardized technology archetypes. We call this lean, empowered governance. So what does OpenDevStack now provide? A set of images to get the CI infrastructure running, called ods-core. It also contains ansible runbooks to get the atlassian suite going. A shared jenkins library that harmonizes the way you build, test, govern and deploy. A set of technology quickstarters that already provide the complete CI/CD integration, w/o anything to worry about for the engineer A small provision application that gives you one place to start, no matter if you want to start a new initiative, or enhance and existing one. Trigger project creation thru the provisioning application to get a new project. The web GUI of the provisioning app is located at https://prov-app-test.;. When openshiftproject == true, this will also create OpenShift projects, namely -dev and -test. A Jenkins deployment will be created in the -cd project to allow each project full freedom of build management. This deployment is based on common jenkins images from the CD namespace. Open the web GUI of the provisioning app https://prov-app-test.;. This time, rather than new initiative, pick modify and select your project. Pick a matching quickstarter. If no framework fits to your needs, choose the be-plain-docker quickstarter. Now you got the boilerplate of the picked quickstarter in your BitBucket project in its own repository, which the provisioning app created. Also, CI/CD is already working - you can verify this as the boilerplate application runs in the -test project. This was deployed through a Jenkins pipeline, which is triggered via webhooks from BitBucket. Create a branch in the newly created repository - once pushed this will deploy your application to the -dev project. After merging your branch to master, the update is avilable in the -test project. The branch-to-environment mapping is defined in the Jenkinsfile, used by the jenkins shared library, and can be tailored to your needs.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":2},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":3},{"text":"Using OpenDevStack","hash":"_using_opendevstack","id":4},{"text":"Create an integrated OpenDevStack project","hash":"_create_an_integrated_opendevstack_project","id":5},{"text":"Pull a quickstarter into your project","hash":"_pull_a_quickstarter_into_your_project","id":6},{"text":"Result after quickstarted","hash":"_result_after_quickstarted","id":7},{"text":"Checking in my app code","hash":"_checking_in_my_app_code","id":8}]},"45":{"id":45,"text":"OpenDevStack provides several customized Jenkins Docker Images based on the official OpenShift images. The idea is, that you do not need to configure anything on Jenkings before you can start using it. In ods-core/jenkins, you find the following directory structure: Table 1. Table Directories Directory Description master Dockerfile for Jenkins Master ocp-config OpenShift templates and Tailorfile slave-base Dockerfile and customization for Jenkins Slave Images webhook-proxy Dockerfile and source code for Bitbucket webhook proxy The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.12 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 Jira offers to deploy post-initialization scripts. Table 2. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins Location based on the OpenShift route sonarqube.groovy Sets the sonarserver url and auth token based on the configured secrets and config maps The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the sonarqube server. SONAR_AUTH_TOKEN this is the sonarqube auth token that is generated when deploying and configuring sonarqube We enable (in Dockerfile) the sending of mails to unknown users and users without read rights. We have a base image for different jenkins slaves. The concrete slave images are then configured as part of the quickstarters. The base image contains the following customizations Sonarqube Scanner Sonarqube CNES Report Plugin OWASP Dependency Checker Tailor Setting of Enterprise Proxy When the docker image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins slave works also on OpenShift clusters in enterprises that use a web proxy. Provides one endpoint accepting webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the branch name). If there is no corresponding pipeline yet, it will be created on the fly. Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted as well. Go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Enter Jenkins as Title and the route URL (see following Setup section) as URL. Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined. Save your changes and you’re done! Any other webhooks already setup to trigger Jenkins are not needed anymore and should be deactivated or deleted. Run tailor update in ocp-config. This will create BuildConfig and ImageStream in the central cd namespace. Next, you will have to create a DeploymentConfig, Service and Route in the namespace your Jenkins instance runs.","title":"Jenkins","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/jenkins/index.html","titles":[{"text":"Jenkins Master","hash":"_jenkins_master","id":1},{"text":"Configured Plugins","hash":"_configured_plugins","id":2},{"text":"Init groovy scripts","hash":"_init_groovy_scripts","id":3},{"text":"Mail Sending","hash":"_mail_sending","id":4},{"text":"Jenkins Slave","hash":"_jenkins_slave","id":5},{"text":"Webhook Proxy","hash":"_webhook_proxy","id":6},{"text":"Usage","hash":"_usage","id":7},{"text":"Setup","hash":"_setup","id":8}]},"46":{"id":46,"text":"The base jenkins slave used by all ODS builder slaves Creates trust relationship with applications in the openshift cluster (thru certificate management) Sonarqube scanner plugin binding to the central SQ instance Sonarqube report plugin used to download the scan results within the jenkins shared library's stage stageScanForSonarQube OWASP scan plugin Creates proxy awareness when HTTP_PROXY is injected during build pahse Tailor - on top of openshift CLI to provide infrastrucure as code Snyk - used to scan and monitor projects vulnerable third-party dependencies","title":"ODS Jenkins Slave base","component":"opendevstack","version":"2.x","name":"slave-base","url":"/opendevstack/2.x/jenkins/slave-base.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features / Plugins","hash":"_features_plugins","id":2}]},"47":{"id":47,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables are read by the proxy: Variable Description PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be cleaned up. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the template and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the template and usually does not need to be modified. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. By default, this is just the opendevstack project. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"2.x","name":"webhook-proxy","url":"/opendevstack/2.x/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"48":{"id":48,"text":"","title":"Nexus","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/nexus/index.html","titles":[]},"49":{"id":49,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This repo contains the build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this readme describes how that setup is done. If you are looking for instructions how to analyse your repositories, please see USAGE.md. The OpenShift templates are located in ocp-config and can be compared with the OC cluster using tailor. For example, run cd ocp-config && tailor status to see if there is any drift between current and desired state. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OC project cd, under the sonarqube-app secrets. Push to this repository, then go to the build config in OC and start a new build. Admin password changed (see OC secrets sonarqube-app). Locked Sonarqube to logged-in users (Administation > Configuration > Security > Force User Authentication). Logged in as cd_user and created a auth token (My Account > Security > Generate New Token). As the auth token and the admin password has changed, you will need to update the OCP configuration again. Installed further plugins (Administation > Marketplace), e.g. SonarJava, SonarJS, Git.","title":"SonarQube","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/sonarqube/index.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Administration","hash":"_administration","id":2},{"text":"Building a new image","hash":"_building_a_new_image","id":3},{"text":"Manual steps performed after booting the instance","hash":"_manual_steps_performed_after_booting_the_instance","id":4}]},"50":{"id":50,"text":"This library allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: def final projectId = \"hugo\" def final componentId = \"be-node-express\" def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def sharedLibraryRepository def dockerRegistry node { sharedLibraryRepository = env.SHARED_LIBRARY_REPOSITORY dockerRegistry = env.DOCKER_REGISTRY } library identifier: 'ods-library@production', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: [ 'master': 'test', '*': 'dev' ] ) { context -> stage('Build') { // custom stage } stageScanForSonarqube(context) // using a provided stage } Following stages are provided (see folder vars for more details): stageScanForSonarqube(context) stageOWASPDependencyCheck(context) stageScanForSnyk(context, snykAuthenticationCode, buildFile, projectId) stageUploadToNexus(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the shared library according to your needs. There are just two settings to control everything: branchToEnvironmentMapping and autoCloneEnvironmentsFromSourceMapping. Example: branchToEnvironmentMapping: [ \"master\": \"prod\", \"develop\": \"dev\", \"hotfix/\": \"hotfix\", \"*\": \"review\" ] Maps a branch to an environment. There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OCP. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OCP. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. Caution! Cloning environments on-the-fly is an advanced feature and should only be used if you understand OCP well, as there are many moving parts and things can go wrong in multiple places. Example: autoCloneEnvironmentsFromSourceMapping: [ \"hotfix\": \"prod\", \"review\": \"dev\" ] Instead of deploying multiple branches to the same environment, individual environments can be created on-the-fly. For example, the mapping \"*\": \"review\" deploys all branches to the review environment. To have one environment per branch / ticket ID, you can add the review environment to autoCloneEnvironmentsFromSourceMapping, e.g. like this: \"review\": \"dev\". This will create individual environments (named e.g. review-123 or review-foobar), each cloned from the dev environment. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'rel': 'dev', 'hotfix': 'prod', 'preview': 'dev' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'preview': 'prod' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] // Optionally, configure environments on-the-fly: autoCloneEnvironmentsFromSourceMapping: [ 'uat': 'prod' ] Inside the closure passed to odsPipeline, you have full control. Write stages just like you would do in a normal Jenkinsfile. You have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsPipeline. Please see vars/odsPipeline.groovy for possible options. When you write stages, you have access to both global variables (defined without def in the Jenkinsfile) and the context object. It contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as \"153\". buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsPipeline starts. image Container image to use for the Jenkins agent container. This value is not used when \"podContainers\" is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use. By default, only one container is used, and it is configure automatically. If you need to run multiple containers (e.g. app and database), then you can configure the containers via this property. podVolumes Volumes to make available to the pod. podAlwaysPullImage Determine whether to always pull the container image before each build run. podServiceAccount Serviceaccount to use when running the pod. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. notifyNotGreen Whether to send notifications if the build is not successful. nexusHost Nexus host (with scheme). nexusUsername Nexus username. nexusPassword Nexus password. nexusHostWithBasicAuth Nexus host (with scheme), including username and password as BasicAuth. branchToEnvironmentMapping Define which branches are deployed to which environments. autoCloneEnvironmentsFromSourceMapping Define which environments are cloned from which source environments. cloneSourceEnv The environment which was chosen as the clone source. environment The environment which was chosen as the deployment target, e.g. \"dev\". targetProject Target project, based on the environment. E.g. \"foo-dev\". groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. \"foo\". componentId Component ID, e.g. \"be-auth-service\". gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message. gitCommitTime Git commit time in RFC 3399. sonarQubeBranch Branch on which to run SonarQube analysis. failOnSnykScanVulnerabilities Boolean flag (default true) that disables build failure in case Snyk Scan finds vulnerabilities dependencyCheckBranch Branch on which to run dependency checks. environmentLimit Number of environments to allow. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketHost BitBucket host - value taken from BITBUCKET_HOST. environmentCreated Whether an environment has been created during the build. openshiftBuildTimeout Timeout for the OpenShift build of the container image. ciSkip Whether the build should be skipped, based on the Git commit message. The slave used to build your code can be customized by specifying the image to use. Further, podAlwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To control the container pods completely, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized slave in a Jenkinsfile odsPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${dockerRegistry}/hugo/jenkins-slave-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '1Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each Jenkinsfile references a Git revsison of this library, e.g. library identifier: 'ods-library@production'. The Git revsison can be a branch (e.g. production or 0.1.x), a tag (e.g.0.1.1) or a specific commit. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if BitBucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate Setup organisation in snyk.io If you don´t have an snyk account just create one at snyk.io Once you logged into snyk.io, in your snyk group create an organisation for your project with exactly same name as project name. Create a service account in settings for the created organisation and keep the displayed token. You will need it later. Add environment variable to jenkins in your cd project Add the environment variable SNYK_AUTHENTICATION_CODE in jenkins in your openshift cd project with service account token as value. Edit your project Jenkinsfile Read auth code from environment by adding: node { ... snykAuthenticationCode = env.SNYK_AUTHENTICATION_CODE } Add stageScanForSnyk: ) { context -> ... stageScanForSnyk(context, snykAuthenticationCode, 'build.gradle', context.projectId) ... } The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift. The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins. stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.' The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA. Try to write tests. See if you can split things up into classes. Keep in mind that you need to access e.g. sh via script.sh. The implementation is largely based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/jenkins-shared-library/index.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Provided Stages","hash":"_provided_stages","id":2},{"text":"Workflow","hash":"_workflow","id":3},{"text":"branchToEnvironmentMapping","hash":"_branchtoenvironmentmapping","id":4},{"text":"autoCloneEnvironmentsFromSourceMapping","hash":"_autocloneenvironmentsfromsourcemapping","id":5},{"text":"Examples","hash":"_examples","id":6},{"text":"Writing stages","hash":"_writing_stages","id":7},{"text":"Slave customization","hash":"_slave_customization","id":8},{"text":"Versioning","hash":"_versioning","id":9},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":10},{"text":"How to add Snyk scanning to your ODS project","hash":"_how_to_add_snyk_scanning_to_your_ods_project","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"Ods Pipeline","hash":"_ods_pipeline","id":13},{"text":"Stage Scan for Snyk","hash":"_stage_scan_for_snyk","id":14},{"text":"Stage Start OpenShift Build","hash":"_stage_start_openshift_build","id":15},{"text":"Stage Scan For SonarQube","hash":"_stage_scan_for_sonarqube","id":16},{"text":"Development","hash":"_development","id":17},{"text":"Background","hash":"_background","id":18}]},"51":{"id":51,"text":"The odsPipeline method offers a complete pipeline for any component created with a quickstarter. It takes care of building the code, uploading artifacts to Nexus, analysing the code and starting builds and triggering deployments in Openshift.","title":"","component":"opendevstack","version":"2.x","name":"odsPipeline","url":"/opendevstack/2.x/jenkins-shared-library/odsPipeline.html","titles":[]},"52":{"id":52,"text":"The \"Snyk Security Scan\" stage does 2 tasks: uploads the list of project 3rd party dependencies including its licenses for monitoring. Snyk monitoring feature notifies developers about new vulnerabilities per email once this vulnerabilities are reported to the Snyk Vulnerability Database analyses your project 3rd party dependencies including its licenses and break the build if vulnerable versions are found in the project. Build fail can be disable with the property failOnSnykScanVulnerabilities Note: that if this stage only runs if the SNYK_AUTHENTICATION_CODE is found as environment variable. This variable needs to be defined as environment variable in the deployment configuration of your project jenkins.","title":"","component":"opendevstack","version":"2.x","name":"stageScanForSnyk","url":"/opendevstack/2.x/jenkins-shared-library/stageScanForSnyk.html","titles":[]},"53":{"id":53,"text":"The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the \"sonar-project.properties\" file in the repository being built. In debug mode, the sonar-scanner binary is started with the \"-X\" flag. If no \"sonar.projectVersion\" is specified in \"sonar-project.properties\", it is set to the shortened Git SHA.","title":"","component":"opendevstack","version":"2.x","name":"stageScanForSonarQube","url":"/opendevstack/2.x/jenkins-shared-library/stageScanForSonarQube.html","titles":[]},"54":{"id":54,"text":"stageStartOpenshiftBuild triggers the BuildConfig related to the repository being built. stageStartOpenshiftBuild takes two optional params (a) the first one, named \"buildArgs\", which is a map allowing to customise the image build step in OpenShift. For example: stageStartOpenshiftBuild(context, [\"myArg\":\"val\"]) (b) the second one, named \"imageLabels\", which is a map allowing to customise the image label generation. For example: stageStartOpenshiftBuild(context, [ : ], [\"myImageLabel\":\"valLabel\"]). This will end up as label prefixed with 'ext.'","title":"","component":"opendevstack","version":"2.x","name":"stageStartOpenshiftBuild","url":"/opendevstack/2.x/jenkins-shared-library/stageStartOpenshiftBuild.html","titles":[]},"55":{"id":55,"text":"Table of Contents How to develop locally Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 8 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js) The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API Rundeck API","title":"Internal architecture","component":"opendevstack","version":"2.x","name":"architecture","url":"/opendevstack/2.x/provisioning-app/architecture.html","titles":[{"text":"How to develop locally","hash":"_how_to_develop_locally","id":1},{"text":"Frontend Code","hash":"_frontend_code","id":2},{"text":"Backend Code","hash":"_backend_code","id":3},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":4},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":5},{"text":"Link collection","hash":"_link_collection","id":6}]},"56":{"id":56,"text":"Table of Contents Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Authentication to third party apps via technical users The Provisioning Application is configured via spring boot profiles. Default configuration properties are definded in application.properties There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence, Bitbucket and Rundeck is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. A default oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence, Bitbucket and Rundeck. The used credentials are read from a pair of properties. For Example, rundeck.admin_password and rundeck.admin_user properties are used for Rundeck, confluence.admin_user and confluence.admin_password are used for confluence, etc. application-oauth2.properties # configure technical user for rundeck. Do not authenticate via oauth2, since not implemented. rundeck.admin_password=rundeck_admin rundeck.admin_user=rundeck_admin # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall()","title":"Configuration Guide","component":"opendevstack","version":"2.x","name":"configuration","url":"/opendevstack/2.x/provisioning-app/configuration.html","titles":[{"text":"Authentication Configuration","hash":"_authentication_configuration","id":1},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":2},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":3},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":4}]},"57":{"id":57,"text":"Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Why are three Openshift projects created when I provision a new project? A: The project-name-dev & -test ones are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the jenkins-shared-library In contrast to this, the project-name-cd namespace hosts a project specific instance of the ODS Jenkins and also of the Webhook Proxy. When a built is triggered, builder pods (=deployments of Jenkins slaves) are created in this project. This was a cautious design choice to give a project team as much power as possible - when it comes to configuration of jenkins. What is RUNDECK used for? A: Rundeck is used as orchestration engine when the provision application triggers provision jobs (e.g. create new projects, create components). This architecture is subject to change likely in release 2.0, to dramatically reduce complexity in multi cluster scenarios. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project.","title":"FAQ:","component":"opendevstack","version":"2.x","name":"faq","url":"/opendevstack/2.x/provisioning-app/faq.html","titles":[]},"58":{"id":58,"text":"Table of Contents Basic idea & usage Integration with Bitbucket (webhooks) Permissions Project/Space types based on templates Using the provision application via API / thru direct REST calls What happens in error cases This application creates new OpenDevStack digital projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as jira, confluence, bitbucket and rundeck. An admin (user in a group defined in property idmanager.group.opendevstack-administrators) creates new ODS project. This in turn creates a Jira Project (name based on project key & name) a Confluence Space (name based on project’s key) the required Openshift projects named key-dev, key-test and key-cd - in case openshiftproject == true. Internally this is done thru a rest call to rundeck triggering the create-projects rundeck job a Bitbucket Project (name based on project key) - in case openshiftproject == true. Within this project two default repositories are created key-oc-config-artifacts for all yaml resources as well as key-design for any design artifacts (e.g. sketches) A normal user (user in a group defined in property idmanager.group.opendevstack-users) creates all resources required for a working component - this happens thru the user interface - in going to modify project / picking your project and then the wanted quickstarter. Internally this is done thru a rest call to rundeck - with the picked job as parameter - here Bitbucket repository within the chosen project named key-boilerplate name Openshift components based on the chosen boilerplate, coming from ods-quickstarters The involved people receive an email with the setup, URLs to components etc. - in case mail.enabled == true Next to the provision app creating the bitbucket repository for a chosen quickstarter - it also creates a webhook on that repo, which triggers on three events List events = new ArrayList(); events.add(\"repo:refs_changed\"); events.add(\"pr:merged\"); events.add(\"pr:declined\"); webhook.setEvents(events); This webhook calls the webhook proxy which in turn creates an openshift build config of type pipeline in the name-cd project and executes it. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with tight read & write roles Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, PROVISION_API_HOST= curl -D headers.txt -k -H \"Content-Type: application/x-www-form-urlencoded\" \\ -X POST ${PROVISION_API_HOST}/j_security_check \\ -d username= -d password= # grab the login status, and exit if error login_status=$(cat headers.txt | grep ${PROVISION_API_HOST}/login?error) if [[ $login_status != \"\" ]]; then echo \"Login Error\"; exit 1; fi; # grab the needed IDs and bake the cookies JSESSION_ID=$(cat headers.txt | grep \"Set-Cookie: JSESSION\" | cut -d ';' -f1 | cut -d \":\" -f2)\";\" CROWD_COOKIE=$(cat headers.txt | grep \"Set-Cookie: crowd\" | cut -d ';' -f1 | cut -d \":\" -f2) COOKIES=${JSESSION_ID}${CROWD_COOKIE} # sample provision file >> create.txt { \"name\" : \"\", \"key\" : \"\", \"createpermissionset\" : true, \"jiraconfluencespace\" : true, \"admin\" : \"\", \"adminGroup\" : \"\", \"userGroup\" : \"\", \"readonlyGroup\" : \"\", \"openshiftproject\" : false } provisionfile=create.txt # invoke the provision API to create a new project curl -k -X POST --cookie \"$COOKIES\" -d @\"$provisionfile\" \\ -H \"Content-Type: application/json; charset=utf-8\" -v ${PROVISION_API_HOST}/api/v2/project Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false.","title":"Overview: Provisioning Application","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/provisioning-app/index.html","titles":[{"text":"Basic idea & usage","hash":"_basic_idea_usage","id":1},{"text":"Integration with Bitbucket (webhooks)","hash":"_integration_with_bitbucket_webhooks","id":2},{"text":"Permissions","hash":"_permissions","id":3},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":4},{"text":"Using the provision application via API / thru direct REST calls","hash":"_using_the_provision_application_via_api_thru_direct_rest_calls","id":5},{"text":"What happens in error cases","hash":"_what_happens_in_error_cases","id":6}]},"59":{"id":59,"text":"(#86) introduces a new v2 API, as described above. This has impact to ALL consumers, the URI to use the project api also switches to v2 with v1 being removed.","title":"Upgrade notes","component":"opendevstack","version":"2.x","name":"upgrade_notes","url":"/opendevstack/2.x/provisioning-app/upgrade_notes.html","titles":[{"text":"1.1.x to next major release","hash":"_1_1_x_to_next_major_release","id":1}]},"60":{"id":60,"text":"This boilerplate provides an Airflow Cluster using Kubernetes Executor hosted in Openshift. The AirFlow Cluster setup that is provided is based on the KubernetesExecutor and will create and destroy worker pods on demand. It also setup an ElasticSearch instance as the log repository for all workers. As illustrated bellow: All Airflow images are based on your -cd/airflow image stream. All documentation regarding the base images used in this quickstarter can be found at airflow-cluster/base-images To deploy the quickstarter the component name must be airflow-worker otherwise nothing will be created These are the OpenShift resources and the repository structure created by this boilerplace. Nothing will be created if any rersouces in the target OpenShift namespace can be found under the label cluster=airflow This boilerplate create several resources in OpenShift and ALL of them can be found using the label cluster=airflow. The created resources are: Service Account: airflow : Service account used as OAuth client for the Airflow web server Secrets: airflow-postgresql : Credentials for the PostgreSQL database airflow-elasticsearch : Credentials for the ElasticSearch airflow-fernetkey : Fernet key for securing stored Airflow Connection Config Maps: airflow-environemnt : Airflow configuration shared among all nodes Builds and Image Stream: airflow-worker : Worker image which Airflow uses for executing the tasks Deployment Configs and Services: airflow-webserver : Airflow Web Server airflow-scheduler : Airflow Scheduler (* Only Deployment Config) airflow-postgresql : Airflow matadata database airflow-elasticsearch: Worker log database airflow-kibana: Interface for exploring Airflow logs in ElasticSearch Routes: airflow-webserver : Exposes Airflow webserver . ├── docker │ ├── scripts │ │ └── setup.py # Script for installing python dependecies in dag_deps │ └── Dockerfile # Docker file pointing to Airflow shared image ├── src # Source folder │ ├── dag_deps # Folder containing all dependencies of the DAGs │ │ └── dag_deps_package # Example package │ │ ├── __init__.py │ │ └── crazy_python.py │ ├── dags # All DAGs should be in this folder │ │ ├── hello_dag.py # Example DAG using BASH Operator │ │ ├── hello_kubernetes_operator.py # Example DAG using Kubernetes Operator │ │ └── hello_python_dag.py # Example DAG using internal and external dependencies │ └── requirements.txt # File defining all dependencies (with an example inside) ├── tests # Test source folder │ ├── dag_deps # Folder containing tests of dependecies │ │ ├── __init__.py │ │ └── test_crazy_python.py # Test example │ └── dags # Folder containing tests of DAGs │ ├── __init__.py │ └── test_dag_integrity.py # DAG integrity test ├── Jenkinsfile ├── build.sh # Build script ├── sonar-project.properties ├── test_all.sh # Script for running all tests └── test_dag_integrity.sh # Script for running DAG integrity tests All examples files are simple examples and they are only needed for guiding the first development steps. They can be deleted! An Airflow cluster will be created in each environment. This allows the DAG development to follow the same branching strategy adopted in the whole project All commited code is submitted to a CI/CD pipeline defined in Jenkinsfile. This pipeline executes DAG integrity tests, which prevents invalid DAGs to be deployed. It also enables the development of all sort of tests needed for development. The last step of the Jenkins pipeline is to synchorized the recent commited DAGs with the Airflow web server and Airflow scheduler The configuration of all deployments is documented in Airflow base-images folder in ods-quickstarters/airflow-cluster once the cluster is provisioned in OpenShift you need to change in the airflow-environment configmap any occurence of the following strings: - your-openshift-apihost - your-openshift-console to the right values for your cluster. Finally, redeploy airflow-webserver and airflow-scheduler to apply the configurations.","title":"AirFlow Openshift Cluster Boilerplate","component":"opendevstack","version":"2.x","name":"airflow-cluster","url":"/opendevstack/2.x/quickstarters/airflow-cluster.html","titles":[{"text":"Setup","hash":"_setup","id":1},{"text":"Contents","hash":"_contents","id":2},{"text":"OpenShift Resources","hash":"_openshift_resources","id":3},{"text":"File structure provided in the repository","hash":"_file_structure_provided_in_the_repository","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Features","hash":"_features","id":6},{"text":"Multi Branching","hash":"_multi_branching","id":7},{"text":"CI/CD","hash":"_cicd","id":8},{"text":"DAG Distribution","hash":"_dag_distribution","id":9},{"text":"Configuration of Airflow","hash":"_configuration_of_airflow","id":10}]},"61":{"id":61,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. This quickstarter uses Golang builder slave. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"2.x","name":"be-golang-plain","url":"/opendevstack/2.x/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"62":{"id":62,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 8 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). Under the hook this quickstarter runs the spring boot cli init command. The quickstarter uses the latest available spring boot cli version to generate the spring boot project. This is implemented in the script init.sh (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project will be generated and pushed to your git repository. The generated project requires java 8 and include the required gradle build and wrapper artifact. The generated spring boot project contains following folders: src (maven based java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,jersey,data-jpa,h2,lombok,data-rest,restdocs,security\"), which are defined in the script init.sh (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 8 or later version is required to run gradlew and compile java classes. The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. This quickstarter uses Maven builder slave Jenkins builder slave. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"2.x","name":"be-java-springboot","url":"/opendevstack/2.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":11},{"text":"Builder Slave used","hash":"_builder_slave_used","id":12},{"text":"Known limitations","hash":"_known_limitations","id":13}]},"63":{"id":63,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter is simmple WEB-server written on Python using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── files │ ├── docker - This folder contains Docker configuration settings │ │ ├── Dockerfile │ │ └── run.sh - This bash script solves issue with permissions for a container user │ └── src │ ├── app.py - This file is the main entry point in the project. │ ├── requirements.txt - This file contains a list of required Python modules to run application │ ├── static │ │ ├── css │ │ │ └── main.css │ │ └── img │ │ └── bix.jpg │ ├── templates - Flask view teplates │ │ └── base.html │ ├── test_requirements.txt - This file contains a list of required Python modules to runt tests │ └── tests │ ├── __init__.py │ └── tests.py ├── init.sh └── sonar-project.properties - This file contains SonarQube configuration settings Flask Nose The project should be started automatically by OpenShift. Server should be started on the port 8080 in the debug mode. app.run('0.0.0.0', 8080, debug=True) To disable a debug mode set debug to False. To run application locally - specify the next command in a console: python app.py If you run application the first time, please install dependencies with the next command: pip install -r requirements.txt It is recommended when you work with a Python project use separated environment for every of your project. For this purpose usually iis used virtualenv package. # Command install virtualenv package (run only once) pip install virtualenv # Creates virtual environment 'venv' (will be located in the folder venv) (run only once) virtualenv venv # Initiate virtual environment for the project (every time) source venv/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application python app.py The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Test - Runs unit test cases by executing command: nosetests -v PEP 8 - Runs lint profiler by running command: pycodestyle --show-source --show-pep8 . && pycodestyle --statistics -qq . Build - Builds the application, copies output folder dist into docker/dist folder. This quickstarter uses Python builder slave Jenkins builder slave. NA","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"2.x","name":"be-python-flask","url":"/opendevstack/2.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"64":{"id":64,"text":"This is a Akka HTTP project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an Actor / Stream based HTTP integration layer for your application, based on scala. An example Akka HTTP Server implementation is generated with a little user registration protocol and according tests to showcase the server side routing DSL. . ├── build.sbt ├── project │ ├── build.properties │ └── plugins.sbt └── src ├── main │ └── scala │ └── com │ └── example │ ├── JsonSupport.scala │ ├── QuickstartServer.scala │ ├── UserRegistryActor.scala │ └── UserRoutes.scala └── test └── scala └── com └── example └── UserRoutesSpec.scala 10 directories, 8 files This project is generated by SBT using SBTs template generation via the new command. The template used is an older snapshot of the official Akka HTTP Quickstarter. For concrete versions of used dependencies have a look at the build.sbt file. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing or run for running the server locally. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - runs the tests and builds the application by running sbt test and sbt assembly This quickstarter uses the Scala Jenkins Slave. NA","title":"Backend Scala Akka HTTP Quickstarter (be-scala-akka)","component":"opendevstack","version":"2.x","name":"be-scala-akka","url":"/opendevstack/2.x/quickstarters/be-scala-akka.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"65":{"id":65,"text":"This is a node (v6) quick starter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The files are generated using a yeoman generator for node-express-typescript. Generated files include a minimal express server with dummy routes. ├── Jenkinsfile - Contains Jenkins build configuration ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── greeter.ts │ ├── index.ts - Entrypoint, This runs first │ └── routes │ └── weather.ts ├── test │ ├── greeter-spec.ts │ └── index-spec.ts ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration 4 directories, 14 files Express (^4.15) Mocha & Chai for Unit Testing Typescript Do a npm install form the project root to install all the dependencies. npm run serve will transpile the code and start the server Execute npm run test for unit testing The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command will be executed to build the application and then the build (including the node_modules) will be copied to the docker/dist folder. Unit Testing : npm test -- --progress false & npm run coverage commands will be executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"2.x","name":"be-typescript-express","url":"/opendevstack/2.x/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"66":{"id":66,"text":"Use this quickstarter when you want to start from a plain dockerfile only - w/o a framework on top. A good usecase here is a dockerfile you found on github that you want to run with OpenDevStack features, or that you need to \"openshiftify\", by setting an execution user or alike. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── sonar-project.properties - SonarQube Configuration None, except the ODS jenkins shared library Amend the generated Dockerfile as needed. The shared library is used as is - whatever is in the /docker folder is passed to oc start build as docker context. In case you want to run testing, plug into stageUnitTest. def stageBuild(def context) { stage('Build') { // copy any other artifacts if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } def stageUnitTest(def context) { stage('Unit Test') { // if needed add your unit tests here } } none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"2.x","name":"docker-plain","url":"/opendevstack/2.x/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"67":{"id":67,"text":"Provision a shared Jupyter Notebook within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile └── docker ├── Dockerfile ├── jupyter_notebook_config.json ├── requirements.txt └── run.sh Python 3.6 Jupyter The quickstarter sets up two pods in OpenShift. The ds-jupyter-notebook instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-slave-base Consider if sufficient computing resources can be provided by the OpenShift cluster.","title":"Data Science Jupyter Notebook","component":"opendevstack","version":"2.x","name":"ds-jupyter-notebook","url":"/opendevstack/2.x/quickstarters/ds-jupyter-notebook.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"68":{"id":68,"text":"This boilerplate enables data scientists to develop, serve, version models within a CI/CD pipeline hosted on OpenShift with the goal in mind that one does not have to take care/change much of the needed pipeline and infrastructure. For pull requests and discussion regarding direction, please pull in @hugowschneider, @sklingel and @gerardcl The boilerplate provides a two pod setup in OpenShift, one pod for training service and one pod for prediction service. From one Dockerfile, under docker folder, both training and prediction services are built. If required, one can edit it in order to provide different dependency management workflows for each service. The training service provides a pod that is able to reproduce/retrain the model that is developed in the current commit either locally on OpenShift or execute the training on a remote linux system using ssh. The training process is wrapped into a flask server to be able to monitor and possible restart the training process. Moreover, the training service offers an endpoint for downloading the created model afterwards. Additionally, unittests and integration tests are executed on the training pod, in order to not depend on operating dependencies in the jenkins slave. The prediction service provides a simple flask service for getting new predictions out of your model by making json posts to the prediction REST endpoint. The prediction service is already built with the newly trained model from the training pod. The Jenkinsfile organizes the correct succession of spinning up the training, executing it and starting the new deployment of the prediction service. Additionally, it triggers unittest ensuring the code is functionally before a new training process is started. Moreover, integration tests are run against the reproduced model wrapped into the prediction REST endpoint to ensure that the reproduced model (performance) behaves as expected also when wrapped in the flask service. External files that are needed either for building your model or docker images are stored under resources. For demonstration purposes a training and test csv file is stored in resources. This approach has to be reevaluated for each new use case, considering data size and confidentiality. The src folder contains the infrastructure coded needed for providing the services in OpenShift in src/services. Custom code for developing your prediction service is organized in the src/model package. In the (common) src/requirements.txt you can specify python dependencies for training, prediction and tests. To keep it simple, there is only one requirements.txt for both pods. The test directory mirrors the structure of the src, either for unittests or integration tests using the python unittest framework. To run your own customized models there is usually no need to change either the Jenkinsfile, OpenShift setup or the training and prediction microservices. Custom model code will go under src/model and can be organized in custom packages like showcased with the src/model/data_cleaning and src/model/feature_prep. In general, it can be organized as the users prefers. There are no further restrictions for developing the in the style you want, for the exception to provide the mandatory functions and attributes in src/model/model_wrapper.py for the `ModelWrapper class: prep_and_train: is called by the train script (which one can customize) and expects a pandas dataframe (current implementation). The train script is called by the training service prep_and_predict: is called by the predict endpoint service from the prediction service. It consumes the json post as a dictionary. The predict endpoint executes prep_and_predict. Good practice: source_features, specifying the name that are used a input for the model. This features include really the source columns from which also more complicated features are derived within the model boundaries Good practice: target_variable, name of the variable that should be used as target for a possible supervised approach. As well as the train function in the src/trainer.py. It specifies how the model should be trained. Make sure your specified all dependencies in the requirements.txt. It is recommended to develop your code against the python interpreter & dependencies specified in the docker images. This can be easily achieved, either by using an IDE that supports that (e.g. PyCharm) or by doing manually in the docker container. In order to ensure complete reproducibility, in case train and/or test data can’t be committed to a git repository due to size or confidentiality/data privacy considerations, data versioning can be achieved using the built in dvc data version capabilities.` Moreover, technical user account is needed so that the CI/CD pipeline is able to pull the data dependencies from the remote data versioning repository. Do the following steps in order to make use of the data versioning capabilities Initialize the quickstarter repository as a dvc repository: dvc init Setup the a remote repository on a remote ssh machine, e.g. Data Lake dvc remote add ssh://:/ Configure authentification. For local development you can set your own user account, assuming it has access to or use a technical user account. dvc remote modify user and set the prompt for password, so that you don’t commit your password to the repository dvc remote modify ask_password True Start adding files that should be tracked by data versioning dvc add this will create a new file with meta information about called .dvc. This meta file needs to be tracked with git, so that it is ensured that each git commit is linked with a specific data version git add .gitignore .dvc Modify your train() and potentially the integration tests to pull the data dependencies from the remote repository. A helper class is provided in src/services/remote/dvc/data_sync.py that can be used as follows: from services.infrastructure.remote.dvc.data_sync import DataSync syncer = DataSync(dvc_data_repo, dvc_ssh_user, dvc_ssh_password) syncer.pull_data_dependency(file_name) Commit your code and push the data versioned files to the remote repository git commit dvc push -r git push In order for a successful Jenkins build, the following environment variables need to be set in the training pod deployment: DSI_DVC_REMOTE, DSI_SSH_USERNAME, `DSI_SSH_PASSWORD An example implementation of a custom model is given in src/model, to demonstrate how to organize custom code. A Logistic Regression using scikit-learn with some (unnecessary) feature cleaning and engineering is trained on the iris data flower set. Iris flower data set. (n.d.). In Wikipedia. Retrieved January 7, 2019, from https://en .wikipedia.org/wiki/Iris_flower_data_set Training Build Config name: -training-service variables: None Deployment Config name: -training-service variables: DSI_EXECUTE_ON: LOCAL DSI_TRAINING_SERVICE_USERNAME: auto generated username DSI_TRAINING_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Prediction Build Config name: -prediction-service variables: None Deployment Config name: -prediction-service variables: DSI_TRAINING_BASE_URL: http://-training-service..svc:8080 DSI_TRAINING_SERVICE_USERNAME: username of the training service DSI_TRAINING_SERVICE_PASSWORD: password of the training service DSI_PREDICTION_SERVICE_USERNAME: auto generated username DSI_PREDICTION_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Remote training allows you to run your training outside of the OpenShift training pod on a linux node using a ssh connection. A conda environment is installed in the remote node and the requirements specified in src/requirements.txt are installed. Once this step is finished the training is executed on that node and the trained model is transferred back to the training pod. To enable remote training set the DSI_EXECUTE_ON variable in OpenShift to SSH and specify the connection information in the environment variables: DSI_SSH_HOST, DSI_SSH_PORT, DSI_SSH_USERNAME and DSI_SSH_PASSWORD. / : Return all information about the training service /start : Starts the training. /finished : Checks if the current traning task is finished /getmodel : Download the latest trained model /predict : Return all information about the training service payload: Should be a json containing the data necessary for prediciton. The payload is not pre defined, but it is defined by the trainined model There is not need for any kind of payload in all endpoints. Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_EXECUTE_ON Where the train should be executed LOCAL, SSH DSI_TRAINING_SERVICE_USERNAME Username to be set as default username for accessing the services string, required DSI_TRAINING_SERVICE_PASSWORD Password to be set as default password for accessing the services string, required Following variables are applicable if DSI_EXECUTE_ON=SSH DSI_SSH_HOST SSH host name where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) host names or ip addresses DSI_SSH_PORT SSH host port where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) port numbers (Default: 22) DSI_SSH_USERNAME SSH username for remote execution string\\ DSI_SSH_PASSWORD SSH password for remote execution string DSI_SSH_HTTP_PROXY HTTP proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_SSH_HTTPS_PROXY HTTPS proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_DVC_REMOTE Name of the dvc remote repository that has been initialized with dvc string Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_TRAINING_BASE_URL The base url where the prediction service should get the model from url (e.g. https://training.OpenShift.svc DSI_TRAINING_SERVICE_USERNAME Username of the training service string, required DSI_TRAINING_SERVICE_PASSWORD Password of the training service string, required DSI_PREDICTION_SERVICE_USERNAME Username to be set as default username for accessing the service string, required DSI_PREDICTION_SERVICE_PASSWORD Password to be set as default password for accessing the service string, required The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Prepare build Sonarqube checks Build training image Deploy training pod Unittests Execute/reproduce training either on openshift pod or in ssh remote machine Integration test against the newly trained model wrapped in the flask /prediction endpoint Build prediction image Deploy prediction service jenkins-slave-python Python 3.6 Python Flask 1.0.2 Not ready for R models yet In the case of building the docker image from behind a proxy and encountering certificate issues, adding a -k to the curl command can mitigate that, consider however the implications of disabling certificate Consider moving to ssh remote server training, if you expect high and long computational load during training phase. It might cause unnecessary stress on the openshift cluster, otherwise.","title":"Data Science Industrialization Boilerplate","component":"opendevstack","version":"2.x","name":"ds-ml-service","url":"/opendevstack/2.x/quickstarters/ds-ml-service.html","titles":[{"text":"Basic Setup","hash":"_basic_setup","id":1},{"text":"Container services","hash":"_container_services","id":2},{"text":"Jenkins","hash":"_jenkins","id":3},{"text":"External Files","hash":"_external_files","id":4},{"text":"src - the heart of your service","hash":"_src_the_heart_of_your_service","id":5},{"text":"test","hash":"_test","id":6},{"text":"How to Code Your Own Models","hash":"_how_to_code_your_own_models","id":7},{"text":"How to Develop your Model Locally","hash":"_how_to_develop_your_model_locally","id":8},{"text":"Data Versioning","hash":"_data_versioning","id":9},{"text":"Example & Example Dataset","hash":"_example_example_dataset","id":10},{"text":"Structure of the quick starter","hash":"_structure_of_the_quick_starter","id":11},{"text":"Remote Training","hash":"_remote_training","id":12},{"text":"Endoints","hash":"_endoints","id":13},{"text":"Training Endpoint","hash":"_training_endpoint","id":14},{"text":"Prediction Endpoint","hash":"_prediction_endpoint","id":15},{"text":"Environment Variables for training","hash":"_environment_variables_for_training","id":16},{"text":"Environment Variables for prediction","hash":"_environment_variables_for_prediction","id":17},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":18},{"text":"Builder slave used","hash":"_builder_slave_used","id":19},{"text":"Frameworks used","hash":"_frameworks_used","id":20},{"text":"Known limitions","hash":"_known_limitions","id":21}]},"69":{"id":69,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings └── docker - This folder contains Docker configuration settings and main R Shiny app ├── Dockerfile └── app.R R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-slave-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"2.x","name":"ds-rshiny","url":"/opendevstack/2.x/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"70":{"id":70,"text":"cypress e2e testing quickstarter project This is a cypress e2e testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile ├── README.md ├── files │ ├── README.md │ ├── build │ │ ├── integration │ │ │ └── main.spec.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── cypress.json │ ├── fixtures │ │ └── example.json │ ├── integration │ │ └── main.spec.ts │ ├── package.json │ ├── plugins │ │ └── index.js │ ├── support │ │ ├── commands.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tslint.json └── init.sh 9 directories, 16 files This project is generated by Angular CLI cypress TypeScript Run command npm install in project directory to install npm packages Run npm run e2e to execute the end-to-end tests via cypress against the test instance of the front end Run npm run watch to develop the e2e test. The tests will automatically rebuild and run, if you change any of the source files. The test will run against a local instance of the front end, e.g. localhost:4200. This destination is configurable in cypress.json. Provide credentials for a test user by defining them in a file called secrets.json inside the base directory. This file should have the following format: { \"e2e\": { \"testUserName\": \"User Name\", \"testUserPassword\": \"xxxx\" } } Please note: secrets.json is mentioned in .gitignore to prevent it from being added to version control. Please keep it this way. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there is the following stage: stageTest - Lint the TypeScript code by running npm install and npm run lint, and transpiles it to JavaScript and run the tests with the npm run build command. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. For now the URL of the front end instance to test is hard-coded inside the package.json file. There should be a better solution for handing this over. It is also possible to run npm run e2e-at with an additional parameter, e.g. npm run e2e-at https://domain.com.","title":"End-to-end tests with cypress (e2e-cypress)","component":"opendevstack","version":"2.x","name":"e2e-cypress","url":"/opendevstack/2.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"71":{"id":71,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json 7 directories, 31 files This project is generated by Angular CLI Angular CLI Angular Typescript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running yarn install, yarn build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command yarn test. stageLint - Runs ng lint profiler by running command yarn lint. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"2.x","name":"fe-angular","url":"/opendevstack/2.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"72":{"id":72,"text":"Ionic quickstarter project This quickstarter generates an Ionic 3 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/Typescript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. It scaffolds a tabbed app containing 3 basic pages (home, about and contact). . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── config - This folder contains Webpack and sass configuration settings ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── resources - This folder contains resources by platform ios, android ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.ts │ │ ├── app.html │ │ ├── app.module.ts │ │ ├── app.scss │ │ └── main.ts │ ├── assets │ ├── environments │ │ ├── environment.dev.ts | | |__ environment.e2e.ts │ │ └── environment.ts │ ├── pages │ ├── providers │ ├── theme │ ├── index.html │ ├── manifest.json │ ├── polyfills.ts │ ├── service-worker.js │ ├── test.ts │ └── tsconfig.spec.json ├── www ├── .angular-cli.json - This file contains Angular project configuration settings ├── config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── .ionic.config.json - This file contains Ionic project configuration ├── karma.conf.js ├── protractor.conf.js ├── tsconfig.json └── tslint.json Ionic CLI Ionic Framework Angular Typescript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g ionic Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with yarn install, generates the build by running npm run ionic:build, if the merged git branch is master it creates the production build with npm run ionic:build --prod. Finally, it copies the output folder www into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"2.x","name":"fe-ionic","url":"/opendevstack/2.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known Limitation","hash":"_known_limitation","id":7}]},"73":{"id":73,"text":"React quickstarter project This quickstarter generates a React project for developing webpages. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── LICENSE ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package.json - This file contains scripts to run and node packages dependencies for project ├── sonar-project.properties - This file contains SonarQube configuration settings ├── public │ ├── favicon.ico │ ├── index.html │ └── manifest.json └── src ├── App.js ├── App.test.js ├── Router.js ├── common │ └── components │ └── PageNotFound.js ├── history.js ├── home │ ├── components │ │ └── Repo.js │ ├── containers │ │ └── UserRepos.js │ ├── epics │ │ ├── fetchUserRepos.js │ │ └── index.js │ ├── index.js │ └── reducers │ ├── applyUserRepos.duck.js │ └── index.js ├── index.js ├── registerServiceWorker.js ├── rootEpic.js ├── rootReducer.js ├── store.js └── theme.js 10 directories, 28 files React js - ^16.4.0 Redux js - ^4.0.0-rc.1 material-ui As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run npm run start command to start the dev server, it will open your browser at http://localhost:8080/ The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following stages for this quickstarter: Build - Installs the dependencies of your project with npm install, generates the build by running yarn build. Finally, it copies the output folder build into docker/dist. Unit Test - Runs unit test cases by executing yarn test command, if any test fails, the build is marked as failed. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave.","title":"Frontend react.js (fe-react)","component":"opendevstack","version":"2.x","name":"fe-react","url":"/opendevstack/2.x/quickstarters/fe-react.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6}]},"74":{"id":74,"text":"Vue quickstarter project For pull requests and discussion regarding direction, please pull in @akhilsoman, @m-apsolon This quickstarter booststrap a Vue.js application with TypeScript support. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. The boilerplate files are generated using the Vue CLI 3.4.0 Class based component defintion is follwed for this application with TypeScript Support. The generated file structure as follows, . ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── babel.config.js ├── cypress.json ├── docker - Contains Dockerfile for the build │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── package-lock.json - Default package version lock. Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── public - Static assets for the project │ ├── favicon.ico │ ├── img │ │ └── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── sonar-project.properties ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue - Vue components are added here │ ├── main.ts - Entrypoint, This runs first │ ├── registerServiceWorker.ts │ ├── router.ts - Router configurations │ ├── shims-tsx.d.ts - The file helps your IDE to understand .tsx │ ├── shims-vue.d.ts The file helps your IDE to understand what a file ending in .vue is │ └── views │ ├── About.vue │ └── Home.vue ├── tests - Unit Test as well as ene to end test files │ ├── e2e │ │ ├── plugins │ │ │ └── index.js │ │ ├── specs │ │ │ └── test.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ └── unit │ └── example.spec.ts ├── .gitignore └── tsconfig.json - TypeScript Configuration file 14 directories, 44 files Vue (2.6,6) Mocha & Chai for Unit Testing Typescript Install the dependencies npm install Compiles and hot-reloads for development npm run serve Run your tests npm run build The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - Builds the application by running npm run install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. stageLint - Runs vue-cli-service lint profiler by running command npm run lint. This quickstarter uses Nodejs10-Angular builder slave Jenkins builder slave. The quickstarter is generated by copying the files genreated by Vue CLI. Once the CLI start supported template genration with out dependency installation (similar to --skip-insatll in Angular CLI) this can be modfied to CLI based generation.","title":"Frontend Vue (fe-vue)","component":"opendevstack","version":"2.x","name":"fe-vue","url":"/opendevstack/2.x/quickstarters/fe-vue.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder Slave used","hash":"_builder_slave_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"75":{"id":75,"text":"Table of Contents Overview Backend Quickstarter Frontend Quickstarter Data Science Quickstarter Other Quickstarter Usage Changing existing quickstarters Contributing new quickstarters Upgrade an existing Git repository to OpenDevStack This repository contains quickstarters, which are basically templates that help to start out with a component quickly. The available quickstarters are: Backend - Docker/Plain Backend - Golang Backend - SpringBoot/Java Backend - NodeJS/Express Backend - Python/Flask Backend - Scala/Akka Airflow Frontend - Angular Mobile - Ionic Frontend - React Frontend - Vue Data Science - Machine Learning Data Science - Jupyter Notebook Data Science - R-Shiny E2E test - Cypress Next to those, there is a \"blank\" quickstarter allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences described in the following sections. All quickstarters are used by the Provisioning App to create a new component which basically consists of resources in OpenShift (typically BuildConfig, ImageStream, DeploymentConfig and Service) and a BitBucket repository. This repository in BitBucket will contain: Some boilerplate code A Jenkinsfile describing how to build the component, delegating most of the work to the shared library A sonar-project.properties file configuring how the source code is analyzed by SonarQube Next to those, each quickstarter can also provide its own Jenkins slave images. The quickstarters are not used directly, but triggered via the provisioning app. Login there to pick a quickstarter, give it a name and provision it. The provisioning app delegates the executation to a job in Rundeck (defined in YML files in the rundeck folder), which then clones this repository and executes the files (e.g. init.sh) within. As the quickstarters are triggered via Rundeck, the changes need to be on the production branch in order to be \"live\". As an alternative, you can copy the job in Rundeck and point it to the branch you are working on. To test out things locally, you can mimick what Rundeck. The general procedure is: Clone the repository Go into a quickstarter folder, e.g. be-node-express Run build.sh (if it exists) Run init.sh Run renderJenkinsTemplate.sh from the root of the repository Run renderSonarqubeTemplate.sh from the root of the repository Note that those scripts might need parameters to work, and often need to be adjusted slightly to work (e.g. removing chowning to rundeck user). If you contribute a new quickstarter / boilerplate - please use the provided README.adoc templates for a jenkins-slave - the slave template for a boilerplace- the boilerplate Push your repository into the newly created bitbucket project (and note the name of the repo & project) Logon to rundeck and pick the common/prepare-continuous-integration rundeck job Pick the technology target thru component type - this will ensure you get the right jenkins file based on the technology you pick - and should fit the technology you have built your application with Provide quickstarter_directory - this can be any filesystem directory - usually in /tmp/ where the git repository will be cloned to Provide project_id - this is the project name you noted in step (0) Provide component_id- this is the name of the component (from step 0) that will be rendered into the jenkins template, and also used as name for the openshift resources Provide git_url_http/ssh - this is the URL to clone and commit to for the job.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"2.x","name":"index","url":"/opendevstack/2.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":2},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":3},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":4},{"text":"Other Quickstarter","hash":"_other_quickstarter","id":5},{"text":"Usage","hash":"_usage","id":6},{"text":"Changing existing quickstarters","hash":"_changing_existing_quickstarters","id":7},{"text":"Contributing new quickstarters","hash":"_contributing_new_quickstarters","id":8},{"text":"Upgrade an existing Git repository to OpenDevStack","hash":"_upgrade_an_existing_git_repository_to_opendevstack","id":9}]},"76":{"id":76,"text":"This page is outdated. Please follow the new installation guide instead. However, some parts are still missing there so you might find this page useful. The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables. The ansible role definitions are located in the ods-core repository at infrastructure-setup/ansible/roles Note that there are two different types of roles: roles starting with modified or local; these roles are modified by the OpenDevStack members and are maintained by them all other roles, e.g geerlingguy.git, which are copied roles from ansible galaxy. The roles from ansible galaxy are specified in the requirements.yml file. In order to migrate to a new version of the role, you need to specify the version in the requirements.yml file run ansible-galaxy install Example: update geerlingguy.git to version 2.1.0 Update requirements.yml: - src: geerlingguy.git version: 2.1.0 Call ansible-galaxy install: export ANSIBLE_VAULT_PASSWORD_FILE=/vagrant/ansible/.vault_pass.txt && ansible-galaxy install -r requirements.yml -p roles - andrewrothstein.openshift-origin-client-tools (v1.0.9) is already installed, skipping. - geerlingguy.nginx (2.6.2) is already installed, skipping. - geerlingguy.docker (2.0.4) is already installed, skipping. - downloading role 'git', owned by geerlingguy - downloading role from https://github.com/geerlingguy/ansible-role-git/archive/2.1.0.tar.gz - extracting geerlingguy.git to /vagrant/ansible/roles/geerlingguy.git - geerlingguy.git (2.1.0) was installed successfully","title":"Infrastructure Setup","component":"opendevstack","version":"3.x","name":"infrastructure-setup","url":"/opendevstack/3.x/administration/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1},{"text":"How to update ansible roles","hash":"_how_to_update_ansible_roles","id":2}]},"77":{"id":77,"text":"This document will guide you through installing / maintaining an OpenDevStack installation. From now on we assume, you work from a Bash (Cygwin / Linux). In order to run the Atlassian suite and OpenShift, your host must have: At least 16GB RAM and 32GB of available disk space vm.max_map_count=262144 to run SonarQube (which can be set via sudo sysctl -w vm.max_map_count=262144) A recent git version (>= 2.13.2) A recent jq version (>= 1.5, see https://stedolan.github.io/jq/) Before you can install OpenDevStack (no matter whether locally or on another server) you need to have the sources available on your local machine. If you do not have the ODS repositories setup yet, you can run repos.sh file. Before you run this script, keep in mind to have Git (>=2.13). Once you have that, you can then go to your Terminal and run: mkdir -p opendevstack cd opendevstack curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/master/ods-setup/repos.sh chmod +x repos.sh If you are installing OpenDevStack for the first time, run: ./repos.sh --init If there is already an existing installation of OpenDevStack, run the following with a user that has write permission: ./repos.sh The script will prompt you which Git ref you want to use. Select either master for bleeding edge or a more stable \"version\" such as 2.x. Afterwards running this script, all required repositories should be available locally. Go to ods-core and run: make prepare-config If you want to install OpenDevStack for the first time, leave the BitBucket URL empty. After the configuration is prepared (which means that a directory ods-configuration will be created if it does not exist yet), fill out all the parameters in ods-core.env in directory ods-configuration for your installation. Add all files of directory ods-configuration to git and commit the result. You don’t need to push yet, this will be done later. \"Preparing\" also updates the sample files and checks if any params are present in the sample files but missing from the real file. If you are using windows Cygwin or WSL remember to change ending line CRLF to LF before commit ods-core.env, you can find more information on configure Git ending line We use Tailor to handle OpenShift templates and keep OpenDevStack resources in sync. Please see its installation instructions for your platform. The following lists the version requirements: OpenDevStack version Tailor version 3.x >= 1.2.2 2.x >= 0.13.1 1.2.x = 0.9.3 1.1.x = 0.9.3 1.0.x = 0.9.1 0.1.x = 0.8 At this stage you can setup the Atlassian tools if they do not exist yet, or modify them as needed. Documentation for this is missing. After Crowd is running, ensure that there is a user corresponding to the CD_USER_ID_B64/CD_USER_PWD_B64 parameters in ods-core.env. At this stage you can setup the OpenShift cluster if it does not exist yet. Documentation for this is missing. If you are on Linux, oc cluster up will do the trick. On Bitbucket, there must be an OPENDEVSTACK project filled with the necessary repositories such as ods-core. To set them up, use: make prepare-bitbucket-repos Then, update them with the latest state so that they can be used e.g. from BuildConfig resources in OpenShift: make sync-repos You also need to update ods-configuration, which can be done via: git remote add origin git push -u origin master OpenDevStack needs one central project in OpenShift, which will hold all shared resources such as images or deployments. This project is typically called ods, but you can customize this in the configuration via ODS_NAMESPACE. First, log into OpenShift with a user that has cluster-admin rights. In ods-core run: make install-ods-project A central Nexus deployment is used to proxy packages and to store artifacts. In ods-core run: make install-nexus Afterwards, run the initial configuration: make configure-nexus In the course of this you will be prompted to set a new admin password. The configure-nexus target is not idempotent yet, so it cannot be used for upgrading! A central SonarQube deployment is used to analyze source code. In ods-core run: make install-sonarqube This will launch an instance of SonarQube. The script will prompt for a new admin password. Once this has been set, an auth token for the Jenkins pipelines will be generated. Both values are automatically written into ods-configuration/ods-core.env, which you then need to commit and push. Also, you have to add the cd-user as a user in the project permissions of your Bitbucket OpenDevStack project. Read permission is sufficient. Central Jenkins images (master, agent, webhook proxy) are used by every ODS project. In ods-core run: make install-jenkins Then, there are further Jenkins agent images for each quickstarter technology. To create those images, run the following from ods-quickstarters: make install-jenkins-agent At this stage you can setup or modify the image stream for the Document Generation service. In ods-core run: make install-doc-gen At this stage you can setup or modify the provisioning application. In ods-core run: make install-provisioning-app Congratulations! At this point you should have a complete ODS installation. Try it out by provisioning a new project with the provisioning application.","title":"OpenDevStack Setup","component":"opendevstack","version":"3.x","name":"installation","url":"/opendevstack/3.x/administration/installation.html","titles":[{"text":"Server prerequisites","hash":"_server_prerequisites","id":1},{"text":"Local Setup","hash":"_local_setup","id":2},{"text":"Repositories","hash":"_repositories","id":3},{"text":"Configuration","hash":"_configuration","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Infrastructure","hash":"_infrastructure","id":6},{"text":"Atlassian Tools","hash":"_atlassian_tools","id":7},{"text":"OpenShift cluster","hash":"_openshift_cluster","id":8},{"text":"Bitbucket Repositories","hash":"_bitbucket_repositories","id":9},{"text":"OpenDevStack environment in OpenShift","hash":"_opendevstack_environment_in_openshift","id":10},{"text":"Central ODS project","hash":"_central_ods_project","id":11},{"text":"Nexus","hash":"_nexus","id":12},{"text":"SonarQube","hash":"_sonarqube","id":13},{"text":"Jenkins","hash":"_jenkins","id":14},{"text":"Document Generation service","hash":"_document_generation_service","id":15},{"text":"Provisioning Application","hash":"_provisioning_application","id":16}]},"78":{"id":78,"text":"Table of Contents Realm master Users Realm opendevstack Groups Users Client ods-provisioning-app Keycloak is an open source identity and access managment tool. OpenDevStack uses eigther Atlassian Crowd or OpenID Connect / OAuth 2.0 protocol for authentication users of provisioning app. The usage of Keycloak is optional. Instead of keycloak, Atlassian Crowd can still be used for authentication. See documentation under ODS-Components → Provisioning App → Configuration Guide regarding the configuration of provisioning app. Setup of keycloak for local-installation is all done without further manual setup actions by starting the vagrant-box idmanager. User Password Roles admin admin keycloak admin There is (beside the master realm) one single OpenDevStack-specific realm: opendevstack. There are two OpenDevStack-specific groups inside the opendevstack realm: opendevstack-administrators opendevstack-users User Password Groups admin1 admin1 opendevstack-administrators opendevstack-users user1 user1 opendevstack-users There is one OpenDevStack-specific client inside the opendevstack realm: ods-provisioning-app. There is a protocoll mapper called Group Mapper that maps the user’s group membership to a token claim with name roles.","title":"Keycloak","component":"opendevstack","version":"3.x","name":"keycloak","url":"/opendevstack/3.x/administration/keycloak.html","titles":[{"text":"Realm master","hash":"_realm_master","id":1},{"text":"Users","hash":"_users","id":2},{"text":"Realm opendevstack","hash":"_realm_opendevstack","id":3},{"text":"Groups","hash":"_groups","id":4},{"text":"Users","hash":"_users_2","id":5},{"text":"Client ods-provisioning-app","hash":"_client_ods_provisioning_app","id":6}]},"79":{"id":79,"text":"In ODS 2, there was a central namespace cd, alongside 3 namespace dedicated to the provisioning app: prov-cd, prov-dev and prov-test. In ODS 3, there is only one namespace ods, which contains the whole OpenDevStack installation. When updating from ODS 2 to ODS 3, you will need to move the services running in cd, prov-cd and prov-test to ods. In detail: SonarQube is moving from cd to ods Nexus is moving from cd to ods Jenkins (Master and Webhook Proxy) is moving from prov-cd to ods Provisioning App is moving from prov-test to ods The Provisioning App will make use of the Jenkins instance in ods to provision new ODS projects. Apart from the instances, also all build configurations and image streams are moving from cd to ods, which means all users need to pull images from the new namespace. With that in mind, we can start the update procedure! Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. To do so, run the following and select the version you want to install (3.x). make sync-repos If your OpenDevStack installation is based on a custom branch (such as 3.acme), then you need to create a pull request on BitBucket from 3.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor. 3.x requires Tailor 1.2.2. Run: make prepare-config In 2.x, the Jenkins master base image was pulled from the openshift namespace. The agent base image could have been pulled from that namespace as well, or directly from a registry. In 3.x, the master can also be pulled directly from a registry. The advantage of this is that you do not need to worry about the import policy set in the openshift namespace, which can have suprising results (e.g. your base image never updating even though a fix has been released by RedHat). The behaviour is defined by a new configuration parameter, JENKINS_MASTER_BASE_FROM_IMAGE. Further, in 2.x you had to pick (via JENKINS_AGENT_BASE_IMAGE) whether you wanted to use Dockerfile.centos7 or Dockerfile.rhel7. However, both files contained the same instructions. Therefore, those were combined into a single Dockerfile and you only need to choose which base image to use via JENKINS_AGENT_BASE_FROM_IMAGE (like before). After you have updated/added/removed all parameters with your desired values, commit and push the result. Next you need to update all OpenShift resources (such as DC or BC). Review the diff produced by Tailor carefully before applying changes. In ods-core, run: make install-ods-project make install-jenkins make install-nexus make install-doc-gen In ods-quickstarters, run: make install-jenkins-agent With OpenDevStack version 3.x the \"production\" instance of the Provisioning App is moving from the prov-test to the ods namespace. The following steps describe how to perform the change: Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Install the Provisioning App in the ods namespace make install-provisioning-app Copy backed up data to new instance oc cp ./history ods/:/opt/provision Depending on your use of the Provisioning App you can either: delete all prov-* namespaces if you are only interested in running a \"production\" instance. only delete the data under /opt/provision/history in the prov-test namespace if you want to keep your setup. With OpenDevStack version 3.x SonarQube is moving from the cd namespace to the ods namespace. The following outlines the procedure for SonarQube: Create the SonarQube build resources in ods using make apply-sonarqube-build Start build of SonarQube image in ods using make start-sonarqube-build Scale down the SonarQube pod in cd Create a backup of the old data using make ODS_NAMESPACE=cd backup-sonarqube Create the SonarQube deploy resources in ods using make apply-sonarqube-deploy Scale down the SonarQube pod in ods Upload backup to new Postgres pod: oc -n ods cp sonarqube/sonarqube.sql :/var/lib/pgsql/ Start a bash in the Postgres pod: oc rsh -n ods pod/ bash and start a psql session. Drop the sonarqube database (DROP DATABASE sonarqube) and create a new, empty one (CREATE DATABASE sonarqube OWNER sonarqube). Then quit from psql. Import the backup with psql sonarqube System\". Then, start a bash in the SonarQube pod: oc rsh -n ods pod/ bash and remove /opt/sonarqube/data/es6. Afterwards, restart the server from the UI (there’s a button on the \"Administration > System\" page). Booting will take some time (depending on the amount of data to process) as a full re-index is performed. Call make configure-sonarqube to verify the new installation is correctly configured. Now delete the old SonarQube route in cd. Create a new route in ods with the same host as the old route so that projects using the old URL don’t break. Checking for secure routes has been removed from the core, but is still available at https://github.com/BIX-Digital/ods-contrib.","title":"","component":"opendevstack","version":"3.x","name":"update-2-to-3","url":"/opendevstack/3.x/administration/update-2-to-3.html","titles":[{"text":"New central namespace","hash":"_new_central_namespace","id":1},{"text":"Update your OpenDevStack repositories","hash":"_update_your_opendevstack_repositories","id":2},{"text":"Backup","hash":"_backup","id":3},{"text":"Tailor","hash":"_tailor","id":4},{"text":"Configuration","hash":"_configuration","id":5},{"text":"OpenShift resources","hash":"_openshift_resources","id":6},{"text":"Provisioning App changes","hash":"_provisioning_app_changes","id":7},{"text":"SonarQube changes","hash":"_sonarqube_changes","id":8},{"text":"Secure route removal","hash":"_secure_route_removal","id":9}]},"80":{"id":80,"text":"Learn all about how to update your OpenDevStack repositories and the running installation of it. Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. First, you need a clone of each repository in BitBucket which should be updated on your local machine. Once this has been done, you need to fetch new refs from github.com/opendevstack. To do so, add a remote pointing to it like this: git remote add ods https://github.com/opendevstack/.git Now you are ready to update the refs. It is recommended to update both the master branch and, unless you want to live off the bleeding edge, a release branch such as 2.x. Use the steps shown below: # Ensure you have the latest refs from ODS locally git fetch ods # Update master git checkout master git reset --hard ods/master git push origin master # Update 2.x git checkout 2.x git reset --hard ods/2.x git push origin 2.x If your OpenDevStack installation is based on a custom branch (such as 2.acme), then you need to create a pull request on BitBucket from 2.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Updating consists of two parts: following the general update procedure (applicable to all version updates) and a version specific update procedure. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor to the version corresponding to your new OpenDevStack version, which is noted at the start of each version specific update procedure. Then, update/add/remove the configuration parameters (located in ods-configuration). To do this, use the ./update script located in ods-core/configuration-sample. Next, run tailor update in ods-core and ods-quickstarters to bring all OCP resources (such as DC or BC) into sync. Review the diff produced by Tailor carefully, especially around changes to PVCs. After all OCP resources have been updated, you need to start a build for all build configs in the cd namespace to create new images. Also, the provisioning app should be updated. To do that, run tailor update in each ocp-config folder, and then trigger a build in Jenkins to redeploy the service. Now that the general procedure has been completed, you need to apply all the update notes below which apply to your version change. 2.x requires Tailor 0.11.0. Secure route checking has been removed for version 3.x as this is an optional step. The code now is available at https://github.com/BIX-Digital/ods-contrib. Go to ods-core/check-ocp-secure-routes/ocp-config and run tailor update to setup a cron job that will check exposed routes once a day (see https://github.com/opendevstack/ods-core/pull/280). As each project may use a specific CD user now, you have to configure the username of the global CD user. To do so, add username: Y2RfdXNlcg== to secret cd/cd-user-token. The shared-images namespace is no longer part of OpenDevStack. If you do not have any users that use images from that namespace, you may simply delete it via oc delete project shared-images. Otherwise, you can leave it in place and remote it when you see fit. Rundeck is longer part of OpenDevStack and can simply be removed. Images in the cd namespaces should be pullable from all authenticated users. This permission is required for the new project provisioning approach to work: oc adm policy add-cluster-role-to-group system:image-puller system:authenticated -n cd oc adm policy add-role-to-group view system:authenticated -n cd Further, -dev and -test namespaces should be able to pull images from the corresponding *-cd namespaces to make it easy to shared base images within a project (see https://github.com/opendevstack/ods-core/issues/293). It is recommended to grant these rights for every project in your cluster. If you don’t do this, users will have to add the permissions manually if they want to use this flow. 2.x allows the webhook proxy to build repositories in external projects if configured (see https://github.com/opendevstack/ods-core/issues/229). This feature is required for the new quickstarter provisioning approach to work. Therefore, it is recommended to tag a webhook proxy images built from the 2.x branch or v2.0 tag with latest so that all webhook proxies in the cluster get updated. Review the ConfigMap of the provisioning app in prov-dev and prov-test. Depending on your requirements, you might want to configure additional quickstarters (jenkinspipeline.quickstarter…​) and/or change the readable repositories of the project specific users (scm.global.readablerepos.opendevstack[x]) 1.2.x requires Tailor 0.10.2. The new functionality to create documents via Jenkins requires the presence of an image for the DocGen service. In an upcoming release, this will be integrated nicely. For 1.2.x, the image needs to be built once during the update procedure. The recommended way to do this is to build the image in the prov namespaces and then move the image tag into the cd namespace. The first step is to create a pipeline oc -n prov-cd process -f pipeline.yml --param REPO_BASE= --param TRIGGER_SECRET= | oc -n prov-cd create -f -, where pipeline.yml looks like this: apiVersion: v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: docgen-production spec: nodeSelector: {} output: {} postCommit: {} resources: {} runPolicy: Serial source: git: ref: production uri: ${REPO_BASE}/opendevstack/ods-document-generation-svc.git sourceSecret: name: cd-user-with-password type: Git strategy: jenkinsPipelineStrategy: jenkinsfilePath: Jenkinsfile type: JenkinsPipeline triggers: - generic: secret: ${TRIGGER_SECRET} type: Generic parameters: - name: TRIGGER_SECRET required: true - name: REPO_BASE required: true description: Path to repository, e.g. https://cd_user@bitbucket.domain.com/scm Then, create the BuildConfig and ImageStream in prov-dev using oc -n prov-dev process -f bc-is.yml | oc -n prov-dev create -f -, where bc-is.yml looks like this: apiVersion: v1 kind: Template objects: - apiVersion: v1 kind: BuildConfig metadata: creationTimestamp: null labels: app: prov-docgen name: docgen spec: failedBuildsHistoryLimit: 5 successfulBuildsHistoryLimit: 5 nodeSelector: null output: to: kind: ImageStreamTag name: docgen:latest postCommit: {} resources: {} runPolicy: Serial source: binary: {} type: Binary strategy: dockerStrategy: {} type: Docker triggers: [] - apiVersion: v1 kind: ImageStream metadata: labels: app: prov-docgen name: docgen spec: dockerImageRepository: docgen lookupPolicy: local: false Note that this points to the production branch of ods-document-generation-svc - ensure this branch is present. After all is setup, start a build in Jenkins, and then move the built image to the cd namespace: oc tag prov-dev/docgen:latest cd/docgen:latest 1.1.x requires Tailor 0.9.4. There are no further mandatory changes apart from the general procedure described above when updating from 1.0.x. Users are highly recommended to take a look at the updates done to the boilerplates, especially the Jenkinsfile and Dockerfile. E.g. the Python quickstarter is now building an image containing all dependencies instead of installing them during runtime. 1.0.x requires Tailor 0.9.3. There is a new webhook proxy now, which proxies webhooks sent from BitBucket to Jenkins. As well as proxying, this service creates and deletes pipelines on the fly, allowing to have one pipeline per branch. To update: Setup the image in the cd project by running tailor update in ods-core/jenkins/ocp-config. Build the image. Setup the webhook proxy next to each Jenkins instance. E.g., go to ods-project-quickstarters/ocp-templates/templates and run oc process cd//cd-jenkins-webhook-proxy | oc create -f- -n xyz-cd. Repeat for each project. For each component, follow the following steps: In Jenkinsfile: Set the shared library version to 1.0.x. Replace stageUpdateOpenshiftBuild with stageStartOpenshiftBuild. Remove stageCreateOpenshiftEnvironment and stageTriggerAllBuilds. Adapt the build logic to match the latest state of the quickstarter boilerplates. Remove verbose: true config (replace with debug: true if you want debug output). Configure branchToEnvironmentMapping, see README.md. If you used environment cloning, also apply the instructions for that. In docker/Dockerfile: Adapt the content to match the latest state of the quickstarter boilerplates. No Nexus upload build artifact is required anymore, use a copy in Jenkins shell command to docker folder (see in any boilerplate how it is done now). In BitBucket, remove the existing \"Post Webhooks\" and create a new \"Webhook\", pointing to the new webhook proxy. The URL has to be of the form https://webhook-proxy-$PROJECT_ID-cd.$DOMAIN?trigger_secret=$SECRET. As events, select \"Repository Push\" and \"Pull request Merged + Declined\". If you want to build the provisioning app automatically when commits are pushed to BitBucket, add a webhook as described in the previous section. 1.0.x makes use of the BUILD_URL env variable automatically set by Jenkins. This env variable might be null in your Jenkins master. To fix this, copy https://github.com/opendevstack/ods-core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovy into each Jenins master to /var/lib/jenkins/init.groovy.d/url.groovy. 1.0.x sets image labels on the BuildConfig in Jenkins. It does this by issuing a JSON patch replace request to /spec/output/imageLabels. This path was not present in prior versions, which can lead to the following error: Error from server: jsonpatch replace operation does not apply: doc is missing key: /spec/output/imageLabels. For newly provisioned components, this has been fixed with https://github.com/opendevstack/ods-project-quickstarters/pull/188. For existing components, add the path to the BuildConfig manually by editing the YAML in OpenShift.","title":"Update Guide for OpenDevStack administrators","component":"opendevstack","version":"3.x","name":"update-older","url":"/opendevstack/3.x/administration/update-older.html","titles":[{"text":"How to update your OpenDevStack repositories","hash":"_how_to_update_your_opendevstack_repositories","id":1},{"text":"How to update your OpenDevStack installation","hash":"_how_to_update_your_opendevstack_installation","id":2},{"text":"General update procedure","hash":"_general_update_procedure","id":3},{"text":"Backup","hash":"_backup","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Configuration","hash":"_configuration","id":6},{"text":"OCP resources","hash":"_ocp_resources","id":7},{"text":"Images","hash":"_images","id":8},{"text":"Provisioning App","hash":"_provisioning_app","id":9},{"text":"1.2.x to 2.x","hash":"_1_2_x_to_2_x","id":10},{"text":"Setup secure route checking","hash":"_setup_secure_route_checking","id":11},{"text":"Project specific CD users","hash":"_project_specific_cd_users","id":12},{"text":"Deprecation of shared-images namespace","hash":"_deprecation_of_shared_images_namespace","id":13},{"text":"Rundeck removal","hash":"_rundeck_removal","id":14},{"text":"Image puller rights","hash":"_image_puller_rights","id":15},{"text":"Rollout new webhook proxy instances","hash":"_rollout_new_webhook_proxy_instances","id":16},{"text":"Configure the provisioning app","hash":"_configure_the_provisioning_app","id":17},{"text":"1.1.x to 1.2.x","hash":"_1_1_x_to_1_2_x","id":18},{"text":"Prepare installation for release manager quickstarter","hash":"_prepare_installation_for_release_manager_quickstarter","id":19},{"text":"1.0.x to 1.1.x","hash":"_1_0_x_to_1_1_x","id":20},{"text":"0.1.0 to 1.0.x","hash":"_0_1_0_to_1_0_x","id":21},{"text":"Update xyz-cd projects","hash":"_update_xyz_cd_projects","id":22},{"text":"Update components (information for ODS users)","hash":"_update_components_information_for_ods_users","id":23},{"text":"Update provisioning app","hash":"_update_provisioning_app","id":24},{"text":"Fix Jenkins master BUILD_URL","hash":"_fix_jenkins_master_build_url","id":25},{"text":"Fix JSON patch replace error in Jenkins build","hash":"_fix_json_patch_replace_error_in_jenkins_build","id":26}]},"81":{"id":81,"text":"Learn all about how to make changes to OpenDevStack in your organisation and how to contribute those changes back upstream. This guides assumes you have followed the getting-started guide, and have cloned the ODS repositories to your local Bitbucket instance. For the rest of this guide, we will use \"ACME\" as the organisation name, which you will need to replace appropriately. Say you have encountered a bug, or want to develop a new feature. The first step is to implement the changes, and then try them out in your OpenDevStack instance. Those changes can then be contributed back (as described in the next section) unless they are specific to your organisation. To start, clone the repository where you want to make changes from your Bitbucket instance. The resulting repository will have its remote origin set to Bitbucket. Next, you need to create a new branch where changes can be made. This branch must be based on a clean state. This can either be the master branch (if you are tracking bleeding edge) or, more typically, a release branch (such as 2.x). Which one to use depends entirely on your organisation: it must be the branch on which the production branch in Bitbucket is based on. For example, if your OpenDevStack instance is based on 2.x, then you can create a new branch like this: # Ensure you have the latest refs git fetch # Create a branch based on 2.x - flag with bug / feature, e.g bug/fix-typo git checkout --no-track -b bug/fix-typo origin/2.x Once you have committed the desired changes, push your branch to Bitbucket: git push origin bug/fix-typo Afterwards, open a pull request. It is important that the target of the pull request is the production branch. That way, you do not pollute the ODS base branch (2.x) with changes. The production branch exists only in your Bitbucket instance, and it is the branch that e.g. OpenShift points to, and consequently is the branch where all your changes should end up in. When your changes have been tested and approved, you can merge the pull request in Bitbucket. At this stage, you are ready to push your work upstream as well - continue with the next section if you want to do this. As your base branch (i.e. master) is never polluted with local changes, every branch created from it is guaranteed to not contain any local changes, or changes to your OpenDevStack instance that you do not want to share publicly. To contribute your work, first you need to have a space in GitHub where you have permissions to push your changes to. Typically, this is a fork of the repository owned by github.com/opendevstack, located at the GitHub account of your organisation (e.g. github.com/acme). If this fork does not exist yet, create it on GitHub using the fork feature. Next, you will need to push your branch to that repository fork. Before you are able to do that, you need to add the fork as a new remote to your repository: git remote add acme https://github.com/acme/.git After that, you can push your changes there: git push acme bug/fix-typo Once pushed, GitHub suggests to open a pull request, and automatically sets the master branch of the repository owned by OpenDevStack as a target. This is usually what you want, but there might be cases where your fix is relevant only to a certain release branch of OpenDevStack, in which case you need to change the target to that branch. Note that if you have implemented a feature, it always has to target master. That means that if you did not base your branch on latest master originally, and your pull request shows a merge conflict, you need to cherry-pick (and adapt) your changes to a branch based on latest master in order to have it merged. In general, to get your changes approved by core members of OpenDevStack, please ensure the following: Before you make a bigger change, open a ticket first and discuss what you want to do before you actually do it. E.g. explain why this change is necessary / benefitial. Ensure to follow the guide above - branches containing unrelated commits or features targeting release branches etc. will not be approved. Adhere to the relevant coding standard: Java files must be in Google Java Style, ensured by google-java-format-1.6-all-deps.jar. Go files must be gofmt’d. Groovy files should follow the Apache Groovy Style guide. End all files with a newline character. See the POSIX definition of a line. Add a changelog entry, linking to your pull request. Next sequence diagram provides a graphical understanding on the steps to follow in order to add a new functionality to the OpenDevStack official repository from ACME’s private fork. The example is based on the assumption you want to contribute with a new feature from branch 2.x or tag v2.0","title":"Development Guide","component":"opendevstack","version":"3.x","name":"development","url":"/opendevstack/3.x/contributing/development.html","titles":[{"text":"How to make changes to OpenDevStack","hash":"_how_to_make_changes_to_opendevstack","id":1},{"text":"How to contribute changes upstream","hash":"_how_to_contribute_changes_upstream","id":2},{"text":"OpenDevStack branching flow for contributions","hash":"_opendevstack_branching_flow_for_contributions","id":3}]},"82":{"id":82,"text":"OpenDevStack documentation is build with Antora. As we release new versions of OpenDevStack with new or changed functionality and configuration, it should always be clear which documentation applies to which release. Thus we follow the philosophy: manage documetation as code. This means: Storing content in a version control system alongside with the code. Separating content, configuration, and presentation Reusing shared materials (Don’t repeat yourself) Antora is a static site generator by the folks behind the AsciiDoctor project that follows this practices. The engine converts a collection of version controlled documentation written in AsciiDoc into an HTML site. Documentation is spread across multiple repositories. In each repository, there is a docs folder containing the documentation. We use one \"distributed\" component named opendevstack (see Component structure documentation), and each docs folder adds one or more named modules into that component. The navigation for the component is located in the ods-core repository. Additionally, we have the ods-documentation repository which contains the Playbook and the ods-docs-ui repository containing UI customization. A guide for building the documentation locally is provided in the ods-documentation README. Issue a pull request against the repository containing the documentation you add / modify. Once this is merged, the documentation website will get updated automatically (via a daily cronjob). The documentation will be build on Travis and pushed back to the ods-documentation repository. The .travis.yml file is located in the ods-documentation project.","title":"The OpenDevStack documentation","component":"opendevstack","version":"3.x","name":"documentation","url":"/opendevstack/3.x/contributing/documentation.html","titles":[{"text":"Why we chose Antora","hash":"_why_we_chose_antora","id":1},{"text":"How is the documentation organized?","hash":"_how_is_the_documentation_organized","id":2},{"text":"How to build the site locally?","hash":"_how_to_build_the_site_locally","id":3},{"text":"How to contribute documentation","hash":"_how_to_contribute_documentation","id":4},{"text":"How is the documentation built on Github?","hash":"_how_is_the_documentation_built_on_github","id":5}]},"83":{"id":83,"text":"When we started with RedHat’s OpenShift we were blown away by the 100s of possibilities to use it, but there was not anything along the lines of \"This is how you make it work for your org\". Its catalog provides items for almost everything - yet what we wanted is to enable people to quickly introduce Continous Delivery and standardized technology archetypes. We call this lean, empowered governance. So what does OpenDevStack provide? Everyting you need for CI infrastructure (Jenkins images, SonarQube, Nexus). Ansible playbooks to install the Atlassian suite (Jira, Bitbucket, Confluence, Crowd). A shared jenkins library that harmonizes the way you build, test, govern and deploy. A set of technology quickstarters that provide complete CI/CD integration, w/o anything to worry about for the engineer. A small provisioning application that gives you one place to start, no matter if you want to start a new project, or enhance an existing one with a quickstarter. Trigger project creation through the provisioning application to get a new project. The web GUI of the provisioning app is located at https://prov-app-ods.example.com. When \"Create Openshift Project\" is checked, this will also create OpenShift projects, namely -dev and -test. A Jenkins deployment will be created in the -cd project to allow each project full freedom of build management. This deployment is based on a common Jenkins image from the central ODS namespace. Open the web GUI of the provisioning app https://prov-app-ods.example.com. Select your project, then choose a quickstarter. If no framework fits to your needs, choose the docker-plain quickstarter. After provisioning the quickstarter, you’ll have a new repository in your BitBucket project with the boilerplate of the component. From that, a Jenkins job is triggered automatically (via a webhook setup in Bitbucket) which builds and deploys the boilerplate application into the -dev project. Major releases of OpenDevStack happen roughly every half year. Each major release is identified by a version such as 2, 3, 4 and so on. As a consumer of OpenDevStack, you can either: point to master to follow the cutting edge point to 2.x, 3.x, etc. to stay on a major version, but get bug fixes (minor versions) point to v2.0, v3.0, etc. to pin an exact version use a custom branch / tag such as 2.acme or 3.custom etc. to run ODS with customizations A major update (e.g. 2.x to 3.x or 3.x to 4.x) is, from a user perspective, an explicit update. This means that even if admins update the ODS installation in the cluster, users still have to adopt that change (e.g. by updating their Jenkins image reference and so on). Therefore, a major version change is accompanied by an update guide like Update to 3.x. For admins, a major update might mean that configuration options have to be changed or migration steps to be taken, as well as rebuilding and rolling out all images etc. A minor update (consuming changes/bugfixs on a release branch such as 3.x). From a user perspective, this is an implicit update. This means that only admins have to make a change to the ODS installation in the cluster. Users must get those changes automatically, without the need to explicitly adopt it. Therefore, there is no update guide for minor updates. For admins, a minor update should not require changing configuration options nor performing migration steps - only rebuilding and rolling out some (or all) images should be needed. Each version is tracked as a GitHub project. The current major version is 3, the next one will be 4. Planned work (subject to change): OpenShift 4 support (keeping 3.11 compatibility) Support deploying to multiple Q/P clusters in the orchestration pipeline New/Reworked machine learning quickstarter Integration with Aqua Security Implement health checks for quickstarters Provisioning App: Support config of multiple identity providers and enable new UI by default Rename central namespace to ODS, and extend with running provisioning app Install provisioning app and document generation service from pre-built images Quickstarter pipeline Merge of MRO (now: orchestration pipeline) into general shared pipeline Automation of SonarQube and Nexus setup Decorate Bitbucket pull requests with SonarQube analysis Promote images between environments if possible (instead of rebuilding) New (single page) app user interface as optional feature Removal of Rundeck (replace with Jenkins jobs) New quickstarter concept (multiple repo support) Project specific technical users CPU and memory quota support Initial version of document generation service and MRO pipeline Incremental improvements. Initial release.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"Using OpenDevStack","hash":"_using_opendevstack","id":2},{"text":"Create a new project","hash":"_create_a_new_project","id":3},{"text":"Create a new component within a project (using a quickstarter)","hash":"_create_a_new_component_within_a_project_using_a_quickstarter","id":4},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":5},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":6},{"text":"Versioning","hash":"_versioning","id":7},{"text":"Roadmap","hash":"_roadmap","id":8},{"text":"4 (Target date: December 2020)","hash":"_4_target_date_december_2020","id":9},{"text":"3 (August 2020)","hash":"_3_august_2020","id":10},{"text":"2 (December 2019)","hash":"_2_december_2019","id":11},{"text":"1.2 (October 2019, using old versioning scheme)","hash":"_1_2_october_2019_using_old_versioning_scheme","id":12},{"text":"1.1 (June 2019, using old versioning scheme)","hash":"_1_1_june_2019_using_old_versioning_scheme","id":13},{"text":"1.0 (November 2018, using old versioning scheme)","hash":"_1_0_november_2018_using_old_versioning_scheme","id":14}]},"84":{"id":84,"text":"The ods-core repository contains a Makefile with several targets to maintain Jenkins images. Run make apply-jenkins-build. Run make start-jenkins-build-master. Run make start-jenkins-build-agent-base. Run make start-jenkins-build-webhook-proxy.","title":"Jenkins Administration","component":"opendevstack","version":"3.x","name":"administration","url":"/opendevstack/3.x/jenkins/administration.html","titles":[{"text":"Managing Jenkins build resources","hash":"_managing_jenkins_build_resources","id":1},{"text":"Building a new Jenkins Master image","hash":"_building_a_new_jenkins_master_image","id":2},{"text":"Building a new Jenkins Agent Base image","hash":"_building_a_new_jenkins_agent_base_image","id":3},{"text":"Building a new Jenkins Webhook Proxy image","hash":"_building_a_new_jenkins_webhook_proxy_image","id":4}]},"85":{"id":85,"text":"We have a base image for different jenkins agents. The concrete agent images are then configured as part of the quickstarters. The base image contains the following customizations: SonarQube Scanner SonarQube CNES Report Plugin Tailor Skopeo Snyk - used to scan and monitor projects vulnerable third-party dependencies (only installed if SNYK_DISTRIBUTION_URL is configured) Setting of enterprise proxy (based on HTTP_PROXY presence) Support for custom certificates (based on APP_DNS presence) When the container image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins agent works also on OpenShift clusters in enterprises that use a web proxy. The base jenkins agent is used by all ODS builder agents","title":"ODS Jenkins Agent base","component":"opendevstack","version":"3.x","name":"agent-base","url":"/opendevstack/3.x/jenkins/agent-base.html","titles":[]},"86":{"id":86,"text":"OpenDevStack provides several customized Jenkins container images based on the official OpenShift images.","title":"Jenkins","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/jenkins/index.html","titles":[]},"87":{"id":87,"text":"The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.18 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 workflow-cps-global-lib:2.13 junit:1.28 blueocean:1.18.0 workflow-durable-task-step:2.28 openshift-sync:1.0.44 Jenkins offers to deploy post-initialization scripts. Table 1. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins location based on the OpenShift route sonarqube.groovy Sets the SonarQube server URL and auth token based on the exposed environment variables ods-jenkins-shared-library.groovy Registers ods-jenkins-shared-library as a global library The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the SonarQube server. SONAR_AUTH_TOKEN this is the SonarQube auth token that is generated when deploying and configuring sonarqube Jenkins email notifications need manual configuration: The SMTP server parameters that need to be defined are found under menu option: Jenkins → Manage Jenkins → Configure System → Extended E-mail Notification It is also mandatory to define the System Admin e-mail address, this is defined under menu option: Jenkins → Manage Jenkins → Configure System → Jenkins Location Once Jenkins is configured, you will also need to define the recipients of the email notifications by definining emailextRecipients parameter in your odsComponentPipeline context, in your components' Jenkinsfile, like: ... odsComponentPipeline( ... emailextRecipients: ['email1@foo.bar', 'email2@foo.bar'], ... ) { context -> ...","title":"Jenkins Master","component":"opendevstack","version":"3.x","name":"master","url":"/opendevstack/3.x/jenkins/master.html","titles":[{"text":"Configured Plugins","hash":"_configured_plugins","id":1},{"text":"Init scripts","hash":"_init_scripts","id":2},{"text":"Email notifications","hash":"_email_notifications","id":3}]},"88":{"id":88,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables can be set on the DeploymentConfig and are read by the webhook proxy: Variable Description ACCEPTED_EVENTS Comma-separated list of handled Bitbucket events. Defaults to repo:refs_changed,pr:declined,pr:merged,pr:deleted. ALLOWED_CHANGE_REF_TYPES Comma-separated list of Bitbucket change refs. Defaults to BRANCH, which means tags do not create pipelines nor forward to them. If you want this to happen, specify e.g. BRANCH,TAG. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. For security reasons, by default the webhook proxy allows only its own project and the opendevstack project to be passed as a project parameter. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be removed after they have been merged. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"3.x","name":"webhook-proxy","url":"/opendevstack/3.x/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"89":{"id":89,"text":"","title":"Nexus","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/nexus/index.html","titles":[]},"90":{"id":90,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"3.x","name":"sysenv-requirements","url":"/opendevstack/3.x/ods-core/sysenv-requirements.html","titles":[]},"91":{"id":91,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a agent pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"3.x","name":"troubleshooting","url":"/opendevstack/3.x/ods-core/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins agent - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_agent_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"92":{"id":92,"text":"The ods-core repository contains a build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this document describes how that setup is done. Run make start-sonarqube-build. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OpenShift project cd, inside the sonarqube-app secret.","title":"SonarQube Administration","component":"opendevstack","version":"3.x","name":"administration","url":"/opendevstack/3.x/sonarqube/administration.html","titles":[{"text":"Building a new SonarQube image","hash":"_building_a_new_sonarqube_image","id":1},{"text":"Administration","hash":"_administration","id":2}]},"93":{"id":93,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This file needs to be located in the root of the repository you want to have analysed. For example: # Project Key (required) sonar.projectKey=test-spring-boot # Project Name (optional, this is what is shown in the main list) sonar.projectName=test-spring-boot # Comma-separated paths to directories with sources (required) sonar.sources=src # Forced Language (optional) sonar.language=java # Encoding of the source files (optional but recommended as default is ASCII) sonar.sourceEncoding=UTF-8 # Plugin-specific settings sonar.java.binaries=build/classes sonar.java.libraries=build/libs sonar.junit.reportPaths=build/test-results/test The general settings are documented at https://docs.sonarqube.org/display/SONAR/Analysis+Parameters. Plugin-specific parameters can be found in the docs for each plugin, e.g. https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode. There’s a prebuilt stage (odsComponentStageScanWithSonar) that you can use, see https://www.opendevstack.org/ods-documentation/ods-jenkins-shared-library/latest/index.html for details. The team behind SonarQube also published SonarLint, a plugin currently available for IntelliJ, Eclipse, Visual Studio, VS Code and Atom that lets you scan while coding in your IDE. It also integrates with a SonarQube Server, so that you can scan with the servers rule settings. For further information please see https://www.sonarlint.org/intellij/howto.html. For the server connected mode, the SonarQube URL has to be set to your SonarQube deployment. Be aware that this does not connect you with the SonarQube Server in OpenShift, therefore you might have other rule settings locally than the ones set on server. That said, here’s what you need to do on your host to have a local SonarQube instance: docker pull sonarqube docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube ./gradlew sonarqube Running these commands will let you see at http://localhost:9000 your project reports, for any branch. Please, note that you are not running with an embedded database in this case, so it is only for temporary testing, do not expect historic report.","title":"SonarQube","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/sonarqube/index.html","titles":[{"text":"sonar-project.properties file","hash":"_sonar_project_properties_file","id":1},{"text":"Scanning in Jenkins pipelines","hash":"_scanning_in_jenkins_pipelines","id":2},{"text":"Scanning locally: SonarLint IDE Plugin","hash":"_scanning_locally_sonarlint_ide_plugin","id":3},{"text":"Scanning locally: SonarQube Docker Container","hash":"_scanning_locally_sonarqube_docker_container","id":4}]},"94":{"id":94,"text":"Table of Contents Required steps Update image tags of Jenkins deployments Update Jenkinsfiles in Git repositories Grant image-puller rights to your *-cd namespace Component resource constraints Notable changes Component deployment behaviour Jenkins slave NodeJS 8 New Tailor version Deprecation of shared-services namespace New features SonarQube quality gates Skopeo Common / Known Issues Learn all about how to update your OpenDevStack based project to ODS 2.x. It is assumed that you are updating from ODS 1.2.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (2.x), and trigger a deployment. Edit every Jenkinsfile. The shared library should point to 2.x, e.g.: library identifier: 'ods-library@2.x', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) Also, the image used to run the pipeline in should point to 2.x, e.g.: odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven:2.x\", ... ) This step is not strictly necessary, but recommended as projects created with version 2.x will have those rights by default. Having this setup will enable you to use the *-cd namespace for common base images to reduce build times. Run the following, replacing $PROJECT_ID with your project ID: oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-test -n $PROJECT_ID-cd oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-dev -n $PROJECT_ID-cd Note that you need to be an admin on your project in order to run those commands. For more information, see ods-core#293. Newly created components now have memory quotas (ods-quickstarters#12) and CPU quotas (ods-quickstarters#74) configured. It is recommended (though not required) to configure resource constraints for existing components as well. If you are unsure which values to set, refer to the new defaults and check the current usage in the \"Metrics\" section in OpenShift. In the shared library, rollouts will be triggered manually now when no config/image trigger exists on the DeploymentConfig. The cd/jenkins-slave-nodejs8-angular image has been discontinued. Please update to cd/jenkins-slave-nodejs10-angular. For more information, see ods-quickstarters#71. Tailor has been updated to 0.11.0 in the Jenkins slaves, see ods-core#290. The shared-images namespace (containing common base images) has been removed from new ODS 2.0 installation. For existing installations, it is likely being kept for some time by the cluster administrator to enable users to react to this change. If you use a component based on the ds-jupyter-notebook or ds-rshiny quickstarters, you should switch to using the new authentication approach, which is uing an OpenShift OAuth proxy instead of a Nginx service. See ods-quickstarters#46. If you use the Airflow Quickstarter, its base images should now be built in your *-cd namespace See ods-quickstarters#60. It is now possible to opt-in to failing the build if the SonarQube scan fails the quality gate defined in SonarQube. To enable this, change the call of stageScanForSonarqube(context) to stageScanForSonarqube(context, true). For more information, see ods-jenkins-shared-library#22. When working with images, you may make use of Skopeo, which is now part of the Jenkins slaves. See ods-core#253. When provisioning new components, you must use a name that differs from the component type, otherwise some quickstarters fail. E.g. when creating a new component of type fe-react, you cannot name it fe-react but must choose another name like my-app. For more information, see https://github.com/opendevstack/ods-provisioning-app/issues/336.","title":"Update Guide to version 2.x for OpenDevStack users","component":"opendevstack","version":"3.x","name":"2x","url":"/opendevstack/3.x/update-guides/2x.html","titles":[{"text":"Required steps","hash":"_required_steps","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Update Jenkinsfiles in Git repositories","hash":"_update_jenkinsfiles_in_git_repositories","id":3},{"text":"Grant image-puller rights to your *-cd namespace","hash":"_grant_image_puller_rights_to_your_cd_namespace","id":4},{"text":"Component resource constraints","hash":"_component_resource_constraints","id":5},{"text":"Notable changes","hash":"_notable_changes","id":6},{"text":"Component deployment behaviour","hash":"_component_deployment_behaviour","id":7},{"text":"Jenkins slave NodeJS 8","hash":"_jenkins_slave_nodejs_8","id":8},{"text":"New Tailor version","hash":"_new_tailor_version","id":9},{"text":"Deprecation of shared-services namespace","hash":"_deprecation_of_shared_services_namespace","id":10},{"text":"New features","hash":"_new_features","id":11},{"text":"SonarQube quality gates","hash":"_sonarqube_quality_gates","id":12},{"text":"Skopeo","hash":"_skopeo","id":13},{"text":"Common / Known Issues","hash":"_common_known_issues","id":14}]},"95":{"id":95,"text":"Table of Contents New central ods namespace Update image tags of Jenkins deployments Jenkins Shared Library changes Renamed pipelines and stages Reduced boilerplate Changed agent images Changed context properties Different image tags Changes to Jenkins agent images General upgrade to Python 3.8 Airflow Cluster Jenkins agent no longer supported Learn all about how to update your OpenDevStack based project to ODS 3.x. It is assumed that you are updating from ODS 2.x. One of the biggest changes in ODS 3 is that there is a new central namespace, named ods. This namespace hosts the complete ODS installation, such as a provisioning app, Nexus, SonarQube, and images for Jenkins (master and agent). This central namespace replaces the previous namespaces cd (which hosted Nexus, SonarQube, etc.) as well as prov-test, prov-dev and prov-cd (which hosted the provisioning app). As a user, you will be affected by this change insofar as the images you use for the Jenkins master instance and Jenkins agent nodes will need to be retrieved from ods instead of cd (see next section). Further, depending on the migration done by the administrator, the URLs of Nexus, SonarQube and the provisioning app might have changed. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (3.x), and trigger a deployment. Note that you also need to change the namespace of the images from cd to ods (see above). Since ODS 2, it is also recommended to remove any image triggers from jenkins and webhook-proxy, so that any image changes are only rolled out by yourself. If you choose to remove the image trigger, ensure that the imagePullPolicy is set to Always to always get the latest 3.x image when you deploy. If the administrator of your ODS cluster chose to use a custom Bitbucket project for the 3.x installation, then you’ll need to set the environment variable ALLOWED_EXTERNAL_PROJECTS= for the webhook-proxy DeploymentConfig. Otherwise you will not be able to provision quickstarters. 3.x ships with the three pipelines instead of just one. In 2.x, the shared library offered one pipeline to build components, named odsPipeline. This has been renamed to odsComponentPipeline to make its purpose clearer and to distinguish it from the other pipelines, odsQuickstarterPipeline (to provision quickstarters) and odsOrchestrationPipeline (to orchestrate multiple repositories using the release manager). To provide backwards compatibility, odsPipeline is still available, but deprecated and will be removed in ODS 4. In line with this change, the stages have been renamed too, which also makes them easier to distinguish from custom stages written by yourself in the Jenkinsfile. As with the pipeline, the old stages are still available but slated for removal in ODS 4. Here’s a list of the changes: stageScanForSonarqube is now odsComponentStageScanWithSonar stageScanForSnyk is now odsComponentStageScanWithSnyk stageStartOpenshiftBuild is now odsComponentStageBuildOpenShiftImage stageDeployToOpenshift is now odsComponentStageRolloutOpenShiftDeployment stageUploadToNexus is now odsComponentStageUploadToNexus Please note the new casing (e.g. OpenShift instead of Openshift). Further, the new stages all take the same two arguments: IContext context and Map config = [:]. Please see the documentation for details. In particular, some options which would previously have been set on odsPipeline can and should be set on the stage where they are used (however all options have been kept for backwards compatibility). A Jenkinsfile in 2.x looks roughly like this: def final projectId = 'foo' def final componentId = 'bar' def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def dockerRegistry node { dockerRegistry = env.DOCKER_REGISTRY } @Library('ods-jenkins-shared-library@2.x') _ odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-golang:2.x\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: ['master': 'dev'] ) { context -> stageScanForSonarqube(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) } That is a lot of boilerplate. 3.x reduces this dramatically: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: ['master': 'dev'] ) { context -> odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) odsComponentStageRolloutOpenShiftDeployment(context) } Note that the new Jenkinsfile example already uses the new pipeline/stage names as outlined above. Apart from this, it makes use of a new config option, imageStreamTag which removes the need to read the DOCKER_REGISTRY environment variable. If you need it, the image config is still present (e.g. to reference images outside of OpenShift). projectId and componentId are now automatically configured, but can still be set if desired. Up to and including 2.x, Jenkins used \"slave images\" to do its work. They have been renamed to \"agent images\" in 3.x. All new agent images are located in the new central namespace ods. Therefore, you need to update the references in your Jenkinsfile (as shown above): cd/jenkins-slave-base is now ods/jenkins-agent-base cd/jenkins-slave-golang is now ods/jenkins-agent-golang cd/jenkins-slave-maven is now ods/jenkins-agent-maven cd/jenkins-slave-nodejs10-angular is now ods/jenkins-agent-nodejs10-angular cd/jenkins-slave-python is now ods/jenkins-agent-python cd/jenkins-slave-scala is now ods/jenkins-agent-scala The context object available to use in stages has been slimmed down by removing properties unlikely to be useful to author stages (such as resource constraints of the Jenkins agent pod). Please review the documentation in case your authored stages make heavy use of the context object. One notable change to the context object is that bitbucketHost did not include the scheme previously. Now, bitbucketHost is an alias for bitbucketUrl which does include the scheme. This change was made to align the property with nexusHost and nexusUrl, which both include the scheme as well. If you used context.bitbucketHost in one of your Jenkinsfile`s, you may now use `context.bitbucketHostWithoutScheme. A notable addition to the context object is a new property issueId, which exposes the Jira issue ID (such as 123 from branch feature/FOO-123-bar-baz). Previously, images produced by odsComponentStageBuildOpenShiftImage where tagged with context.tagversion, which consisted of the Jenkins build number and the (shortened) Git commit (e.g. 7-cd3e9082). This made it difficult for other processes (unaware of the Jenkins build number) to find those images. The images are now tagged with just the (shortened) Git commit (e.g. cd3e9082). This change also has the huge benefit that it allows to promote images between environments (avoiding to rebuild them) using the new stage odsComponentStageImportOpenShiftImageOrElse. Some agent images (jenkins-agent-maven, jenkins-agent-nodejs10-angular, jenkins-agent-scala) exposed the environment variables NEXUS_HOST and NEXUS_USERNAME/NEXUS_PASSWORD/NEXUS_AUTH. This was not done intentionally, but as a side effect of using those variables during image build time. In 3.x, that has been cleaned up. Now those variables are passed as build arguments to the image build, which means they are no longer accessible as environment variables in the running container. Nexus credentials can and should be accessed from the pipeline context (context.nexusUrl, context.nexusUsername and context.nexusPassword). As a consequence, if a Jenkinsfile relies on the presence of those environment variables without setting them explicitly using withEnv, it will fail to run in 3.x. That said, the Jenkinsfile templates which shipped by default with the quickstarters did not rely on the environment variables - with the exception of fe-ionic which did not set NEXUS_HOST explicitly in the Build stage. Jenkins agent jenkins-agent-python as well as all python related quickstarters (be-python-flask, ds-jupyter-notebook and ds-ml-service) have been upgraded to python 3.8. This is not affecting default provisioned Jenkinsfile for ds-jupyter-notebook nor be-python-flask quickstarters that exist before ODS 3.x. But, ds-ml-service provisoned quickstarters before ODS 3.x need to slightly modify its Jenkinsfile before upgrading to ODS 3.x by just avoiding running any pip install --user (see new Jenkinsfile.template to get a suggested fix, basically using virutalenv; which is the recommended way of working when requiring building python packages). If you provisioned airflow-cluster quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. Therefore, the jenkins-slave-airflow:2.x can be shifted to jenkins-agent-python:3.x when upgrading to ODS 3.x.","title":"Update Guide to version 3.x for OpenDevStack users","component":"opendevstack","version":"3.x","name":"3x","url":"/opendevstack/3.x/update-guides/3x.html","titles":[{"text":"New central ods namespace","hash":"_new_central_ods_namespace","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Jenkins Shared Library changes","hash":"_jenkins_shared_library_changes","id":3},{"text":"Renamed pipelines and stages","hash":"_renamed_pipelines_and_stages","id":4},{"text":"Reduced boilerplate","hash":"_reduced_boilerplate","id":5},{"text":"Changed agent images","hash":"_changed_agent_images","id":6},{"text":"Changed context properties","hash":"_changed_context_properties","id":7},{"text":"Different image tags","hash":"_different_image_tags","id":8},{"text":"Changes to Jenkins agent images","hash":"_changes_to_jenkins_agent_images","id":9},{"text":"General upgrade to Python 3.8","hash":"_general_upgrade_to_python_3_8","id":10},{"text":"Airflow Cluster Jenkins agent no longer supported","hash":"_airflow_cluster_jenkins_agent_no_longer_supported","id":11}]},"96":{"id":96,"text":"This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: [ 'master': 'dev', // 'release/*': 'test' ] ) { context -> odsComponentStageImportOpenShiftImageOrElse(context) { stage('Build') { // custom stage } odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) } odsComponentStageRolloutOpenShiftDeployment(context) } The version in @Library can be any Git revsison, such as a branch (e.g. master or 2.x), a tag (e.g. v2.0) or even a specific commit. There are many built-in stages like odsComponentStageScanWithSonar that you can use, please see Stages for more details. odsComponentPipeline can be customized by passing configuration options like this: odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', dockerDir: 'foo' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10mi. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300mi. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. notifyNotGreen Whether to send notifications if the build is not successful. Enabled by default. emailextRecipients Notify to this list of emails when notifyNotGreen is enabled. It is empty by default. branchToEnvironmentMapping Define which branches are deployed to which environments, see Git Workflow / Branch to Environment Mapping autoCloneEnvironmentsFromSourceMapping Define which environments are cloned from which source environments. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. environmentLimit Number of environments to allow when auto-cloning environments. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. imagePromotionSequences Sequence of environments between which images can be promoted in odsComponentStageImportOpenShiftImageOrElse. Defaults to ['dev→test', 'test→prod']. sonarQubeBranch Please use option branch on odsComponentStageScanWithSonar. failOnSnykScanVulnerabilities Deprecated in 3.x! Please use option failOnVulnerabilities on odsComponentStageScanWithSnyk. openshiftBuildTimeout Deprecated in 3.x! Please use option buildTimeoutMinutes on odsComponentStageBuildOpenShiftImage. openshiftRolloutTimeout Deprecated in 3.x! Please use option deployTimeoutMinutes on odsComponentStageRolloutOpenShiftDeployment. testResults Configurable location for xunit test results, in case the build does not put them into build/test-results/test. When you write custom stages inside the closure passed to odsComponentPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsComponentPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsComponentPipeline starts. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. nexusUrl Nexus URL - value taken from NEXUS_URL. If NEXUS_URL is not present, it will default to NEXUS_HOST (which also includes the scheme). nexusHost is an alias for nexusUrl. nexusUsername Nexus username. nexusPassword Nexus password. nexusUrlWithBasicAuth Nexus URL, including username and password as BasicAuth. nexusHostWithBasicAuth is an alias for nexusUrlWithBasicAuth. sonarQubeEdition Edition of SonarQube in use, determined by SONAR_EDITION (defaults to community). cloneSourceEnv The environment which was chosen as the clone source. environment The environment which was chosen as the deployment target, e.g. dev. targetProject Target project, based on the environment. E.g. foo-dev. groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. shortGitCommit Short Git commit SHA (first 8 chars) to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message (sanitized). gitCommitRawMessage Git commit message (raw). gitCommitTime Git commit time in RFC 3399. issueId Jira issue ID if any present in the branch name (e.g. 123 from branch feature/FOO-123-bar-baz). openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. imagePromotionSequences Sequence of environments between which images can be promoted. Used e.g. in odsComponentStageImportOpenShiftImageOrElse. Defaults to ['dev→test', 'test→prod']. The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the pipeline according to your needs by configuring the pipeline option branchToEnvironmentMapping. The setting could look like this: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'hotfix/': 'hotfix', '*': 'review' ] There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OpenShift. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OpenShift. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: node { dockerRegistry = env.DOCKER_REGISTRY } // ... odsComponentPipeline( branchToEnvironmentMapping: [:], podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${dockerRegistry}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if Bitbucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate By default, the component pipeline uses existing OpenShift resources, and just creates new images / deployments related to them. However, it is possible to control all OpenShift resources in code, following the infrastructure-as-code approach. This can be done by defining the resources as OpenShift templates in the directory openshift of the repository, which will then get applied by Tailor when running the pipeline. The advantage of this approach: All changes to OpenShift resources are traceble: who did the change and when? Moving your application between OpenShift projects or even clusters is trivial Changes to your application code that require a change in configuration (e.g. a new environment variable) as well can be done together in one commit. If you have an existing component for which you want to enable this feature, you simply need to run: mkdir -p openshift tailor -n foo-dev export -l app=foo-bar > openshift/template.yml Commit the result and the component pipeline should show in the ouput whether there has been drift and how it was reconciled. When using this approach, you need to keep a few things in mind: Any changes done in the OpenShift web console will effectively be reverted with each deploy. When you store templates in code, all changes must be applied to them. You can always preview the changes that will happen by running tailor diff from your local machine. DeploymentConfig resources allow to specify config and image triggers (and ODS configures them by default like this). When deploying via Tailor, it is recommended to remove the image trigger, otherwise you might trigger two deployments: one when config (such as an environment variable) changes, and one when the image changes. When you remove the image trigger, it is crucial to add the internal registry to the image field, and to configure imagePullPolicy: Always for the container (otherwise you might roll out old images). If you want to use encrypted secrets with Tailor, you have to create a keypair for Jenkins so that the pipeline can use it to decrypt the parameters. The easiest way to do this is to create an OpenShift secret named tailor-private-key and sync it with Jenkins as a credential. Example: tailor secrets generate-key jenkins@example.com oc -n foo-cd create secret generic tailor-private-key --from-file=ssh-privatekey=private.key oc -n foo-cd label secret tailor-private-key credential.sync.jenkins.openshift.io=true Controlling your OpenShift resources in source code enables a lot of other use cases as well. For example, you might want to preview changes to a component before merging the source code. By using Tailor to deploy your templates, you can create multiple running components from one repository, e.g. one per feature branch. Following are some steps how to achieve this: First, add 'feature/': 'dev' to the branchToEnvironmentMapping. Then, create new variables in the pipeline block: def componentSuffix = context.issueId ? \"-${context.issueId}\" : '' def suffixedComponent = context.componentId + componentSuffix With this in place, you can adapt the rollout stage: odsComponentStageRolloutOpenShiftDeployment( context, [ resourceName: \"${suffixedComponent}\", tailorSelector: \"app=${context.projectId}-${suffixedComponent}\", tailorParams: [\"COMPONENT_SUFFIX=${componentSuffix}\"] ] ) And finally, in your openshift/template.yml, you need to add the COMPONENT_SUFFIX parameter and append ${COMPONENT_SUFFIX} everywhere the component ID is used in deployment relevant resources (such as Service, DeploymentConfig, Route). That’s all you need to have automatic previews! You might want to clean up when the code is merged, which can be achieved with something like this: stage('Cleanup preview resources') { if (context.environment != 'dev') { echo \"Not performing cleanup outside dev environment\"; return } def mergedIssueId = org.ods.services.GitService.mergedIssueId(context.projectId, context.repoName, context.gitCommitRawMessage) if (mergedIssueId) { echo \"Perform cleanup of suffix '-${mergedIssueId}'\" sh(\"oc -n ${context.targetProject} delete all -l app=${context.projectId}-${context.componentId}-${mergedIssueId}\") } else { echo \"Nothing to cleanup\" } } The shared library already sets the build status of the built commit. It also provides three convenience methods on BitbucketService to interact with pull requests: String getPullRequests(String repo, String state = 'OPEN') returns all open pull requests, which can be parsed using readJSON. Map findPullRequest(String repo, String branch, String state = 'OPEN') tries to find a pull request for the given branch, and returns a map with its ID and target branch. void postComment(String repo, int pullRequestId, String comment) allows to add comment to the PR identified by pullRequestId. To make use of these methods, you need to get an instance of the BitbucketService in your Jenkinsfile like this: Jenkinsfile import org.ods.services.ServiceRegistry import org.ods.services.BitbucketService def sayHello(def context) { stage('Say Hello') { def bitbucketService = ServiceRegistry.instance.get(BitbucketService) bitbucketService.postComment(context.repoName, 1, \"Hello world\") } } If the message of the built commit contains [ci skip], the pipeline is skipped. The Jenkins build status will be set to NOT_BUILT, the Bitbucket build status to SUCCESSFUL (as there is no \"skipped\" state). The pipeline will start to execute initially, but abort before launching any agent nodes or starting any of the stages defined in the Jenkinsfile. Caution! Cloning environments on-the-fly is an advanced feature and should only be used if you understand OpenShift well, as there are many moving parts and things can go wrong in multiple places. Example: autoCloneEnvironmentsFromSourceMapping: [ \"hotfix\": \"prod\", \"review\": \"dev\" ] Instead of deploying multiple branches to the same environment, individual environments can be created on-the-fly. For example, the mapping \"*\": \"review\" deploys all branches to the review environment. To have one environment per branch / ticket ID, you can add the review environment to autoCloneEnvironmentsFromSourceMapping, e.g. like this: \"review\": \"dev\". This will create individual environments (named e.g. review-123 or review-foobar), each cloned from the dev environment. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] autoCloneEnvironmentsFromSourceMapping: [ 'rel': 'dev', 'hotfix': 'prod', 'preview': 'dev' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] autoCloneEnvironmentsFromSourceMapping: [ 'preview': 'prod' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] autoCloneEnvironmentsFromSourceMapping: [ 'uat': 'prod' ] Each built-in stage (like odsComponentStageScanWithSonar) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsComponentStageScanWithSonar(context, [branch: 'production']) The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the sonar-project.properties file in the repository being built. If your SonarQube server edition allows to scan multiple branches (any commercial edition does), then this stage will automatically decorate pull requests in Bitbucket with feedback from SonarQube (if the PR already exists at the time of the Jenkins pipeline run). In debug mode, the sonar-scanner binary is started with the -X flag. If no sonar.projectVersion is specified in sonar-project.properties, it is set to the shortened Git SHA. Available options: Option Description branch Branch(es) to scan. This can be a comma separated list. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). requireQualityGatePass Whether to fail the build if the quality gate defined in the SonarQube project is not reached. Defaults to false. analyzePullRequests Whether to analyze pull requests and decorate them in Bitbucket. Turned on by default, however a scan is only performed if the branch property allows it. longLivedBranches Branch(es) for which no PR analysis should be performed. If not set, it will be extracted from branchToEnvironmentMapping of the context. The \"Snyk Security Scan\" stage performs two tasks: It uploads your 3rd party dependencies including their licenses for monitoring. Snyk will then notify developers about new vulnerabilities per email once they are reported to the Snyk Vulnerability Database. It analyses your 3rd party dependencies including their licenses and breaks the build if vulnerable versions are found. To get started, setup an organisation in snyk.io with exactly the same name as your ODS project name. Under \"Settings\", create a service account for this organisation and make a note of the displayed token. Edit your Jenkinsfile and add the Snyk stage: ) { context -> ... odsComponentStageScanWithSnyk(context, [snykAuthenticationCode: ]) ... } It is recommended to read your authentication token dynamically, e.g. from an environment variable or a credential in your Jenkins master. Available options: Option Description snykAuthenticationCode Required! Authentication token of a service account within your organisation. failOnVulnerabilities Whether to fail the build when vulnerabilities are found. Defaults to true. organisation Name of the Snyk organisation. Default to context.projectId. projectName Name of the Snyk project name. Default to context.componentId. buildFile Build file from which to gather dependency information. Defaults to build.gradle. branch Branch(es) to scan. This can be a comma separated list. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (). Defaults to . severityThreshold Severity threshold for failing. If any found vulnerability has a severity equal or higher to the threshold, the snyk test will return with a failure status. Possible values are low, medium, high. Defaults to low. Triggers (and follows) a build in the BuildConfig related to the repository being built. The resulting image is tagged with context.shortGitCommit. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Available options: Option Description resourceName Name of BuildConfig/ImageStream to use (defaults to context.componentId). imageTag Image tag to apply (defaults to context.shortGitCommit). buildArgs Pass build arguments to the image build process. imageLabels Pass labels which should be aded on the image. Each label will be prefixed with ext.. extensionImageLabels Extra image labels added into imageLabels buildTimeoutMinutes Timeout of build (defaults to 15 minutes). dockerDir Docker context directory (defaults to docker). openshiftDir Directory with OpenShift templates (defaults to openshift). tailorPrivateKeyCredentialsId Credentials name of the secret key used by Tailor (defaults to -cd-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector Selector scope used by Tailor (defaults to app=-). Only relevant if the directory referenced by openshiftDir exists. tailorVerify Whether Tailor verifies the live configuration against the desired state after application (defaults to false). Only relevant if the directory referenced by openshiftDir exists. tailorInclude Resource kind restriction used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve Paths to preserve in the live configuration (defaults to ['bc:/spec/output/imageLabels', 'bc:/spec/output/to/name']). Only relevant if the directory referenced by openshiftDir exists. tailorParams Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. Imports an image from another namespace. By default, the source image is identified using the commit which triggered the pipeline run. Available options: Option Description resourceName Name of ImageStream to use (defaults to context.componentId). sourceProject OpenShift project from which to import the image identified by resourceName. sourceTag Image tag to look for in the sourceProject (defaults to context.shortGitCommit). targetTag Image tag to apply to the imported image in the target project (defaults to sourceTag). Imports an image from another namespace if possible, otherwise execute the given closure. Example: odsComponentStageImportOpenShiftImageOrElse(context) { stage('Build') { // custom stage to build your application package } odsComponentStageBuildOpenShiftImage(context) } The stage takes the exact same options as odsComponentStageImportOpenShiftImage. Before running the image import, it checks whether the image (identified by the sourceTag) is present in a suitable project. This is the current target project, and potentially one or more specified by the pipeline option imagePromotionSequences. For example, if imagePromotionSequences is ['dev→test', 'test→prod'] (which is the default setting), then, given the current target environment is test, suitable environments are dev (based on dev→test), and test itself. If the image is not present in a suitable project, the given closure is executed. Using this \"stage\" allows you to avoid building a container image for the same Git commit multiple times, reducing build times and increasing reliability as you can promote the exact same image from one environment to another. Keep in mind that image lookup works by finding an image tagged with the current Git commit. If you merge a branch into another using a merge commit, the current Git commit will differ from the previously built image tag, even if the actual contents of the repository are the same. To ensure image importing kicks in, use the --ff-only option on git merge (this can also be enabled for pull requests in Bitbucket under \"Merge strategies\"). There are a few consequences when doing so, which should be kept in mind: No merge commit is created, which has the downside that you do not see when a PR was merged, and that the merge commit is a convenient way to find the associated PR. However, it has the upside that your Git history is not polluted by merge commits. Enforcing a fast-forward merge prevents you from merging a branch which is not up-to-date with the target branch. This has the downside that before merging, you may need to rebase your branch or merge the target branch into your branch if someone else updated the target branch in the meantime. While this may cause extra work, it has the upside that you cannot accidentally break the target branch (e.g. tests on your branch may work based on the outdated target branch, but fail after the merge). In summary, using git merge --ff-only provides safety, a clean history and allows to promote the exact same image between environments. Triggers (and follows) a rollout of the DeploymentConfig related to the repository being built. It achieves this by tagging the image built in odsComponentStageBuildOpenShiftImage with latest. This might already trigger a rollout based on an existing ImageTrigger. If none is set, the stage will start a manual rollout. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In this case, it is recommended to remove any image triggers to avoid duplicate rollouts (one when configuration changes due to a config trigger and one when the image is tagged to latest). In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Available options: Option Description resourceName Name of DeploymentConfig to use (defaults to context.componentId). imageTag Image tag on which to apply the latest tag (defaults to context.shortGitCommit). deployTimeoutMinutes Adjust timeout of rollout (defaults to 5 minutes). Caution: This needs to be aligned with the deployment strategy timeout (timeoutSeconds) and the readiness probe timeouts (initialDelaySeconds + failureThreshold * periodSeconds). deployTimeoutRetries Adjust retries to wait for the pod during a rollout (defaults to 5). openshiftDir Directory with OpenShift templates (defaults to openshift). tailorPrivateKeyCredentialsId Credentials name of the secret key used by Tailor (defaults to -cd-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector Selector scope used by Tailor (defaults to app=-). Only relevant if the directory referenced by openshiftDir exists. tailorVerify Whether Tailor verifies the live configuration against the desired state after application (defaults to false). Only relevant if the directory referenced by openshiftDir exists. tailorExclude Resource kind exclusion used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve Paths to preserve in the live configuration (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorParams Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. Triggers the upload of an artifact to Nexus. Implementation is based on https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api Available options: Option Description repositoryType default is the maven2 distributionFile default is ${componentId}-${tagversion}.tar.gz repository the nexus repository name, default is candidates for 'maven2' groupId default is the groupId on project level, or in case not set at all org.opendevstack.${projectId} for 'maven2' version default is the ${tagVersion} for 'maven2' artifactId default is the ${componentId} for 'raw' targetDirectory default is the ${projectId}","title":"Component Pipeline","component":"opendevstack","version":"3.x","name":"component-pipeline","url":"/opendevstack/3.x/jenkins-shared-library/component-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Git Workflow / Branch to Environment Mapping","hash":"_git_workflow_branch_to_environment_mapping","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Advanced","hash":"_advanced","id":6},{"text":"Agent customization","hash":"_agent_customization","id":7},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":8},{"text":"Deploying OpenShift resources from source code","hash":"_deploying_openshift_resources_from_source_code","id":9},{"text":"Interacting with Bitbucket","hash":"_interacting_with_bitbucket","id":10},{"text":"Skipping pipeline runs","hash":"_skipping_pipeline_runs","id":11},{"text":"Automatically cloning environments on the fly","hash":"_automatically_cloning_environments_on_the_fly","id":12},{"text":"Examples","hash":"_examples_2","id":13},{"text":"Stages","hash":"_stages","id":14},{"text":"odsComponentStageScanWithSonar","hash":"_odscomponentstagescanwithsonar","id":15},{"text":"odsComponentStageScanWithSnyk","hash":"_odscomponentstagescanwithsnyk","id":16},{"text":"odsComponentStageBuildOpenShiftImage","hash":"_odscomponentstagebuildopenshiftimage","id":17},{"text":"odsComponentStageImportOpenShiftImage","hash":"_odscomponentstageimportopenshiftimage","id":18},{"text":"odsComponentStageImportOpenShiftImageOrElse","hash":"_odscomponentstageimportopenshiftimageorelse","id":19},{"text":"odsComponentStageRolloutOpenShiftDeployment","hash":"_odscomponentstagerolloutopenshiftdeployment","id":20},{"text":"odsComponentStageUploadToNexus","hash":"_odscomponentstageuploadtonexus","id":21}]},"97":{"id":97,"text":"OpenDevStack provides a Jenkins Shared Library which offers two pipelines: A pipeline to build components, odsComponentPipeline. This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. As a user, you will mostly interface with this pipeline. A pipeline to orchestrate releases with multiple components, odsOrchestrationPipeline. It supports the orchestration of multiple repositories into a live application using the Release Manager quickstarter. A pipeline to provision quickstarters, odsQuickstarterPipeline. This pipeline is useful for quickstarter authors. The implementation was originally based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/jenkins-shared-library/index.html","titles":[{"text":"Background","hash":"_background","id":1}]},"98":{"id":98,"text":"Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsOrchestrationPipeline( debug: true, odsImageTag: '3.x' ) The release manager quickstarter comes with a Jenkinsfile that is already setup like this. The library automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside a release manager component’s metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. If you use this type ODS expects to find JUnit XML test results. If you do not have any test results the pipeline will fail. If you are deploying something where JUnit XML test results are not available consider using Repository Type: ods-service. This type designates ODS components designed for running some service. Examples include repositories based on the airflow-cluster quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. If no url parameter is provided for a repository configuration in a release manager component’s metadata.yml, the library will attempt to resolve it based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, our library automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. By default the shared library will rebuild all type ods components, no matter which ones changed. In order to allow partial building, that is based on changes one has done to the components, the following needs to be configured in metadata.yml allowPartialRebuild : true If one repository should always be rebuilt, even if partial rebuild is configured on root level, forceRebuild : true can be set at repository level, e.g. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B forceRebuild : true By default the shared library will always pull the agent image from the internal docker repository. Depending on the cluster node setup, this may decrease execution performance. In order to re-use loaded images, a knob in the Jenkinsfile configuration of the stage odsOrchestrationPipeline can be turned on: alwaysPullImage: true The library automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process by the release manager component. Note: when you configure a Jira service in the release manager component’s metadata.yml, our library expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the library will fall back to the document chapter templates located in your release manager component’s docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. The library supports the activation of various capabilities through the capabilities: field in metadata.yml. capabilities: - Zephyr The Zephyr for Jira capability currently supports: Reporting the result of a test execution to Zephyr for Jira This section will guide you through the \"environment promotion\" feature of the orchestration pipeline. It is assumed have the release manager quickstarter already provisioned and configured in your project. Typically, software is running in different environments, such as one environment for development (DEV), one for quality assurance (QA), and one for production (PROD - this is what end-users of the software consume). Developers work on on the software in the development environment, and once they finish one version (a state) of the software, they bring that version to the QA environment, and once this version is deemed production-ready it is brought to the production environment so that users can consume the new version. The environment promotion feature of the orchestration pipeline automates moving a certain version of the software from one environment to the next. Developers only have to tell the orchestration pipeline if a new version should be built (in DEV) and packaged as an installable \"release bundle\", or if an existing \"release bundle\" should be promoted to either the QA or the production environment. The environment promotion feature is part of the regular orchestration pipeline. Therefore, the promotion is executed from various Jenkins stages. It is not possible to change the process itself, but you can customize how the promotion happens exactly for each of your software components. The components of your software are defined in the repositories section of the metadata.yml file in the release manager repository. In order for the orchestration pipeline to know which state of each component should be promoted, it needs to have some knowledge about how version control in your repositories is organised. Everything depends on a user-supplied build parameter named version to the Jenkins pipeline. Other input parameters do not have any impact on source code lookup. When no version is given, the orchestration pipeline will default to WIP (work in progress). In this scenario, source code for each repository is taken from the configured branch in the metadata.yml file (defaulting to master if no branch is specified there). When a version is given, source code will be taken from a branch release/$VERSION in each repository. When this branch does not exist yet, it will be created (based on the configured branch in metadata.yml) by the pipeline. Subsequent runs with the same version input will take the source code from the created release branch - changes to the configured branch will have no effect on this version! This is by design: it allows some developers to work on new features on the mainline branch (typically master) while others polish the release branch. To this end, the orchestration pipeline allows to enable separate development environments per version to isolate changes in OpenShift resources (see section \"Environments\" further down). The orchestration pipeline applies the same branching rules to the release manager repository - it will create a release branch per version. There is one small caveat here: Jenkins only considers the Jenkinsfile from the branch which is configured for a pipeline. That means that for a pipeline setup against master, Jenkins will always execute the latest Jenkinsfile from master, even when you pass an explicit version to the pipeline. The orchestration pipeline will read e.g. the metadata.yml file from the matching release branch, but the Jenkinsfile itself will be from master. Usually, this should not be an issue as you should not make changes to the Jenkinsfile of the release manager repository anyway. A specific \"release bundle\" is identified by four data points: a version (as outlined above), a changeId, a build number and an environment. The version, changeId and environment are user-supplied input parameters to the release manager pipeline, the build number is calculated automatically. The changeId can be any string meaningful to the user, its value does not have any effect on the operation of the orchestration pipeline. The environment input variable (such as DEV) will be shortened to a single-letter token (e.g. D). Technically speaking, a release bundle is a certain state of the release manager repository and the state of each linked repository at that time. This state is identified by a Git tag. For example, a release bundle with version=1, changeId=1234, buildNumber=0 and environment=DEV is identified by the Git tag v1-1234-0-D. This tag is set on the release manager repository, and all repositories the metadata.yml refers to at this time. The orchestration pipeline assumes three \"conceptual\" environments: DEV, QA and PROD (with short token forms D, Q and P). Those environments are strictly ordered - a state should go from DEV to QA, and then from QA to PROD. To ensure that software progresses along the DEV → QA → PROD path, release bundles from environment DEV can only be installed into QA, and only a release bundle from QA can be installed into PROD. Installing a release bundle from DEV into PROD is not allowed. Each \"conceptual\" environment is mapped to an OpenShift namespace: DEV to $PROJECT-dev (e.g. foo-dev) QA to $PROJECT-test (e.g. foo-test. Note that it is NOT -qa!) PROD to $PROJECT-prod (e.g. foo-prod) Keep in mind that when you create a new project with OpenDevStack, you get three OpenShift namespaces: foo-dev (your DEV environment) foo-test (your QA environment - unfortunately not named -qa for historical reasons) foo-cd (where Jenkins runs and the pipelines such as the orchestration pipeline are executed) So while there is a corresponding namespace for DEV and QA, there is no namespace corresponding to the PROD environment out-of-the-box. This is because it is assumed that your PROD environment is likely on another cluster altogether. To create foo-prod on another cluster, you (or someone with appropriate rights) can run the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-project.sh. Then you need to tell orchestration pipeline two things: where the API of the external cluster is, and the credentials with which to access it. A typical configuration is: id: foo ... repositories: [ ... ] environments: prod: apiUrl: https://api.example.com credentialsId: foo-cd-foo-prod This assumes you have the API token credentials stored in a secret of type kubernetes.io/basic-auth named foo-prod in the foo-cd namespace. This secret needs to be synced with Jenkins (which is achieved by labeling it with credential.sync.jenkins.openshift.io=true). The stored credentials need to belong to a serviceaccount with rights to admin the foo-prod namespace. The easiest way to setup all of this is by running the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-sa-secret.sh, which makes use of the output of the create-target-project.sh ran earlier. It is also possible to have the PROD environment on the same cluster, then you simply create a foo-prod namespace next to foo-dev and foo-test, and allow the foo-cd:jenkins account to admin that project. In that case, you do not need to configure anything in metadata.yml as the default configuration assumes the same cluster. The opposite is also possible: you can configure the QA environment to be on a different cluster than the DEV environment - simply follow the instructions above to create a foo-test namespace. As mentioned in the \"Source Code Organisation\" section, the orchestration pipeline allows to enable separate development environments to isolate different versions. When this mode is enabled, pipeline runs with version=WIP will deploy into the $PROJECT-dev as usual, but pipeline runs with version=X will deploy into $PROJECT-dev-X. If $PROJECT-dev-X does not exist yet, it will be created on the fly (by cloning $PROJECT-dev with its serviceaccounts and rolebindings). For the creation to work, the jenkins serviceaccount running the pipeline needs to have self-provisioner permissions (which need to be granted by a cluster admin). To enable (up to three) separate development environments, you can set versionedDevEnvs to true in the config map of your Jenkinsfile, like this: def config = [debug: true, odsImageTag: 'x.x', versionedDevEnvs: true] Let’s start by assuming you have a project FOO with two components, X and Y. These components are defined under the repositories section in the metadata.yml file of the release manager repository. When you want to create a new release, you start the orchestration pipeline with input parameters - we will use version 1 and change ID 1234 in this example. The environment should be DEV. At the end of the pipeline run, you’ll have a release bundle identified by the tag v1-1234-0-D. This release can later be promoted as-is to QA. Once it is installed there, the same release bundle will be tagged with v1-1234-0-Q which can then be promoted to PROD (where it will be tagged with v1-1234-0-P). To create a release bundle, the orchestration pipeline will first trigger the build of each component. Then, it will export all resources in your OpenShift namespace ($PROJECT-$ENVIRONMENT, here foo-dev) belonging to the component. By convention, this means all resources labeled with app=$PROJECT-$COMPONENT (e.g. app=foo-x). Any resources without such a label will NOT be part of the release bundle. The exported resources are stored in a template.yml file (an OpenShift template) located in the openshift-exported folder within each component repository. Further, the container image SHA of the running pod is retrieved and stored in the file image-sha in the same folder. Once done, the orchestration pipeline will commit the two files, tag the commit with v1-1234-0-D and push to the remote. After this process has been done for all repositories, the same tag is also applied to the release manager repository. At this stage, the \"dev release bundle\" is complete and can be installed into QA. To trigger the installation of an existing release bundle, the user needs to supply a version and changeId which has previously been used to create a release bundle. In our example, supplying version=1, changeId=1234 and environment=QA will promote the release bundle identified by v1-1234-0-D to the QA environment and tag it with v1-1234-0-Q. Now that we have a \"QA release bundle\", we can promote it to PROD by supplying version=1, changeId=1234 and environment=PROD. As outlined above, a release bundle is essentially a state of all involved Git repositories. Each component repository contains two artifacts: a container image SHA OpenShift resource configuration (expressed in an OpenShift template) You cannot modify the image SHA (it is the result of what the component pipeline builds), but you can influence the OpenShift template. One reason to do so is that e.g. routes or ConfigMap values will need to differ between environments, and you need to tell the orchestration pipeline to parametrize the templates, and to supply the right values when the templates are applied in the target environment. When the orchestration pipeline exports configuration, it has no way to tell which values should actually be parameters. For example, you might have a route x.foo-dev.dev-cluster.com in DEV, and want this to be x.foo-test.dev-cluster.com in QA and x.foo-prod.prod-cluster.com in PROD. In the exported template, the value x.foo-dev.dev-cluster.com will be hardcoded. To fix this, you can create three files in the release manager repository, dev.env, qa.env and prod.env. These files may contain PARAM=value lines, like this: dev.env X_ROUTE=x.foo-dev.dev-cluster.com qa.env X_ROUTE=x.foo-test.dev-cluster.com prod.env X_ROUTE=x.foo-prod.prod-cluster.com All three files need to list the exact same parameters - otherwise applying the templates will fail. Once those param files are present, the orchestration pipeline will pick them up automatically. When you create a release bundle (in DEV), the param file is applied \"in reverse\", meaning that any concrete param value (on the right) will be substituted with the param key (on the left) in the template. Later when the template is applied in e.g. QA, the param keys are replaced with the concrete values from qa.env. It is necessary to have all the param files completed before you create a release bundle - if you want to change e.g. the value of a parameter in the prod.env file afterwards, you will need to create a new release bundle (as they are identified by Git tags, which do not move when you make new commits on the release branch). Next to parametrizing templates, you can also adjust how the export is done. As the export is using Tailor, the best way to customize is to supply a Tailorfile in the openshift-exported folder, in which you can define the options you want to set, such as excluding certain labels or resource types, or preserving specific fields in the live configuration. Please see Tailor’s documentation for more information. It is also possible to have different configuration files per environment if you suffix with the $PROJECT, e.g. Tailorfile.foo-dev. If you have component-specific parameters that differ between environments, a lightweight way to add these is via parameter files located in the openshift-exported folder matching the target project such as foo-dev.env, foo-test.env and foo-prod.env. These files are picked up automatically without special setup in a Tailorfile. In the process described above, the OpenShift configuration is exported and stored in the repositories in openshift-exported. This approach is easy to get started with, but it does have limitations: There is no defined state: whatever gets exported is what will be promoted, even if a certain configuration was meant to be only temporary or is specific to e.g. only the DEV environment. There is little traceability: as configuration is done through the OpenShift web interface, it is not known who did the change and when, and no chance for other team members to review that change. The parametrization of the exported template might produce incorrect results as it is just a string search-and-replace operation without further knowledge of the meaning of your configuration values. To overcome these issues, it is possible to author the OpenShift templates yourself instead of exporting them. The fastest way to start with this is by renaming the folder openshift-exported (containing the exported template) to openshift. From this point on, the orchestration pipeline will skip the export, and apply whatever is defined in the openshift folder. If you are new to writing OpenShift templates, please read https://github.com/opendevstack/tailor#template-authoring. When you author templates, you can also store the secrets in the param files GPG encrypted (.env.enc files). To achieve this, you need to create a private/public keypair for Jenkins, store the private key in a secret called tailor-private-key in your foo-cd namespace, and sync it as a Jenkins credentials item. Once the .env.enc files are encrypted against the public key, the orchestration pipeline will automatically use the private key to decrypt the params on-the-fly. Please see Working with Secrets for more information. For versioned, separate DEV environments, pulling images from the foo-cd namespace is not possible (because the foo-cd:jenkins serviceaccount does not have admin rights in foo-cd and therefore can’t grant access to it) Tagging means we are pointing to a concrete SHA of a Git repository. This enforces that no manual editing of exported config can happen between promotion to QA and promotion to PROD, which in effect forces everything to be parameterized properly. JIRA always triggers the master branch of the release manager, which means the Jenkinsfile is always taken from master (and NOT from the correct release branch - only metadata.yml etc. are read from the release branch) There is only one QA namespace, preventing to test multiple releases at the same time. The secret of the serviceaccount in the target cluster is known to the orchestration pipeline (as a Jenkins credential synced from OpenShift), therefore developers with edit/admin rights in the CD namespace have access to that secret Tags could manually be set / moved (this can be prevented in Bitbucket by administrators) Passwords etc. in the OpenShift configuration are stored in clear text in the export (this can be prevented by authoring templates and using a private key for encryption of param files) During export, the templates are parameterized automatically, but this is done using string search-and-replace and unwanted replacements might occur (this can be prevented by authoring the templates manually). By default, SonarQube scans (and reports) are only generated for the master branch of each component. As the orchestration pipeline automatically creates release branches for each version, no scans and reports are created on those. This can be changed by configuring sonarQubeBranch: '*'` in each component’s Jenkinsfile, however keep in mind that quality trends etc. will be mixed up if you use the free version of SonarQube as that version does not have support for multiple branches. An existing QA-tag cannot be deployed again in PROD. This has been intentionally designed that way as any change to PROD needs its unique change ID, which results in a new tag.","title":"Orchestration Pipeline","component":"opendevstack","version":"3.x","name":"orchestration-pipeline","url":"/opendevstack/3.x/jenkins-shared-library/orchestration-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Building of components & partial deployments","hash":"_building_of_components_partial_deployments","id":12},{"text":"Optimization of runtime performance","hash":"_optimization_of_runtime_performance","id":13},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":14},{"text":"Additional Capabilities","hash":"_additional_capabilities","id":15},{"text":"Zephyr for Jira","hash":"_zephyr_for_jira","id":16},{"text":"Environment Promotion","hash":"_environment_promotion","id":17},{"text":"What is the \"environment promotion\" feature?","hash":"_what_is_the_environment_promotion_feature","id":18},{"text":"Source Code Organisation","hash":"_source_code_organisation","id":19},{"text":"Release bundles","hash":"_release_bundles","id":20},{"text":"Environments","hash":"_environments","id":21},{"text":"Walkthrough","hash":"_walkthrough","id":22},{"text":"Customizing release bundle creation","hash":"_customizing_release_bundle_creation","id":23},{"text":"Authoring OpenShift configuration","hash":"_authoring_openshift_configuration","id":24},{"text":"Known Limitations","hash":"_known_limitations","id":25}]},"99":{"id":99,"text":"This pipeline allows to have a minimal Jenkinsfile for a quickstarter by providing all language-agnostic provision aspects. The goal is to duplicate as little as possible between quickstarters. This pipeline is NOT for building components. It is only to be used when you are authoring a (new) quickstarter itself. If you are building a component (an application), please refer to the component pipeline. Load the shared library in your Jenkinsfile like this: def odsNamespace = env.ODS_NAMESPACE ?: 'ods' def odsGitRef = env.ODS_GIT_REF ?: 'master' def odsImageTag = env.ODS_IMAGE_TAG ?: 'latest' library(\"ods-jenkins-shared-library@${odsGitRef}\") odsQuickstarterPipeline( imageStreamTag: \"${odsNamespace}/jenkins-agent-golang:${odsImageTag}\", ) { context -> odsQuickstarterStageCopyFiles(context) stage('Write go.mod') { dir(context.targetDir) { sh \"go mod init module example.com/foo/bar\" } } odsQuickstarterStageCreateOpenShiftResources(context) odsQuickstarterStageRenderJenkinsfile(context) odsQuickstarterStageRenderSonarProperties(context) } There are many built-in stages like odsQuickstarterStageCopyFiles that you can use, please see Stages for more details. odsQuickstgarterPipeline can be customized by passing configuration options like this: odsQuickstgarterPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10mi. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300mi. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. When you write custom stages inside the closure passed to odsQuickstgarterPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsQuickstgarterPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsQuickstgarterPipeline starts. cdUserCredentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. packageName Package name, retrieved from PACKAGE_NAME build parameter. group Group, retrieved from GROUP build parameter. odsNamespace Central namespace where images are located, retrieved from ODS_NAMESPACE build parameter. odsImageTag Image tag used for the agent pod, retrieved from ODS_IMAGE_TAG build parameter. odsGitRef Git ref, retrieved from ODS_GIT_REF build parameter. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. gitUrlHttp URL of the Git repository to push to. The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsQuickstgarterPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each built-in stage (like odsQuickstarterStageCreateOpenShiftResources) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsQuickstarterStageCreateOpenShiftResources( context, [directory: 'common/foobar'] ) Copies files from ${context.sourceDir}/files to ${context.targetDir}. There are no configuration options. Uses a set of OpenShift templates to create resources in OpenShift. The resources are created both in -dev and -test namespace. Tailor is used to apply the templates, and fed with a parameter file if it exists. Available options: Option Description directory Directory in which templates are located, defaults to ${context.sourceDir}/openshift. envFile Parameter file to use, defaults to ${context.sourceDir}/ocp.env selector Label selector to constrain tailor apply to, defaults to app=${context.projectId}-${context.componentId}. Processes a Jenkinsfile template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId @component_type@ ⇒ context.sourceDir @git_url_http@ ⇒ context.gitUrlHttp @ods_image_tag@ ⇒ context.odsImageTag @ods_git_ref@ ⇒ context.odsGitRef Available options: Option Description source Jenkinsfile template to use, defaults to Jenkinsfile.template target Jenkinsfile filename, defaults to Jenkinsfile Processes a sonar-project.properties template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId Available options: Option Description source sonar-project.properties template to use, defaults to sonar-project.properties.template target sonar-project.properties filename, defaults to sonar-project.properties Forks a component from ODS Available options: Option Description odsComponent the component from (github) ODS to fork","title":"Quickstarter Pipeline","component":"opendevstack","version":"3.x","name":"quickstarter-pipeline","url":"/opendevstack/3.x/jenkins-shared-library/quickstarter-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Advanced","hash":"_advanced","id":4},{"text":"Agent customization","hash":"_agent_customization","id":5},{"text":"Stages","hash":"_stages","id":6},{"text":"odsQuickstarterStageCopyFiles","hash":"_odsquickstarterstagecopyfiles","id":7},{"text":"odsQuickstarterStageCreateOpenShiftResources","hash":"_odsquickstarterstagecreateopenshiftresources","id":8},{"text":"odsQuickstarterStageRenderJenkinsfile","hash":"_odsquickstarterstagerenderjenkinsfile","id":9},{"text":"odsQuickstarterStageRenderSonarProperties","hash":"_odsquickstarterstagerendersonarproperties","id":10},{"text":"odsQuickstarterStageForkODS","hash":"_odsquickstarterstageforkods","id":11}]},"100":{"id":100,"text":"Table of Contents How to develop and run it locally How to deploy to OpenShift Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Consuming REST APIs via curl Pre Flight Checks Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Jenkins (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 11 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git To run it locally two spring profiles are provided: odsbox and odsbox_quickstarters`. The profile odsbox configures the application to connect to the ODS development environment (ODSBOX). Use this command to start it from the command-line: ./gradlew bootRun --args='--spring.profiles.active=odsbox,odsbox_quickstarters' Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 In order to test your changes in a real environment, you should deploy the provisioning app in OpenShift. To do so, you need to have an existing OpeDevStack project (consisting of -dev, -test and -cd namespaces). If you don’t have one yet, you can create one via the provisioning app in the central namespace. Now you can make use of the ods-provisioning-app quickstarter to set up the Bitbucket repository in your Bitbucket space. You can either register the quickstarter in the provisiong app in the central namespace, and then provision it from there; or use the script in https://github.com/BIX-Digital/ods-contrib/tree/master/quickstart-with-jenkins. Once you have provisioned the quickstarter, the first build will create a container image and place it in the ImageStream, using the commit SHA as image tag. To deploy this image in the central namespace, you have to tag that image into the central namespace. From your local machine, run: oc tag -dev/: ods/ods-provisioning-app: Then, in ods-configuration/ods-core.env, set PROV_APP_FROM_IMAGE to ods/ods-provisioning-app: and run the deployment using: make install-provisioning-app The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js). ODS 3.x contains a new single page app UI (based on Angular) as an experimental feature located in the client folder. In order to use the UI a feature flag frontend.spa.enabled must be set to true in application.proprties. Please refer to client README on how to setup local development for the frontend code. The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Basic Auth authentication is the recommended way to consume REST API. How to enable Basic Auth authentication is explained in Authentication Crowd Configuration. The following sample script could be used to provision a new project, add a quickstarter to a project or remove a project. It uses Basic Auth to authenticate the request. #!/usr/bin/env bash set -eu # Setup these variables # PROVISION_API_HOST=://: # BASIC_AUTH_CREDENTIAL=: # PROVISION_FILE=provision-new-project-payload.json PROV_APP_CONFIG_FILE=\"${PROV_APP_CONFIG_FILE:-prov-app-config.txt}\" if [ -f $PROV_APP_CONFIG_FILE ]; then cat $PROV_APP_CONFIG_FILE source $PROV_APP_CONFIG_FILE else echo \"No config file found, assuming defaults, current dir: $(pwd)\" fi # not set - use post as operation, create new project COMMAND=\"${1:-POST}\" echo echo \"Started provision project script with command (${COMMAND})!\" echo echo \"... encoding basic auth credentials in base64 format\" BASE64_CREDENTIALS=$(echo -n $BASIC_AUTH_CREDENTIAL | base64) echo echo \"... sending request to '\"$PROVISION_API_HOST\"' (output will be saved in file './response.txt' and headers in file './headers.txt')\" echo RESPONSE_FILE=response.txt if [ -f $RESPONSE_FILE ]; then rm -f $RESPONSE_FILE fi if [ ${COMMAND^^} == \"POST\" ] || [ ${COMMAND^^} == \"PUT\" ]; then echo echo \"create or update project - ${COMMAND^^}\" if [ ! -f $PROVISION_FILE ]; then echo \"Input for provision api (${PROVISION_FILE}) does not EXIST, aborting\\ncurrent: $(pwd)\" exit 1 fi echo \"... ${COMMAND} project request payload loaded from '\"$PROVISION_FILE\"'\"´ echo echo \"... displaying payload file content:\" cat $PROVISION_FILE echo http_resp_code=$(curl --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --data @\"$PROVISION_FILE\" \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) elif [ ${COMMAND^^} == \"DELETE\" ] || [ ${COMMAND^^} == \"GET\" ]; then echo \"delete / get project - ${COMMAND^^}\" if [ -z $2 ]; then echo \"Project Key must be passed as second param in case of command == delete or get!!\" exit 1 fi http_resp_code=$(curl -vvv --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project/$2\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) else echo \"ERROR: Command ${COMMAND} not supported, only GET, POST, PUT or DELETE\" exit 1 fi echo \"curl request successful...\" echo echo \"... displaying HTTP response body (content from './response.txt'):\" if [ -f ${RESPONSE_FILE} ]; then cat ${RESPONSE_FILE} else echo \"No request (body) response recorded\" fi echo echo \"... displaying HTTP response code\" echo \"http_resp_code=${http_resp_code}\" echo if [ $http_resp_code != 200 ] then echo \"something went wrong... endpoint responded with error code [HTTP CODE=\"$http_resp_code\"] (expected was 200)\" exit 1 fi echo \"provision project request (${COMMAND}) completed successfully!!!\" The PROVISION_FILE should point to a json file that defines the payload for the provision of a new project. This is an example: { \"projectName\": \"\", \"projectKey\": \"\", \"description\": \"project description\", \"projectType\": \"default\", \"cdUser\": \"project_cd_user\", \"projectAdminUser\": \"\", \"projectAdminGroup\": \"\", \"projectUserGroup\": \"\", \"projectReadonlyGroup\": \"\", \"bugtrackerSpace\": true, \"platformRuntime\": true, \"specialPermissionSet\": true, \"quickstarters\": [] } For the provisioning of a quickstarter set the command from POST to value PUT instead. Following an example of the PROVISION_FILE for quickstarter provisioning: { \"projectKey\":\"\", \"quickstarters\":[{ \"component_type\":\"docker-plain\", \"component_id\":\"be-docker-example\" }] } The provisioning of new project requires the creation of project in different servers (jira, bitbucket, confluence, openshift, etc…​) In case of an exception happens this process will be interrupted. This will leave the provision of a new project as incomplete. To avoid this situation a series of checks called \"Pre Flight Checks\" were implemented. These checks verify that all required conditions are given in the target system (jira, bitbucket, confluence) before provision a new project. Following some samples of response of the provision new project endpoint POST api/v2/project Pre Flight Check failed: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"UNEXISTANT_USER\",\"error-message\":\"user 'cd_user_wrong_cd_user' does not exists in bitbucket!\"}]} Pre Flight Check due an exception: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"EXCEPTION\",\"error-message\":\"Unexpected error when checking precondition for creation of project 'PROJECTNAME'\"}]} Pre Flight Check successfully passed and project was created: HTTP CODE: 200 OK { \"projectName\": \"MYPROJECT\", \"description\": \"My new project\", \"projectKey\": \"MYPROJECT\", ... } Failed Response due to exception after Pre Flight Checks succesfully passed: HTTP CODE: 500 Internal Server Error An error occured while creating project [PROJECTNAME ], reason [component_id 'ods-myproject-component106' is not valid name (only alpha chars are allowed with dashes (-) allowed in between. ] - but all cleaned up! The provision new project endpoint POST api/v2/project accepts a url parameter called onlyCheckPreconditions. By setting this parameter to true (POST api/v2/project?onlyCheckPreconditions=TRUE) only the Pre Flight Checks will be executed. This could be usefull for the development of new Pre Flight Checks or for integration scenarios. In this later case one could imagine to set this parameter to TRUE to verify all preconditions before creating a project. Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API","title":"Provisioning App: Internal architecture / Development","component":"opendevstack","version":"3.x","name":"architecture","url":"/opendevstack/3.x/provisioning-app/architecture.html","titles":[{"text":"How to develop and run it locally","hash":"_how_to_develop_and_run_it_locally","id":1},{"text":"How to deploy to OpenShift","hash":"_how_to_deploy_to_openshift","id":2},{"text":"Frontend Code","hash":"_frontend_code","id":3},{"text":"Backend Code","hash":"_backend_code","id":4},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":5},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":6},{"text":"Consuming REST APIs via curl","hash":"_consuming_rest_apis_via_curl","id":7},{"text":"Pre Flight Checks","hash":"_pre_flight_checks","id":8},{"text":"Response examples:","hash":"_response_examples","id":9},{"text":"Option \"onlyCheckPreconditions=TRUE\":","hash":"_option_onlycheckpreconditionstrue","id":10},{"text":"Link collection","hash":"_link_collection","id":11}]},"101":{"id":101,"text":"Table of Contents Quickstarters Permissions Project/Space types based on templates Custom permissions and group-to-project-role mappings Add Webhook Proxy URL to jira project properties based on project type Error Handling Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Basic Auth authentication Authentication to third party apps via technical users FAQ Available quickstarters can be provided in the container via /quickstarters/quickstarters.properties. In the context of OpenShift, this file is supplied by the ConfigMap quickstarters.properties. The quickstarters defined there will be displayed to the users in the UI when they modify an existing project. When the provisioning app is installed for the first time, a default set of quickstarters (from the ods-quickstarters repository) is seeded. As each installation can configure the available quickstarters differently, the quickstarters.properties ConfigMap is not updated automatically when updating ODS. A quickstarter needs to have two mandatory entries: quickstarters.properties jenkinspipeline.quickstarter..desc= jenkinspipeline.quickstarter..repo= For example: quickstarters.properties jenkinspipeline.quickstarter.be-java-springboot.desc=Backend - SpringBoot/Java jenkinspipeline.quickstarter.be-java-springboot.repo=ods-quickstarters This means that in order to provision the quickstarter, the provisioning app will start a Jenkins pipeline based on the Jenkinsfile located in the opendevstack/ods-quickstarters repository, in the folder be-java-springboot. The UI will display the quickstarter as Backend - SpringBoot/Java. Apart from the required properties, there are also optional properties: quickstarters.properties jenkinspipeline.[some-job-name].create-webhook -> whether a default webhook should be created for this repo or not (true by default) jenkinspipeline.[some-job-name].branch -> a branch differing from ods.git-ref property jenkinspipeline.[some-job-name].jenkinsfile -> a path to the Jenkinsfile differing from [some-job-name]/Jenkinsfile When the quickstarter properties are modified, the provisioning app needs to be restarted for the changes to have effect. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three special groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with tight read & write roles Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) Furthermore if you need to define default permission for openshift (e.g. to setup membership permission for cluster admins) you can add this to your application properties: jenkinspipeline.create-project.default-project-groups=ADMINGROUP= In case special permissions sets are defined this the default project groups will be appended to the lis of permissions sets. The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, Custom permission configuration makes possible to configure each Project type template with a specific permission-scheme-id on project creation. Any new Jira project of a specific project type will be then set with the same permission-schemed-id. Additionally, mappings of project roles to the special groups (defined above: admin, user and readonly group) have to be configured, so that the special groups are added to the jira project roles of the new project. These capabilities make possible for Jira Admin to define a main permission scheme that will be \"reused\" for every new project. Another big benefit is that release them from the manual task of mapping the special groups to the permission scheme project roles. To configure a project-template-name with a specific permission-schemed-id you need to add these properties to your configuration: jira.project-templates..name=UTest project template jira.project-templates..permission-scheme-id= if the permission-scheme-id is configured you will have to provide group-to-project-role mapping configuration. If a permission-schemd-id is defined, then the following project-to-* properties have to be configured. Otherwise the provisioning app will fail to start. Like the permission-scheme-id the value of these properties has to be in this case an existant project role id in Jira, that you will need to get from your Jira server in advance. jira.project-project-template-name.<>.role-mapping.project-role-for-admin-group= jira.project-project-template-name.<>.role-mapping.project-role-for-user-group= jira.project-project-template-name.<>.role-mapping.project-role-for-readonly-group= Another way to set a permission-scheme-id with the corresponding project-to-role-* mappings is by API call. You can define following properties in the payload of the create project API call: { ... \"specialPermissionSchemeId\": \"\" \"projectRoleForAdminGroup\": \"\", \"projectRoleForUserGroup\": \"\", \"projectRoleForReadonlyGroup\": \"\", ... } A given configuration will be overwritten by these payload properties. You will find more details about the provisioning app REST API in this section: Consuming REST APIs via curl. If no permission-scheme-id with the corresponding project-to-role-* mappings are provided neither by configuration nor in the create project payload, then the default behaviour will be applied, which in this case will create a new permission scheme as explained in the section Permissions. It is possible to configure the Provisioning App to add to jira project the Webhook Proxy URL as project property. Jira provides an REST API for this purpose (Jira Properties API) This functionality can be configured for each project type. To enable this you will need to: Enable this capability for a given project type add the a property like: jira.project.template.add-webhook-proxy-url-as-project-property.=true Define the jira endpoint as template by adding this property: jira.project.template.webhook-proxy-url-endpoint-template.=/api/2/project/%PROJECT_KEY%/properties/WEBHOOK_PROXY.URL These 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Define the jira endpoint payload as template that will be added to the set jira property endpoint call jira.project.template.webhook-proxy-url-payload-template.={\\\"WEBHOOK_PROXY.URL\\\", \\\"%PROPERTY_VALUE%\\\"} For the payload template also these 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false. There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Basic Auth Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence and Bitbucket is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. An example of plain oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link Alternatively if your identity provider is Azure AD, a configuration example is given in application-azure.properties application-azure.properties provision.auth.provider=oauth2 (1) provision.auth.provider.oauth2.user-info-uri=userInfo (2) (3) # Application ID (also called Client ID) spring.security.oauth2.client.registration.azure.client-id=> spring.security.oauth2.client.registration.azure.client-secret= # It's suggested the logged in user should at least belong to one of the below groups # If not, the logged in user will not be able to access any authorization controller rest APIs azure.activedirectory.user-group.allowed-groups=opendevstack-administrators,opendevstack-users (4) azure.activedirectory.environment=global-v2-graph azure.activedirectory.user-group.key=@odata.type azure.activedirectory.user-group.value=#microsoft.graph.group azure.activedirectory.user-group.object-id-key=id azure.activedirectory.tenant-id= (5) oauth2.user.roles.jsonpointerexpression=/claims/roles (6) oauth2.user.use-email-claim-as-username=true (7) (8) idmanager.url=https://login.microsoftonline.com idmanager.realm=${spring.security.oauth2.client.registration.azure.client-id} idmanager.disable-logout-from-idm=true (9) 1 configures oauth2 authentication provider 2 configure user info uri 3 registers in spring security azure oauth2 client id and secret 4 configure allow groups 5 register azure ad tenant 6 the application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 7 configure to use email claim as username 8 configure name of the ProvApp realm 9 instruct ProvApp to not logout from identity management provider This option can be enabled to activate basic auth as additional authentication when using crowd or oauth2 as authentication provider. To enable basic auth this properties needs to be configured: application-azure.properties provision.auth.basic-auth.enabled=true The basic auth authentication needs to connect to an identity manager to authenticate users. Currently only crowd is supported for this purpouse. If you have’ve chosen to use oauth2 as provider you can even enable basic auth to connect to crowd server. For that you will need to add these properties to your configuration: # crowd properties (needed for basic auth) crowd.local.directory=~/dev/temp crowd.application.name= crowd.application.password= crowd.server.url= crowd.cookie.domain= The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence and Bitbucket. The used credentials are read from a pair of properties. For Example, bitbucket.admin_password and bitbucket.admin_user properties are used for Bitbucket, confluence.admin_user and confluence.admin_password are used for Confluence, etc. application-oauth2.properties # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall() If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project. What is the default permission schema in Jira? the default permission schema in Jira is named Default Permission Scheme Which role is missing in Jira default permission schema if the project creator cannot access it? The default permission schema named Default Permission Scheme needs the role owner to be added to permission Browser Projects. Otherwise the project creator (role owner) will not be able to access the project.","title":"Provisioning App: Configuration Guide","component":"opendevstack","version":"3.x","name":"configuration","url":"/opendevstack/3.x/provisioning-app/configuration.html","titles":[{"text":"Quickstarters","hash":"_quickstarters","id":1},{"text":"Permissions","hash":"_permissions","id":2},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":3},{"text":"Custom permissions and group-to-project-role mappings","hash":"_custom_permissions_and_group_to_project_role_mappings","id":4},{"text":"Project type custom permissions scheme id configuration","hash":"_project_type_custom_permissions_scheme_id_configuration","id":5},{"text":"Project type group-to-project-role mappings","hash":"_project_type_group_to_project_role_mappings","id":6},{"text":"Overwriting custom permissions scheme id and group-to-project-role mappings per API call","hash":"_overwriting_custom_permissions_scheme_id_and_group_to_project_role_mappings_per_api_call","id":7},{"text":"Add Webhook Proxy URL to jira project properties based on project type","hash":"_add_webhook_proxy_url_to_jira_project_properties_based_on_project_type","id":8},{"text":"Error Handling","hash":"_error_handling","id":9},{"text":"Authentication Configuration","hash":"_authentication_configuration","id":10},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":11},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":12},{"text":"Basic Auth authentication","hash":"_basic_auth_authentication","id":13},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":14},{"text":"FAQ","hash":"_faq","id":15}]},"102":{"id":102,"text":"Table of Contents Basic idea & usage FAQ This application creates new OpenDevStack projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as Jira, Confluence, Bitbucket and Jenkins. An admin creates new ODS project. This in turn creates: a Jira Project (name based on project key) a Confluence Space (name based on project key) if OpenShift was selected - a Bitbucket Project (name based on project key). Within this project two default repositories are created: -oc-config-artifacts for all OpenShift YAML resources used during export/import as well as -design for any design artifacts (e.g. sketches) if OpenShift was selected - the required Openshift projects named -dev, -test and -cd. Internally those are created and configured using a Jenkins pipeline. A normal user creates new components by provisioning quickstarters. This can be done by picking the project to modify in the UI and then selecting the desired quickstarter. This creates: a Bitbucket repository within the chosen project named -. This repository has a webhook configured which will start a new Jenkins job each time a new commit is pushed. OpenShift resources based on the chosen quickstarter Why are three OpenShift projects created when I provision a new project? The -dev and -test namespaces are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the Component Pipeline In contrast to this, the -cd namespace hosts a project-specific instance of Jenkins Master and Webhook Proxy. When a build is triggered, builder pods (= deployments of Jenkins agents) are created in this project. This was a cautious design choice to give a project team as much power as possible when it comes to configuration of Jenkins.","title":"Provisioning Application","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/provisioning-app/index.html","titles":[{"text":"Basic idea & usage","hash":"_basic_idea_usage","id":1},{"text":"FAQ","hash":"_faq","id":2}]},"103":{"id":103,"text":"This agent is used to build Go code. The image is built in the global ods project and is named jenkins-agent-golang. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-golang:latest. Go 1.14.2 golangci-lint 1.25.0 Not (yet) Nexus package manager aware and no special HTTP Proxy configuration.","title":"Go Jenkins agent","component":"opendevstack","version":"3.x","name":"golang","url":"/opendevstack/3.x/jenkins-agents/golang.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"104":{"id":104,"text":"This agent is used to build Java code, through Maven or Gradle. The image is built in the global ods project and is named jenkins-agent-maven. It can be referenced in a Jenkinsfile with ods/jenkins-agent-maven. Nexus configuration for Maven & Gradle HTTP proxy awareness for both builders n/a","title":"Maven / Gradle Jenkins agent","component":"opendevstack","version":"3.x","name":"maven","url":"/opendevstack/3.x/jenkins-agents/maven.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"105":{"id":105,"text":"This agent is used to build Nodejs based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs10-angular. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs10-angular. Nexus configuration HTTP proxy awareness Angular CLI & Cypress dependencies pre-installed n/a","title":"Nodejs 10 - Angular Jenkins agent","component":"opendevstack","version":"3.x","name":"nodejs10-angular","url":"/opendevstack/3.x/jenkins-agents/nodejs10-angular.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"106":{"id":106,"text":"This agent is used to build / execute Python code. The image is built in the global ods project and is named jenkins-agent-python. It can be referenced in a Jenkinsfile with ods/jenkins-agent-python Python 3.8 pip virtualenv No special HTTP Proxy configuration.","title":"Python Jenkins agent","component":"opendevstack","version":"3.x","name":"python","url":"/opendevstack/3.x/jenkins-agents/python.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"107":{"id":107,"text":"This agent is used to build Scala code through SBT (Scala build tool). The image is built in the global ods project and is named jenkins-agent-scala. It can be referenced in a Jenkinsfile with ods/jenkins-agent-scala. SBT 1.1.6 HTTP proxy aware Nexus aware In case HTTP Proxy config is injected through environment variables (including NO_PROXY), Nexus configuration is disabled because of an SBT bug.","title":"Scala Jenkins agent","component":"opendevstack","version":"3.x","name":"scala","url":"/opendevstack/3.x/jenkins-agents/scala.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"108":{"id":108,"text":"This document describes how you can create your own quickstarter. At the same time, you should be able to find all information required to make changes to an existing quickstarter. Technically speaking, a quickstarter is just a Jenkins pipeline that fills an existing repository with files. How this is done, and what exactly is run in the pipeline is up to the quickstarter author. Typically though, the pipeline makes use of the quickstarter pipeline from the Jenkins shared library, which removes the need to write lots of boilerplate such as running a agent pod, cloning sources, copying files and pushing at the end to the component repository. The rest of the guide assumes that you are using this pipeline. As the Jenkins pipeline runs on a Jenkins agent image, you as the author need to pick either an existing agent image (see \"Jenkins agent Images\" in the navigation on the left), or create your own. The only technical requirement is to have a Jenkinsfile, but depending on the purpose of the quickstarter, a quickstarter should provide the following: A Jenkinsfile in the resulting repository. The best way to do this is by placing a Jenkinsfile.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderJenkinsfile. A sonar-project.properties file in the resulting repository. The best way to do this is by placing a sonar-project.properties.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderSonarProperties. Test setup, e.g. a framework such as JUnit. Test results need to be published in JUnit XML reporting file format. The results need to be stored at build/test-results/test or be configured to a different location. Code Coverage: tests should determine code coverage, and report this to SonarQube. Support for Nexus (pulling dependencies from there) HTTP proxy awareness Documentation. Both for the quickstarter itself (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/quickstarters/pages, following the quickstarter template) and any Jenkins agent image (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/jenkins-agents/pages, following the agent image template). If you write any custom stages in the quickstarter pipeline, you have access to the pipeline context. Usually, quickstarters are triggered through the provisioning app. However, in order to try a new quickstarter, or to try changes to an existing quickstarter which are made in a branch, you can use the quickstart-with-jenkins/run.sh script in the BIX-Digital/ods-contrib repository to provision a quickstarter without registering it with the provisioning app. See its help for usage. It is highly recommended to use the jenkins-agent-base image as a base image. Otherwise it is likely that some features of the shared pipeline don’t work. The jenkins-agent-base image in turn is based on another base image, e.g. provided by RedHat. The easiest way to get started is to look ath other agent images, such as Go and see how that implements its requirements. If you are just building an image for yourself, do the following: Copy the folder from one of the Jenkins agents to your local machine, and adjust as needed. For sure you’ll need to update the Dockerfile. Also, change the names in the ocp-config folder and delete the Tailorfile in there. Note that the BuildConfig points to a repository and a branch. You will need to push your sources to a matching location. Create the OpenShift resources in your *-cd project via Tailor, e.g. tailor -n foo-cd --param REPO_BASE=https://bitbucket.example.com/scm --param ODS_IMAGE_TAG=2.x …​ Start a build in the OpenShift web console. Reference the built image from your Jenkinsfile like this: imageStreamTag: 'foo-cd/jenkins-agent-bar:latest' If you want to contribute your Jenkins agent image to OpenDevStack, make sure to add documentation according to the agent image template.","title":"Authoring Quickstarters","component":"opendevstack","version":"3.x","name":"authoring-quickstarters","url":"/opendevstack/3.x/quickstarters/authoring-quickstarters.html","titles":[{"text":"Creating / Modifying a quickstarter","hash":"_creating_modifying_a_quickstarter","id":1},{"text":"Creating / Modifying a Jenkins agent image","hash":"_creating_modifying_a_jenkins_agent_image","id":2}]},"109":{"id":109,"text":"Use this quickstarter when you want to use nginx server wrapped within OpenResty dynamic web platform. With this quickstarter you can run many different lightweight server implementations like API gateways and HTTP/TCP/UDP reverse proxies. ├── docker - Contains Dockerfile for the build │ ├── lua - Directory for custom Lua modules │ │ └── server-error.lua - Example of server error response module with Lua │ ├── Dockerfile - Definition of your nginx gateway container │ ├── entrypoint.sh - Enables runtime configurations and runs openresty │ └── nginx.conf - The nginx configuration ├── Jenkinsfile - Contains Jenkins build configuration ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager OpenResty ODS Jenkins Shared Library Simply start to configure your nginx.conf to fit your needs. Also, you can develop and/or use different Lua modules. In order to route/proxy to services in the same namespace you do not need to define environment variables for their ports and/or hosts. OpenShift already loads them into the container’s environment by following a convention like _SERVICE_HOST and _SERVICE_PORT. Please, follow the example provided and comments in the nginx.conf file. One can add official Lua modules by using opm. In the following code snipped one can see how to add an official Lua module through docker build stage. Inside your Dockerfile: RUN opm install zmartzone/lua-resty-openidc Then, one can load such module dependency in new modules like: local http = require(\"resty.openidc\") lua-resty-openidc module is already provided with the default Dockerfile. Lua integration in nginx requires following the Directives provided in its architecture. Notice the importance of the execution order of the directives. Most of the directives require being defined inside your server locations. See next some possibilities one can make use of 1 - Managing access with access_by_lua_block With this directive one can integrate with Identity Providers via different auth/z standars, such as simple HTTP Basic Auth, OAuth, OIDC: access_by_lua_block { require(\"your-auth-module\").authenticate() } 2 - Managing content with content_by_lua_block This directive handles content definition. See the provided server-error.lua module example; by loading the right ENV variables in nginx.conf, you can add in your error location block a custom server error handling: location = /50x.html { content_by_lua_block { require(\"server-error\").make_error() } } 3 - Handle incoming requests with rewrite_by_lua_block One can also make use of the rewrite directive, for example, for filtering/rewriting incoming requests coming from your clients: rewrite_by_lua_block { require(\"filter-requests-headers\").run_filter() } 4 - Handle body responses with body_filter_by_lua_block Filter the body responses comming from your Backend services. For example, one could filter any error response, so to assure filtering stack traces from a JSON object response when running on production: body_filter_by_lua_block { require(\"filter-error-response\").filter_stack_traces() } There are two steps: Build the container image. Deploy. This quickstarter uses jenkins-agent-base N/A","title":"Backend - nginx (be-gateway-nginx)","component":"opendevstack","version":"3.x","name":"be-gateway-nginx","url":"/opendevstack/3.x/quickstarters/be-gateway-nginx.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Routing to your services","hash":"_routing_to_your_services","id":5},{"text":"Adding offical Lua modules","hash":"_adding_offical_lua_modules","id":6},{"text":"Using Lua modules","hash":"_using_lua_modules","id":7},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":8},{"text":"Builder agent used","hash":"_builder_agent_used","id":9},{"text":"Known limitations","hash":"_known_limitations","id":10}]},"110":{"id":110,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. This quickstarter uses Golang builder agent. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"3.x","name":"be-golang-plain","url":"/opendevstack/3.x/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"111":{"id":111,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 8 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). Under the hook this quickstarter runs the spring boot cli init command. The quickstarter uses the latest available spring boot cli version to generate the spring boot project. This is implemented in the script init.sh (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project will be generated and pushed to your git repository. The generated project requires java 8 and include the required gradle build and wrapper artifact. The generated spring boot project contains following folders: src (maven based java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,jersey,data-jpa,h2,lombok,data-rest,restdocs,security\"), which are defined in the script init.sh (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 8 or later version is required to run gradlew and compile java classes. The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. This quickstarter uses Maven builder agent Jenkins builder agent. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"3.x","name":"be-java-springboot","url":"/opendevstack/3.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":11},{"text":"Builder agent used","hash":"_builder_agent_used","id":12},{"text":"Known limitations","hash":"_known_limitations","id":13}]},"112":{"id":112,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter is simmple WEB-server written on Python using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── run.sh - This bash script solves issue with permissions for a container user ├── src │ ├── main.py - This file is the main entry point in the project. │ └── requirements.txt - This file contains a list of required Python modules to run application ├── tests │ ├── __init__.py │ ├── main_test.py - Unit testing src/main.py │ ├── pytest.ini - pytest configuration file │ └── requirements.txt - required Python modules for the Test Suite and IDE integration ├── .coveragerc - Coverage configuration file ├── metadata.yml - Component metadata ├── mypy.ini - mypy configuration file ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - This file contains SonarQube configuration settings Python 3.8 gunicorn flask pytest mypy flake8 The project is production ready when deployed in OpenShift thanks to gunicorn. It is recommended when you are developing a Python project to use separated environments. For this purpose usually one can use virtualenv package. # Command install virtualenv package (run only once) pip install virtualenv # Creates virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) virtualenv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r src/requirements.txt # Start your application python src/main.py The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: pip install -r tests/requirements.txt Lint - Runs mypy and flake8 for increasing code quality: mypy src flake8 --max-line-length=120 src Test - Runs pytest and generates xUnit and code coverage reports: cd src/ python -m pytest --junitxml=tests.xml --cov-report term-missing --cov-report xml --cov=. ../tests/ Build - Builds the application: copies src folder into docker/dist folder. This quickstarter uses Python builder agent Jenkins builder agent. NA","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"3.x","name":"be-python-flask","url":"/opendevstack/3.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"113":{"id":113,"text":"This is a Play Framework 2.8.0 quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an reactive Web Application / REST API based on the Scala Language. An example Play Web Application is generated with a Controller and some tests. . ├── Jenkinsfile ├── app │ ├── controllers │ │ └── HomeController.scala │ └── views │ ├── index.scala.html │ └── main.scala.html ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ ├── messages │ └── routes ├── docker │ └── Dockerfile ├── project │ ├── build.properties │ ├── plugins.sbt ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── main.js │ └── stylesheets │ └── main.css ├── sonar-project.properties ├── test │ └── controllers │ └── HomeControllerSpec.scala └── .scalafmt.conf This project is generated by SBT using SBTs template generation via the new command. The template used is an adapted version of the official Play Scala Seed Template. It will generate a Play Scala project using version 2.8.0 of Play with Scala version 2.13.1. It uses the logstash-logback-encoder to output logmessages in logstash format. It uses Scalafmt to check/format the source files consistently. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing Or run for running locally in development mode with continous compiling. The application will be accessible under http://localhost:8080 The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - checks source files formatting, runs the tests and builds and copies the artifacts for creating the docker image to the docker directory. This quickstarter uses the Scala Jenkins agent. NA","title":"Backend Scala Playframework Quickstarter (be-scala-play)","component":"opendevstack","version":"3.x","name":"be-scala-play","url":"/opendevstack/3.x/quickstarters/be-scala-play.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"114":{"id":114,"text":"This is a node (v10) quickstarter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains a basic setup for Docker, Jenkins, SonarQube and OpenShift. The package json is generated by simply using npm init -y, while the tsconfig is generated using tsc --init --skipLibCheck --outDir \"./dist\". The dependencies mentioned below are added to plain package.json file. On top of that, test, build and start script commands are customized to get your node/express application up and running with typescript. ├── Jenkinsfile - Contains Jenkins build configuration ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── sum.ts - Sample function │ ├── index.ts - Entrypoint, This runs first ├── __test__ │ ├── sum.spec.ts - Sample test ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration Express (^4.17.1) Jest (^26.0.0) for Unit Testing Typescript (^3.9.5) On top of the mentioned frameworks above, we use libraries: Jest Junit (^10.0.0) @types/node (^14.0.13) When you push your code, your runtime and test code will be compiled using node v10. After deployment the compiled code also runs in node v10. If you developed your code and tests using a different node version locally, this might cause some problems. This is why we made the tsconfig.json file to be compatible with node v10. So bear in mind that any changes to compiler options might result in compilation and runtime errors. Here are our related changes to tsconfig.json file below: \"compilerOptions\": { \"lib\": [\"es2018\"], \"module\": \"commonjs\", \"target\": \"es2018\" } npm install forms the project root to install all the dependencies npm run build transpiles the typescript code to /dist folder npm run start starts the node server npm run test runs tests located under /dist folder, prints the jest output under /build folder and reports test coverage. The report located under /coverage_output folder is then picked by Sonarqube. The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command is executed to build the application and then the build is copied to the docker/dist folder. Unit Testing : npm run test command is executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"3.x","name":"be-typescript-express","url":"/opendevstack/3.x/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Libraries","hash":"_libraries","id":4},{"text":"Node version","hash":"_node_version","id":5},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":6},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"115":{"id":115,"text":"Use this quickstarter when you want to start from a plain Dockerfile only, without any framework on top. A good usecase here is a Dockerfile you found on GitHub which you want to run with OpenDevStack features, or that you need to \"OpenShiftify\", by setting an (non-root) execution user, etc. ├── Jenkinsfile - Contains Jenkins build configuration ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - SonarQube Configuration None, except for the ODS jenkins shared library. Amend the generated Dockerfile as needed. Whatever is in the /docker folder will be passed to oc start build as the docker context. You can add other files to that context as needed: def stageBuild(def context) { stage('Build') { // copy any other artifacts, if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } In case you want to run unit tests, you can add a corresponding statement to stageUnitTest: def stageUnitTest(def context) { stage('Unit Test') { // add your unit tests here, if needed } } Assuming your component contains source code you want to have delivered by the Release Manager, the execution of tests and the reporting of their results is mandatory. For this, your component will have to…​ define name, description, supplier, and version metadata for your component in files/release-manager.yml place the test results in the xUnit XML format in a path known to context.testResults (defaults to build/test-results/test) provide these test results to the Jenkins JUnit plugin via its junit step function. Feel free to look out for examples in our existing quickstarters, such as be-java-springboot. none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"3.x","name":"docker-plain","url":"/opendevstack/3.x/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"116":{"id":116,"text":"Provision a shared Jupyter Notebook within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile ├── docker │ ├── Dockerfile │ ├── jupyter_notebook_config.json │ ├── requirements.txt │ └── run.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.8 Jupyter The quickstarter sets up two pods in OpenShift. The ds-jupyter-notebook instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-agent-base Consider if sufficient computing resources can be provided by the OpenShift cluster.","title":"Data Science Jupyter Notebook","component":"opendevstack","version":"3.x","name":"ds-jupyter-notebook","url":"/opendevstack/3.x/quickstarters/ds-jupyter-notebook.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"117":{"id":117,"text":"This boilerplate enables data scientists to develop, serve, version models within a CI/CD pipeline hosted on OpenShift with the goal in mind that one does not have to take care/change much of the needed pipeline and infrastructure. For pull requests and discussion regarding direction, please pull in @hugowschneider, @sklingel and @gerardcl The boilerplate provides a two pod setup in OpenShift, one pod for training service and one pod for prediction service. From one Dockerfile, under docker folder, both training and prediction services are built. If required, one can edit it in order to provide different dependency management workflows for each service. The training service provides a pod that is able to reproduce/retrain the model that is developed in the current commit either locally on OpenShift or execute the training on a remote linux system using ssh. The training process is wrapped into a flask server to be able to monitor and possible restart the training process. Moreover, the training service offers an endpoint for downloading the created model afterwards. Additionally, unittests and integration tests are executed on the training pod, in order to not depend on operating dependencies in the jenkins agent. The prediction service provides a simple flask service for getting new predictions out of your model by making json posts to the prediction REST endpoint. The prediction service is already built with the newly trained model from the training pod. The Jenkinsfile organizes the correct succession of spinning up the training, executing it and starting the new deployment of the prediction service. Additionally, it triggers unittest ensuring the code is functionally before a new training process is started. Moreover, integration tests are run against the reproduced model wrapped into the prediction REST endpoint to ensure that the reproduced model (performance) behaves as expected also when wrapped in the flask service. External files that are needed either for building your model or docker images are stored under resources. For demonstration purposes a training and test csv file is stored in resources. This approach has to be reevaluated for each new use case, considering data size and confidentiality. The src folder contains the infrastructure coded needed for providing the services in OpenShift in src/services. Custom code for developing your prediction service is organized in the src/model package. In the (common) src/requirements.txt you can specify python dependencies for training, prediction and tests. To keep it simple, there is only one requirements.txt for both pods. The test directory mirrors the structure of the src, either for unittests or integration tests using the python unittest framework. To run your own customized models there is usually no need to change either the Jenkinsfile, OpenShift setup or the training and prediction microservices. Custom model code will go under src/model and can be organized in custom packages like showcased with the src/model/data_cleaning and src/model/feature_prep. In general, it can be organized as the users prefers. There are no further restrictions for developing the in the style you want, for the exception to provide the mandatory functions and attributes in src/model/model_wrapper.py for the `ModelWrapper class: prep_and_train: is called by the train script (which one can customize) and expects a pandas dataframe (current implementation). The train script is called by the training service prep_and_predict: is called by the predict endpoint service from the prediction service. It consumes the json post as a dictionary. The predict endpoint executes prep_and_predict. Good practice: source_features, specifying the name that are used a input for the model. This features include really the source columns from which also more complicated features are derived within the model boundaries Good practice: target_variable, name of the variable that should be used as target for a possible supervised approach. As well as the train function in the src/trainer.py. It specifies how the model should be trained. Make sure your specified all dependencies in the requirements.txt. It is recommended to develop your code against the python interpreter & dependencies specified in the docker images. This can be easily achieved, either by using an IDE that supports that (e.g. PyCharm) or by doing manually in the docker container. In order to ensure complete reproducibility, in case train and/or test data can’t be committed to a git repository due to size or confidentiality/data privacy considerations, data versioning can be achieved using the built in dvc data version capabilities.` Moreover, technical user account is needed so that the CI/CD pipeline is able to pull the data dependencies from the remote data versioning repository. Do the following steps in order to make use of the data versioning capabilities Initialize the quickstarter repository as a dvc repository: dvc init Setup the a remote repository on a remote ssh machine, e.g. Data Lake dvc remote add ssh://:/ Configure authentification. For local development you can set your own user account, assuming it has access to or use a technical user account. dvc remote modify user and set the prompt for password, so that you don’t commit your password to the repository dvc remote modify ask_password True Start adding files that should be tracked by data versioning dvc add this will create a new file with meta information about called .dvc. This meta file needs to be tracked with git, so that it is ensured that each git commit is linked with a specific data version git add .gitignore .dvc Modify your train() and potentially the integration tests to pull the data dependencies from the remote repository. A helper class is provided in src/services/remote/dvc/data_sync.py that can be used as follows: from services.infrastructure.remote.dvc.data_sync import DataSync syncer = DataSync(dvc_data_repo, dvc_ssh_user, dvc_ssh_password) syncer.pull_data_dependency(file_name) Commit your code and push the data versioned files to the remote repository git commit dvc push -r git push In order for a successful Jenkins build, the following environment variables need to be set in the training pod deployment: DSI_DVC_REMOTE, DSI_SSH_USERNAME, `DSI_SSH_PASSWORD An example implementation of a custom model is given in src/model, to demonstrate how to organize custom code. A Logistic Regression using scikit-learn with some (unnecessary) feature cleaning and engineering is trained on the iris data flower set. Iris flower data set. (n.d.). In Wikipedia. Retrieved January 7, 2019, from https://en .wikipedia.org/wiki/Iris_flower_data_set Training Build Config name: -training-service variables: None Deployment Config name: -training-service variables: DSI_EXECUTE_ON: LOCAL DSI_TRAINING_SERVICE_USERNAME: auto generated username DSI_TRAINING_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Prediction Build Config name: -prediction-service variables: None Deployment Config name: -prediction-service variables: DSI_TRAINING_BASE_URL: http://-training-service..svc:8080 DSI_TRAINING_SERVICE_USERNAME: username of the training service DSI_TRAINING_SERVICE_PASSWORD: password of the training service DSI_PREDICTION_SERVICE_USERNAME: auto generated username DSI_PREDICTION_SERVICE_PASSWORD: auto generated password Route: None by default - no routes exposed to internet Remote training allows you to run your training outside of the OpenShift training pod on a linux node using a ssh connection. A conda environment is installed in the remote node and the requirements specified in src/requirements.txt are installed. Once this step is finished the training is executed on that node and the trained model is transferred back to the training pod. To enable remote training set the DSI_EXECUTE_ON variable in OpenShift to SSH and specify the connection information in the environment variables: DSI_SSH_HOST, DSI_SSH_PORT, DSI_SSH_USERNAME and DSI_SSH_PASSWORD. / : Return all information about the training service /start : Starts the training. /finished : Checks if the current traning task is finished /getmodel : Download the latest trained model /predict : Return all information about the training service payload: Should be a json containing the data necessary for prediciton. The payload is not pre defined, but it is defined by the trainined model There is not need for any kind of payload in all endpoints. Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_EXECUTE_ON Where the train should be executed LOCAL, SSH DSI_TRAINING_SERVICE_USERNAME Username to be set as default username for accessing the services string, required DSI_TRAINING_SERVICE_PASSWORD Password to be set as default password for accessing the services string, required Following variables are applicable if DSI_EXECUTE_ON=SSH DSI_SSH_HOST SSH host name where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) host names or ip addresses DSI_SSH_PORT SSH host port where train should be executed (Only applicable if DSI_EXECUTE_ON=SSH) port numbers (Default: 22) DSI_SSH_USERNAME SSH username for remote execution string\\ DSI_SSH_PASSWORD SSH password for remote execution string DSI_SSH_HTTP_PROXY HTTP proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_SSH_HTTPS_PROXY HTTPS proxy url for remote execution. This is needed if the remote machine needs the proxy for download packages and resources string DSI_DVC_REMOTE Name of the dvc remote repository that has been initialized with dvc string Environment Variable Description Allowed Values DSI_DEBUG_MODE Enables debug mode true, 1 our yes for debug mode, otherwise debug is disasbled DSI_TRAINING_BASE_URL The base url where the prediction service should get the model from url (e.g. https://training.OpenShift.svc DSI_TRAINING_SERVICE_USERNAME Username of the training service string, required DSI_TRAINING_SERVICE_PASSWORD Password of the training service string, required DSI_PREDICTION_SERVICE_USERNAME Username to be set as default username for accessing the service string, required DSI_PREDICTION_SERVICE_PASSWORD Password to be set as default password for accessing the service string, required The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Prepare build Sonarqube checks Build training image Deploy training pod Unittests Execute/reproduce training either on openshift pod or in ssh remote machine Integration test against the newly trained model wrapped in the flask /prediction endpoint Build prediction image Deploy prediction service jenkins-agent-python Python 3.8 Python Flask 1.1.2 Not ready for R models yet In the case of building the docker image from behind a proxy and encountering certificate issues, adding a -k to the curl command can mitigate that, consider however the implications of disabling certificate Consider moving to ssh remote server training, if you expect high and long computational load during training phase. It might cause unnecessary stress on the openshift cluster, otherwise.","title":"Data Science Industrialization Boilerplate","component":"opendevstack","version":"3.x","name":"ds-ml-service","url":"/opendevstack/3.x/quickstarters/ds-ml-service.html","titles":[{"text":"Basic Setup","hash":"_basic_setup","id":1},{"text":"Container services","hash":"_container_services","id":2},{"text":"Jenkins","hash":"_jenkins","id":3},{"text":"External Files","hash":"_external_files","id":4},{"text":"src - the heart of your service","hash":"_src_the_heart_of_your_service","id":5},{"text":"test","hash":"_test","id":6},{"text":"How to Code Your Own Models","hash":"_how_to_code_your_own_models","id":7},{"text":"How to Develop your Model Locally","hash":"_how_to_develop_your_model_locally","id":8},{"text":"Data Versioning","hash":"_data_versioning","id":9},{"text":"Example & Example Dataset","hash":"_example_example_dataset","id":10},{"text":"Structure of the quick starter","hash":"_structure_of_the_quick_starter","id":11},{"text":"Remote Training","hash":"_remote_training","id":12},{"text":"Endoints","hash":"_endoints","id":13},{"text":"Training Endpoint","hash":"_training_endpoint","id":14},{"text":"Prediction Endpoint","hash":"_prediction_endpoint","id":15},{"text":"Environment Variables for training","hash":"_environment_variables_for_training","id":16},{"text":"Environment Variables for prediction","hash":"_environment_variables_for_prediction","id":17},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":18},{"text":"Builder agent used","hash":"_builder_agent_used","id":19},{"text":"Frameworks used","hash":"_frameworks_used","id":20},{"text":"Known limitions","hash":"_known_limitions","id":21}]},"118":{"id":118,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── docker - This folder contains Docker configuration settings and main R Shiny app │ ├── Dockerfile │ └── app.R ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift jenkins-agent-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"3.x","name":"ds-rshiny","url":"/opendevstack/3.x/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitions","hash":"_known_limitions","id":7}]},"119":{"id":119,"text":"cypress e2e testing quickstarter project This is a cypress e2e testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile ├── README.md ├── files │ ├── README.md │ ├── build │ │ ├── integration │ │ │ └── main.spec.js │ │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── cypress.json │ ├── fixtures │ │ └── example.json │ ├── integration │ │ └── main.spec.ts │ ├── package.json │ ├── plugins │ │ └── index.js │ ├── support │ │ ├── commands.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tslint.json ├── init.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager This project is generated by Angular CLI cypress TypeScript Run command npm install in project directory to install npm packages Run npm run e2e to execute the end-to-end tests via cypress against the test instance of the front end Run npm run watch to develop the e2e test. The tests will automatically rebuild and run, if you change any of the source files. The test will run against a local instance of the front end, e.g. localhost:4200. This destination is configurable in cypress.json. Provide credentials for a test user by defining them in a file called secrets.json inside the base directory. This file should have the following format: { \"e2e\": { \"testUserName\": \"User Name\", \"testUserPassword\": \"xxxx\" } } Please note: secrets.json is mentioned in .gitignore to prevent it from being added to version control. Please keep it this way. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there is the following stage: stageTest - Lint the TypeScript code by running npm install and npm run lint, and transpiles it to JavaScript and run the tests with the npm run build command. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. For now the URL of the front end instance to test is hard-coded inside the package.json file. There should be a better solution for handing this over. It is also possible to run npm run e2e-at with an additional parameter, e.g. npm run e2e-at https://domain.com.","title":"End-to-end tests with cypress (e2e-cypress)","component":"opendevstack","version":"3.x","name":"e2e-cypress","url":"/opendevstack/3.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"120":{"id":120,"text":"spock, geb and unirest e2e testing quickstarter project This is a spock, geb and unirest e2e testing project quickstarter with basic setup for Jenkins, SonarQube and Gradle. . ├── Jenkinsfile ├── README.md ├── sonar-project.properties ├── src │ ├── test │ │ └── acceptance │ │ │ └── groovy │ │ │ │ └── DemoAcceptanceSpec.groovy │ │ │ └── java │ │ │ └── DemoAcceptanceTest.java │ │ └── installation │ │ │ └── groovy │ │ │ │ └── DemoInstallationSpec.groovy │ │ │ └── java │ │ │ └── DemoInstallationTest.java │ │ └── integration │ │ │ └── groovy │ │ │ │ └── DemoIntegrationSpec.groovy │ │ │ └── java │ │ | └── DemoIntegrationTest.java │ │ └── resources │ │ └── application.properties │ │ └── GebConfig.groovy │ │ └── SpecHelper.groovy ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── build.gradle ├── gradlew └── gradlew.bat The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. This project is generated by Gradle spock geb unirest Run command gradlew test in project directory to execute the end-to-end tests via spock/geb against the Google Home page and demo jUnit 5 tests. You will see the results inside a new folder 'build' in project directory. . └── build └── test-results ├── acceptance-groovy │ └── TEST-DemoAcceptance.xml ├── acceptance-java │ └── TEST-DemoAcceptanceTest.xml ├── installation-groovy │ └── TEST-DemoInstallation.xml ├── installation-java │ └── TEST-DemoInstallationTest.xml ├── integration-groovy │ └── TEST-DemoIntegration.xml └── integration-java └── TEST-DemoIntegrationTest.xml You can see how a Java Junit 5 test are developed showing the Demo*Test.java files. You can see how a Groovy Spock/Geb test are developed showing the Demo*Spec.groovy files. The url to test with Geb is configured in the property config.application.url inside application.properties Inside GebConfig.groovy you could change the default navigator (CHROME) The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile.template, there is the following stage: stageTest - Run the programed e2e test with this order: installation-java installation-groovy integration-java integration-groovy acceptance-java acceptance-groovy All the results are stashed and published through Jenkins jUnit publisher. This quickstarter uses Maven builder agent Jenkins builder agent. NA","title":"End-to-end tests with Spock, Geb and Unirest (e2e-spock-geb)","component":"opendevstack","version":"3.x","name":"e2e-spock-geb","url":"/opendevstack/3.x/quickstarters/e2e-spock-geb.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Gradle Support","hash":"_gradle_support","id":3},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":4},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":5},{"text":"Frameworks used","hash":"_frameworks_used","id":6},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":7},{"text":"Customization - how do you start to configure your test","hash":"_customization_how_do_you_start_to_configure_your_test","id":8},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"121":{"id":121,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json This project is generated by Angular CLI Angular CLI Angular Typescript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: stageBuild - Builds the application by running npm install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. This will also create test coverage analysis data which will then be transfered to SonarQube during odsComponentStageScanWithSonar stageLint - Runs ng lint profiler by running command npm run lint. odsComponentStageScanWithSonar - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. Please note: By default the applciation is always build as full production build including all sorts of optimizations. In addition source maps will be added except for builds that are triggered from master. This can be changed by configuring (additional) build configurations within angular.json and by using them via stageBuild or package.json. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"3.x","name":"fe-angular","url":"/opendevstack/3.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"122":{"id":122,"text":"Ionic quickstarter project This quickstarter generates an Ionic 3 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/Typescript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. It scaffolds a tabbed app containing 3 basic pages (home, about and contact). . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── config - This folder contains Webpack and sass configuration settings ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── resources - This folder contains resources by platform ios, android ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.ts │ │ ├── app.html │ │ ├── app.module.ts │ │ ├── app.scss │ │ └── main.ts │ ├── assets │ ├── environments │ │ ├── environment.dev.ts | | |__ environment.e2e.ts │ │ └── environment.ts │ ├── pages │ ├── providers │ ├── theme │ ├── index.html │ ├── manifest.json │ ├── polyfills.ts │ ├── service-worker.js │ ├── test.ts │ └── tsconfig.spec.json ├── www ├── .angular-cli.json - This file contains Angular project configuration settings ├── config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── .ionic.config.json - This file contains Ionic project configuration ├── karma.conf.js ├── protractor.conf.js ├── tsconfig.json └── tslint.json Ionic CLI Ionic Framework Angular Typescript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g ionic Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following main stages for this quickstarter: Build - Installs the dependencies of your project with yarn install, generates the build by running npm run ionic:build, if the merged git branch is master it creates the production build with npm run ionic:build --prod. Finally, it copies the output folder www into docker/dist. Unit Test - Runs unit test cases by executing yarn test command. If any test fails, the build is marked as failed. This will also create test coverage analysis data which will then be transfered to SonarQube. Lint - Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. SonarQube Analysis - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. This quickstarter uses Nodejs10-Angular builder agent Jenkins builder agent. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"3.x","name":"fe-ionic","url":"/opendevstack/3.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known Limitation","hash":"_known_limitation","id":7}]},"123":{"id":123,"text":"Table of Contents Overview Available, official quickstarters Backend Quickstarter Frontend Quickstarter Data Science Quickstarter E2E Test Quickstarter ODS Contribution Quickstarter Authoring quickstarters Quickstarters are basically templates that help to start out with a component quickly. A quickstarter provides a specific technology, potentially with a framework setup already, such as Java with Springboot in the case of the be-java-springboot quickstarter. Compared to starting out from scratch, using a quickstarter typically helps by: setting up a repository in Bitbucket with webhooks to trigger Jenkins builds shipping a Jenkinsfile with a pipeline that builds and deploys the component (delegating most of the work to the shared library) providing a basic test setup with xUnit reports and code coverage integrating with SonarQube out-of-the-box (including code coverage report) setting up OpenShift resources to build and run the component creating a boilerplate application with one or more sample endpoints Quickstarters are used from the Provisioning App, which allows to add a component to an existing project by running a quickstarter from the configured list of available quickstarters. This list can contain quickstarters from the official repository, ods-quickstarters, or from some other repository such as internally hosted ones in your Bitbucket instance. Backend - Gateway/Nginx Backend - Go Backend - Java/SpringBoot Backend - TypeScript/Express Backend - Python/Flask Backend - Scala/Play Frontend - Angular Mobile - Ionic Data Science - Machine Learning Data Science - Jupyter Notebook Data Science - R-Shiny E2E test - Cypress E2E test - Spock / Geb ODS Fork - Document Generation Service ODS Fork - Provisioning Application Next to those, there is a \"blank\" quickstarter (Docker/Plain) allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences. As mentioned above, it is possible to supply your own quickstarters. Pleasee see the authoring quickstarters guide on how to make completely new quickstarters or how to adapt existing quickstarters to your needs.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"3.x","name":"index","url":"/opendevstack/3.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Available, official quickstarters","hash":"_available_official_quickstarters","id":2},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":3},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":4},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":5},{"text":"E2E Test Quickstarter","hash":"_e2e_test_quickstarter","id":6},{"text":"ODS Contribution Quickstarter","hash":"_ods_contribution_quickstarter","id":7},{"text":"Authoring quickstarters","hash":"_authoring_quickstarters","id":8}]},"124":{"id":124,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-document-generation-svc None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc N/A","title":"Contribution ODS Document Generation Service (ods-document-gen-svc)","component":"opendevstack","version":"3.x","name":"ods-document-gen-svc","url":"/opendevstack/3.x/quickstarters/ods-document-gen-svc.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"125":{"id":125,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-provisioning-app None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app N/A","title":"Contribution ODS Provisioning Application (ods-provisioning-app)","component":"opendevstack","version":"3.x","name":"ods-provisioning-app","url":"/opendevstack/3.x/quickstarters/ods-provisioning-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"126":{"id":126,"text":"The release manager supports the orchestration of multiple repositories into a live application. . ├── docs # Fall-back document chapter templates for (LeVA) compliance reports. ├── Jenkinsfile # The release manager pipeline. ├── README.md └── metadata.yml # Configuration of the release manager pipeline and its repositories. The release manager automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A url: https://github.com/my-org/my-repo-A.git branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. This type designates ODS components designed for running some service. Examples include repositories based on the be-gateway-nginx quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. If no url parameter is provided for a repository configuration in the metadata.yml, the release manager will attempt to resolve it based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, the release manager automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. The release manager automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process. Note: when you configure a Jira service in metadata.yml, the release manager expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the release manager will fall back to the document chapter templates located in the docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. If you want your target environment to be created from an existing source environment such as dev or test on the fly, you need to provide the environment and sourceEnvironmentToClone parameters to your pipeline, respectively. Their values will be combined with your project ID in the form ${project-id}-${environment} to create the project (namespace) name in your OpenShift cluster.","title":"Release Manager","component":"opendevstack","version":"3.x","name":"release-manager","url":"/opendevstack/3.x/quickstarters/release-manager.html","titles":[{"text":"File Structure","hash":"_file_structure","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":12},{"text":"Automated Cloning of Environments","hash":"_automated_cloning_of_environments","id":13}]},"127":{"id":127,"text":"Tailor has been developed for OpenShift 3.11. Back in the days, Helm 2 required the use of a privileged Tiller service and did not work well with OpenShift-specific resources. With Helm 3 and OpenShift 4, this situation has changed. While Tailor also works in an OpenShift 4 cluster, OpenShift has integrated Helm into its product, and Helm has a huge and growing community. Therefore, it is recommended to use Helm instead of Tailor in an OpenShift 4 cluster. Tailor is based on OpenShift templates, which define the Kubernetes resources to apply. Helm uses a different templating language / engine, but in the end the templates also describe Kubernetes resources. Therefore, migration effort is relatively low as one only needs to change the syntax of the definition, not the definition itself. Further, there are differences between the CLI of the two tools and not all features of Tailor are available in Helm and vice-versa. Once migration to Helm is complete, it is also recommended to look at the best practices in the Helm community and adopt these. This document will describe how to adopt resources deployed using Tailor into a Helm release for OpenDevStack installation. There are basically two options how to approach this: you can either adopt your existing OpenShift resources to chart templates, or you can start a clean installation. Once the templates have been made ready, you can continue the installation/update following the normal process In order to adopt the resources into a Helm release you can use the following script https://github.com/opendevstack/ods-core/blob/master/scripts/tailor2helm.sh In this case you will need to remove all existing resources for the component that has been previously deployed using Tailor, you can check existing resources like this: oc -n ods get all -l app=foo-bar Check more information about migration from tailor to helm and their differences in https://github.com/opendevstack/tailor/wiki/Migrating-from-Tailor-to-Helm","title":"Migrating from Tailor to Helm","component":"opendevstack","version":"4.x","name":"helm-migration","url":"/opendevstack/latest/administration/helm-migration.html","titles":[{"text":"Templates preparation","hash":"_templates_preparation","id":1},{"text":"Option 1: Adopting OpenShift resources","hash":"_option_1_adopting_openshift_resources","id":2},{"text":"Option 2: Clean Installation","hash":"_option_2_clean_installation","id":3},{"text":"Sources","hash":"_sources","id":4}]},"128":{"id":128,"text":"ODS makes use of and provides a few container images. This document will detail which container images are used, how contaienr images are built during an ODS installation, and how images are consumed by users of ODS. There are three broad categories of images: Images used in the central ODS namespace Images used in the *-cd namespace of each ODS project Application images used in the -dev and -test namespace Every category has different lifecycles. Those images are owned by ODS admins. Examples of such images include the SonarQube image and the Nexus image. All of the images used by containers in the central ODS namespace are built by ODS during its installation. No container uses a vanilla image as provided by e.g. DockerHub or quay.io. Each image is created through a BuildConfig, and placed into an ImageStream. The BuildConfig defines which Dockerfile is used, and which base image is used to build from. The base image can be pulled from DockerHub (e.g. in case of SonarQube or Nexus), but it can also be from another registry (e.g. in case for the Jenkins Master image, it might be from registry.access.redhat.com or registry.redhat.io). The images are built during installation or upgrade of ODS, and tagged with the value of the configuration parameter ODS_IMAGE_TAG. Once an image has been built, it is not changed until a new build is triggered - that means that even if the base image changes, it has no effect on the images in the central ODS namespaces unless an admin triggers a new build for that image. Further, a new image does not necessarily equal an update to the deployment. Admins have to ensure that new deployments are rolled out so that the new images get picked up. Those images are also owned by ODS admins, and also built in the central ODS namespace like the first category, but the deployments are running in each ODS project. The images in this catgeory are the Jenkins related images (master, agents, webhook-proxy), and potentially also the image for the document generation service. Note that building a new image in the central ODS namespace does not equal an update of the deployments in each *-cd project. This is because no image triggers are defined on the DeploymentConfig resources. While having such a trigger sounds convenient at first, it is actually not desirable. The main reason is that the rollouts started from an image trigger cannot be controlled, leading to simultaneous restarts which runs the risk of putting a huge amount of load on the cluster. A downside of not having a trigger is that it is cumbersome for ODS admins to rollout bugfixes and security patches to running instances such as the Jenkins Master or the webhook proxy. At the moment, there is no easy, automated, solution to this. However, you might be interested in an experimental tool, oc-batch-rollout, which allows admins to trigger rollouts in a controlled fashion. Those images are owned by ODS users and are built using BuildConfig resources in the respective namespace. The build is triggered from the Jenkins pipeline. The BuildConfig refers to a Dockerfile in the application repository, which refers to an image (typically from DockerHub) in its FROM instruction. Which image gets pulled from DockerHub is completely dependent on which image tag is specified in the FROM instruction. Authors of the Dockerfile are free to be as specific or inspecific as they want, e.g. they could point to the latest tag or use a more stable version published by the base image owner. Therefore, updates to the base image of application images take effect on every build. Once an application runs in a pod though, its image is not automatically updated when the base image changes in DockerHub. Also it is important to note that updates to the Dockerfile in a quickstarter have no effect on an application, even if the application was originally provisioned using that same quickstarter. The reason is that there is no ongoing link between a quickstarter (which is like a template) and the created component (which is like an instance). Depending on the category of the image as outlined above, vulnerabilities in those image have different impact, and also different mitigation paths. Vulnerabilities in application images have a high impact, but mitigation is relatively easy. If the vulnerability is within the base image, and the latest image of the currently used image tag has the vulnerability fixed, one simply needs to trigger a new Jenkins job, which builds a new image, and deploys that new image. If the image tag referenced in the FROM instruction of the Dockerfile does not contain the security fix, one can attempt to change to an image tag which is not vulnerable. Finally, the vulnerability might not be in the base image, but in the Dockerfile of the application, in which the security fix can be applied there. Vulnerabilities in images used in the -cd namespace of each ODS project are a bit harder to mitigate. This is because the vulnerability can be in the base image or in the ODS customisation of it. Further, to actually fix the vulnerability in the running container, one needs to built a new vulnerabilty-free image and have that rolled out to each -cd namespace (remember there are no automatic image triggers). Vulnerabilities in images used in the central ODS namespace are very similar to this. However, since all deployments in the ODS namespace are controlled by the ODS administrator, updating them is easier from a process perspective then the containers in the *-cd namespaces.","title":"Image Lifecycles","component":"opendevstack","version":"4.x","name":"image-lifecycle","url":"/opendevstack/latest/administration/image-lifecycle.html","titles":[{"text":"Categories of images","hash":"_categories_of_images","id":1},{"text":"Images used in the central ODS namespace","hash":"_images_used_in_the_central_ods_namespace","id":2},{"text":"Images used in the *-cd namespace of each ODS project","hash":"_images_used_in_the_cd_namespace_of_each_ods_project","id":3},{"text":"Application images used in the -dev and -test namespace","hash":"_application_images_used_in_the_dev_and_test_namespace","id":4},{"text":"Vulnerabilities in images","hash":"_vulnerabilities_in_images","id":5}]},"129":{"id":129,"text":"This page is outdated. Please follow the new installation guide instead. However, some parts are still missing there so you might find this page useful. The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables. The ansible role definitions are located in the ods-core repository at infrastructure-setup/ansible/roles Note that there are two different types of roles: roles starting with modified or local; these roles are modified by the OpenDevStack members and are maintained by them all other roles, e.g geerlingguy.git, which are copied roles from ansible galaxy. The roles from ansible galaxy are specified in the requirements.yml file. In order to migrate to a new version of the role, you need to specify the version in the requirements.yml file run ansible-galaxy install Example: update geerlingguy.git to version 2.1.0 Update requirements.yml: - src: geerlingguy.git version: 2.1.0 Call ansible-galaxy install: export ANSIBLE_VAULT_PASSWORD_FILE=/vagrant/ansible/.vault_pass.txt && ansible-galaxy install -r requirements.yml -p roles - andrewrothstein.openshift-origin-client-tools (v1.0.9) is already installed, skipping. - geerlingguy.nginx (2.6.2) is already installed, skipping. - geerlingguy.docker (2.0.4) is already installed, skipping. - downloading role 'git', owned by geerlingguy - downloading role from https://github.com/geerlingguy/ansible-role-git/archive/2.1.0.tar.gz - extracting geerlingguy.git to /vagrant/ansible/roles/geerlingguy.git - geerlingguy.git (2.1.0) was installed successfully","title":"Infrastructure Setup","component":"opendevstack","version":"4.x","name":"infrastructure-setup","url":"/opendevstack/latest/administration/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1},{"text":"How to update ansible roles","hash":"_how_to_update_ansible_roles","id":2}]},"130":{"id":130,"text":"This document will guide you through installing / maintaining an OpenDevStack installation. Installing OpenShift is out of scope for this guide. We assume you have an OpenShift 3.11 cluster running already. If so, ensure that the cluster nodes have vm.max_map_count set to at least 262144, otherwise you’ll not be able to install SonarQube later on. You may change this setting via sudo sysctl -w vm.max_map_count=262144. If you do not have an OpenShift cluster yet, and just want to try things out, you may use oc cluster up to spin up a temporary cluster. Note that this will only work on Linux and we recommend to have at least 16GB RAM and 32GB of available disk space. From now on we assume you work from a Bash terminal (Cygwin / Linux). In this terminal, you’ll ned a recent git version (>= 2.13.2) and a recent jq version (>= 1.5, see https://stedolan.github.io/jq/) in your $PATH. Before you can install OpenDevStack (no matter whether locally or on another server) you need to have the ODS repositories available on your local machine. For this purpose, ODS provides a script to setup all required repositories with the same Git ref easily. This script needs to be downloaded to the umbrella directory which should hold all ODS respositories. The following example shows how to do this for the master version, please use the exact version you want to install (e.g. v4.0.0): UMBRELLA_DIR=~/opendevstack GIT_REF=master mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF After running this script, all required repositories should be available locally. Go to ods-core and run: make prepare-config If you want to install OpenDevStack for the first time, leave the BitBucket URL empty. After the configuration is prepared (which means that a directory ods-configuration will be created if it does not exist yet), fill out all the parameters in ods-core.env in directory ods-configuration for your installation. Add all files of directory ods-configuration to git and commit the result. You don’t need to push yet, this will be done later. \"Preparing\" also updates the sample files and checks if any params are present in the sample files but missing from the real file. If you are using windows Cygwin or WSL remember to change ending line CRLF to LF before commit ods-core.env, you can find more information on configure Git ending line At this stage you have to setup the Atlassian suite (Jira, Confluence, Bitbucket, Crowd) if it does not exist yet. If you already have an installation the Atlassian suite, you now need to configure it to work with OpenDevStack. Documentation for the installation and configuration of the Atlassian suite is missing at the moment. The general setup is described in https://github.com/opendevstack/ods-core/tree/master/infrastructure-setup, but this will likely need adaption to your specific environment. After Crowd is running, ensure that there is a user corresponding to the CD_USER_ID_B64/CD_USER_PWD_B64 parameters in ods-core.env. On Bitbucket, there must be an OPENDEVSTACK project filled with the necessary repositories such as ods-core. To set them up, use: make prepare-bitbucket-repos Notice that prepare-bitbucket-repos expects a running Atlassian suite (it will not spin up a new Bitbucket instance). Then, update them with the latest state so that they can be used e.g. from BuildConfig resources in OpenShift: make push-local-repos You also need to update ods-configuration, which can be done via: git remote add origin git push -u origin master Finally, it is required to create a Git ref in the ods-jenkins-shared-library which matches the ODS version you want your users to consume (as specified by ODS_IMAGE_TAG in the configuration): make set-shared-library-ref We use Tailor to handle OpenShift templates and keep OpenDevStack resources in sync. Tailor is a tool which needs to be installed on your local machine. Please see its installation instructions for your platform. Following are the version requirements: OpenDevStack version Tailor version 3.x >= 1.2.2 2.x >= 0.13.1 1.2.x = 0.9.3 1.1.x = 0.9.3 1.0.x = 0.9.1 0.1.x = 0.8 OpenDevStack needs one central project in OpenShift, which will hold all shared resources such as images or deployments. This project is typically called ods, but you can customize this in the configuration via ODS_NAMESPACE. For the following steps, you must be logged into OpenShift (using oc login --token=) with a user that has cluster-admin rights. In ods-core run: make install-ods-project A central Nexus deployment is used to proxy packages and to store artifacts. In ods-core run: make install-nexus Afterwards, run the initial configuration: make configure-nexus In the course of this you will be prompted to set a new admin password. The configure-nexus target is not idempotent yet, so it cannot be used for upgrading! A central SonarQube deployment is used to analyze source code. In ods-core run: make install-sonarqube This will launch an instance of SonarQube. The script will prompt for a new admin password. Once this has been set, an auth token for the Jenkins pipelines will be generated. Both values are automatically written into ods-configuration/ods-core.env, which you then need to commit and push. Also, you have to add the cd-user as a user in the project permissions of your Bitbucket OpenDevStack project. Read permission is sufficient. Central Jenkins images (master, agent, webhook proxy) are used by every ODS project. In ods-core run: make install-jenkins Then, there are further Jenkins agent images for each quickstarter technology. To create those images, run the following from ods-quickstarters: make install-jenkins-agent At this stage you can setup or modify the image stream for the Document Generation service. In ods-core run: make install-doc-gen At this stage you can setup or modify the provisioning application. In ods-core run: make install-provisioning-app Congratulations! At this point you should have a complete ODS installation. Try it out by provisioning a new project with the provisioning application.","title":"OpenDevStack Setup","component":"opendevstack","version":"4.x","name":"installation","url":"/opendevstack/latest/administration/installation.html","titles":[{"text":"Server prerequisites","hash":"_server_prerequisites","id":1},{"text":"Local Setup","hash":"_local_setup","id":2},{"text":"Repositories","hash":"_repositories","id":3},{"text":"Configuration","hash":"_configuration","id":4},{"text":"Atlassian Suite","hash":"_atlassian_suite","id":5},{"text":"Bitbucket Repositories","hash":"_bitbucket_repositories","id":6},{"text":"OpenDevStack environment in OpenShift","hash":"_opendevstack_environment_in_openshift","id":7},{"text":"Tailor","hash":"_tailor","id":8},{"text":"Central ODS project","hash":"_central_ods_project","id":9},{"text":"Nexus","hash":"_nexus","id":10},{"text":"SonarQube","hash":"_sonarqube","id":11},{"text":"Jenkins","hash":"_jenkins","id":12},{"text":"Document Generation service","hash":"_document_generation_service","id":13},{"text":"Provisioning Application","hash":"_provisioning_application","id":14}]},"131":{"id":131,"text":"Table of Contents Realm master Users Realm opendevstack Groups Users Client ods-provisioning-app Keycloak is an open source identity and access managment tool. OpenDevStack uses eigther Atlassian Crowd or OpenID Connect / OAuth 2.0 protocol for authentication users of provisioning app. The usage of Keycloak is optional. Instead of keycloak, Atlassian Crowd can still be used for authentication. See documentation under ODS-Components → Provisioning App → Configuration Guide regarding the configuration of provisioning app. Setup of keycloak for local-installation is all done without further manual setup actions by starting the vagrant-box idmanager. User Password Roles admin admin keycloak admin There is (beside the master realm) one single OpenDevStack-specific realm: opendevstack. There are two OpenDevStack-specific groups inside the opendevstack realm: opendevstack-administrators opendevstack-users User Password Groups admin1 admin1 opendevstack-administrators opendevstack-users user1 user1 opendevstack-users There is one OpenDevStack-specific client inside the opendevstack realm: ods-provisioning-app. There is a protocoll mapper called Group Mapper that maps the user’s group membership to a token claim with name roles.","title":"Keycloak","component":"opendevstack","version":"4.x","name":"keycloak","url":"/opendevstack/latest/administration/keycloak.html","titles":[{"text":"Realm master","hash":"_realm_master","id":1},{"text":"Users","hash":"_users","id":2},{"text":"Realm opendevstack","hash":"_realm_opendevstack","id":3},{"text":"Groups","hash":"_groups","id":4},{"text":"Users","hash":"_users_2","id":5},{"text":"Client ods-provisioning-app","hash":"_client_ods_provisioning_app","id":6}]},"132":{"id":132,"text":"In ODS 2, there was a central namespace cd, alongside 3 namespace dedicated to the provisioning app: prov-cd, prov-dev and prov-test. In ODS 3, there is only one namespace ods, which contains the whole OpenDevStack installation. When updating from ODS 2 to ODS 3, you will need to move the services running in cd, prov-cd and prov-test to ods. In detail: SonarQube is moving from cd to ods Nexus is moving from cd to ods Jenkins (Master and Webhook Proxy) is moving from prov-cd to ods Provisioning App is moving from prov-test to ods The Provisioning App will make use of the Jenkins instance in ods to provision new ODS projects. Apart from the instances, also all build configurations and image streams are moving from cd to ods, which means all users need to pull images from the new namespace. With that in mind, we can start the update procedure! Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. To do so, run the following and select the version you want to install (3.x). make sync-repos If your OpenDevStack installation is based on a custom branch (such as 3.acme), then you need to create a pull request on BitBucket from 3.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor. 3.x requires Tailor 1.2.2. Run: make prepare-config In 2.x, the Jenkins master base image was pulled from the openshift namespace. The agent base image could have been pulled from that namespace as well, or directly from a registry. In 3.x, the master can also be pulled directly from a registry. The advantage of this is that you do not need to worry about the import policy set in the openshift namespace, which can have suprising results (e.g. your base image never updating even though a fix has been released by RedHat). The behaviour is defined by a new configuration parameter, JENKINS_MASTER_BASE_FROM_IMAGE. Further, in 2.x you had to pick (via JENKINS_AGENT_BASE_IMAGE) whether you wanted to use Dockerfile.centos7 or Dockerfile.rhel7. However, both files contained the same instructions. Therefore, those were combined into a single Dockerfile and you only need to choose which base image to use via JENKINS_AGENT_BASE_FROM_IMAGE (like before). After you have updated/added/removed all parameters with your desired values, commit and push the result. Next you need to update all OpenShift resources (such as DC or BC). Review the diff produced by Tailor carefully before applying changes. In ods-core, run: make install-ods-project make install-jenkins make install-nexus make install-doc-gen In ods-quickstarters, run: make install-jenkins-agent With OpenDevStack version 3.x the \"production\" instance of the Provisioning App is moving from the prov-test to the ods namespace. The following steps describe how to perform the change: Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Install the Provisioning App in the ods namespace make install-provisioning-app Copy backed up data to new instance oc cp ./history ods/:/opt/provision Depending on your use of the Provisioning App you can either: delete all prov-* namespaces if you are only interested in running a \"production\" instance. only delete the data under /opt/provision/history in the prov-test namespace if you want to keep your setup. With OpenDevStack version 3.x SonarQube is moving from the cd namespace to the ods namespace. The following outlines the procedure for SonarQube: Create the SonarQube build resources in ods using make apply-sonarqube-build Start build of SonarQube image in ods using make start-sonarqube-build Scale down the SonarQube pod in cd Create a backup of the old data using make ODS_NAMESPACE=cd backup-sonarqube Create the SonarQube deploy resources in ods using make apply-sonarqube-deploy Scale down the SonarQube pod in ods Upload backup to new Postgres pod: oc -n ods cp sonarqube/sonarqube.sql :/var/lib/pgsql/ Start a bash in the Postgres pod: oc rsh -n ods pod/ bash and start a psql session. Drop the sonarqube database (DROP DATABASE sonarqube) and create a new, empty one (CREATE DATABASE sonarqube OWNER sonarqube). Then quit from psql. Import the backup with psql sonarqube System\". Then, start a bash in the SonarQube pod: oc rsh -n ods pod/ bash and remove /opt/sonarqube/data/es6. Afterwards, restart the server from the UI (there’s a button on the \"Administration > System\" page). Booting will take some time (depending on the amount of data to process) as a full re-index is performed. Call make configure-sonarqube to verify the new installation is correctly configured. Now delete the old SonarQube route in cd. Create a new route in ods with the same host as the old route so that projects using the old URL don’t break. Checking for secure routes has been removed from the core, but is still available at https://github.com/BIX-Digital/ods-contrib.","title":"","component":"opendevstack","version":"4.x","name":"update-2-to-3","url":"/opendevstack/latest/administration/update-2-to-3.html","titles":[{"text":"New central namespace","hash":"_new_central_namespace","id":1},{"text":"Update your OpenDevStack repositories","hash":"_update_your_opendevstack_repositories","id":2},{"text":"Backup","hash":"_backup","id":3},{"text":"Tailor","hash":"_tailor","id":4},{"text":"Configuration","hash":"_configuration","id":5},{"text":"OpenShift resources","hash":"_openshift_resources","id":6},{"text":"Provisioning App changes","hash":"_provisioning_app_changes","id":7},{"text":"SonarQube changes","hash":"_sonarqube_changes","id":8},{"text":"Secure route removal","hash":"_secure_route_removal","id":9}]},"133":{"id":133,"text":"Learn all about how to update your OpenDevStack repositories and the running installation of it. Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. First, you need a clone of each repository in BitBucket which should be updated on your local machine. Once this has been done, you need to fetch new refs from github.com/opendevstack. To do so, add a remote pointing to it like this: git remote add ods https://github.com/opendevstack/.git Now you are ready to update the refs. It is recommended to update both the master branch and, unless you want to live off the bleeding edge, a release branch such as 2.x. Use the steps shown below: # Ensure you have the latest refs from ODS locally git fetch ods # Update master git checkout master git reset --hard ods/master git push origin master # Update 2.x git checkout 2.x git reset --hard ods/2.x git push origin 2.x If your OpenDevStack installation is based on a custom branch (such as 2.acme), then you need to create a pull request on BitBucket from 2.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Updating consists of two parts: following the general update procedure (applicable to all version updates) and a version specific update procedure. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor to the version corresponding to your new OpenDevStack version, which is noted at the start of each version specific update procedure. Then, update/add/remove the configuration parameters (located in ods-configuration). To do this, use the ./update script located in ods-core/configuration-sample. Next, run tailor update in ods-core and ods-quickstarters to bring all OCP resources (such as DC or BC) into sync. Review the diff produced by Tailor carefully, especially around changes to PVCs. After all OCP resources have been updated, you need to start a build for all build configs in the cd namespace to create new images. Also, the provisioning app should be updated. To do that, run tailor update in each ocp-config folder, and then trigger a build in Jenkins to redeploy the service. Now that the general procedure has been completed, you need to apply all the update notes below which apply to your version change. 2.x requires Tailor 0.11.0. Secure route checking has been removed for version 3.x as this is an optional step. The code now is available at https://github.com/BIX-Digital/ods-contrib. Go to ods-core/check-ocp-secure-routes/ocp-config and run tailor update to setup a cron job that will check exposed routes once a day (see https://github.com/opendevstack/ods-core/pull/280). As each project may use a specific CD user now, you have to configure the username of the global CD user. To do so, add username: Y2RfdXNlcg== to secret cd/cd-user-token. The shared-images namespace is no longer part of OpenDevStack. If you do not have any users that use images from that namespace, you may simply delete it via oc delete project shared-images. Otherwise, you can leave it in place and remote it when you see fit. Rundeck is longer part of OpenDevStack and can simply be removed. Images in the cd namespaces should be pullable from all authenticated users. This permission is required for the new project provisioning approach to work: oc adm policy add-cluster-role-to-group system:image-puller system:authenticated -n cd oc adm policy add-role-to-group view system:authenticated -n cd Further, -dev and -test namespaces should be able to pull images from the corresponding *-cd namespaces to make it easy to shared base images within a project (see https://github.com/opendevstack/ods-core/issues/293). It is recommended to grant these rights for every project in your cluster. If you don’t do this, users will have to add the permissions manually if they want to use this flow. 2.x allows the webhook proxy to build repositories in external projects if configured (see https://github.com/opendevstack/ods-core/issues/229). This feature is required for the new quickstarter provisioning approach to work. Therefore, it is recommended to tag a webhook proxy images built from the 2.x branch or v2.0 tag with latest so that all webhook proxies in the cluster get updated. Review the ConfigMap of the provisioning app in prov-dev and prov-test. Depending on your requirements, you might want to configure additional quickstarters (jenkinspipeline.quickstarter…​) and/or change the readable repositories of the project specific users (scm.global.readablerepos.opendevstack[x]) 1.2.x requires Tailor 0.10.2. The new functionality to create documents via Jenkins requires the presence of an image for the DocGen service. In an upcoming release, this will be integrated nicely. For 1.2.x, the image needs to be built once during the update procedure. The recommended way to do this is to build the image in the prov namespaces and then move the image tag into the cd namespace. The first step is to create a pipeline oc -n prov-cd process -f pipeline.yml --param REPO_BASE= --param TRIGGER_SECRET= | oc -n prov-cd create -f -, where pipeline.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: docgen-production spec: nodeSelector: {} output: {} postCommit: {} resources: {} runPolicy: Serial source: git: ref: production uri: ${REPO_BASE}/opendevstack/ods-document-generation-svc.git sourceSecret: name: cd-user-with-password type: Git strategy: jenkinsPipelineStrategy: jenkinsfilePath: Jenkinsfile type: JenkinsPipeline triggers: - generic: secret: ${TRIGGER_SECRET} type: Generic parameters: - name: TRIGGER_SECRET required: true - name: REPO_BASE required: true description: Path to repository, e.g. https://cd_user@bitbucket.domain.com/scm Then, create the BuildConfig and ImageStream in prov-dev using oc -n prov-dev process -f bc-is.yml | oc -n prov-dev create -f -, where bc-is.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: creationTimestamp: null labels: app: prov-docgen name: docgen spec: failedBuildsHistoryLimit: 5 successfulBuildsHistoryLimit: 5 nodeSelector: null output: to: kind: ImageStreamTag name: docgen:latest postCommit: {} resources: {} runPolicy: Serial source: binary: {} type: Binary strategy: dockerStrategy: {} type: Docker triggers: [] - apiVersion: image.openshift.io/v1 kind: ImageStream metadata: labels: app: prov-docgen name: docgen spec: dockerImageRepository: docgen lookupPolicy: local: false Note that this points to the production branch of ods-document-generation-svc - ensure this branch is present. After all is setup, start a build in Jenkins, and then move the built image to the cd namespace: oc tag prov-dev/docgen:latest cd/docgen:latest 1.1.x requires Tailor 0.9.4. There are no further mandatory changes apart from the general procedure described above when updating from 1.0.x. Users are highly recommended to take a look at the updates done to the boilerplates, especially the Jenkinsfile and Dockerfile. E.g. the Python quickstarter is now building an image containing all dependencies instead of installing them during runtime. 1.0.x requires Tailor 0.9.3. There is a new webhook proxy now, which proxies webhooks sent from BitBucket to Jenkins. As well as proxying, this service creates and deletes pipelines on the fly, allowing to have one pipeline per branch. To update: Setup the image in the cd project by running tailor update in ods-core/jenkins/ocp-config. Build the image. Setup the webhook proxy next to each Jenkins instance. E.g., go to ods-project-quickstarters/ocp-templates/templates and run oc process cd//cd-jenkins-webhook-proxy | oc create -f- -n xyz-cd. Repeat for each project. For each component, follow the following steps: In Jenkinsfile: Set the shared library version to 1.0.x. Replace stageUpdateOpenshiftBuild with stageStartOpenshiftBuild. Remove stageCreateOpenshiftEnvironment and stageTriggerAllBuilds. Adapt the build logic to match the latest state of the quickstarter boilerplates. Remove verbose: true config (replace with debug: true if you want debug output). Configure branchToEnvironmentMapping, see README.md. If you used environment cloning, also apply the instructions for that. In docker/Dockerfile: Adapt the content to match the latest state of the quickstarter boilerplates. No Nexus upload build artifact is required anymore, use a copy in Jenkins shell command to docker folder (see in any boilerplate how it is done now). In BitBucket, remove the existing \"Post Webhooks\" and create a new \"Webhook\", pointing to the new webhook proxy. The URL has to be of the form https://webhook-proxy-$PROJECT_ID-cd.$DOMAIN?trigger_secret=$SECRET. As events, select \"Repository Push\" and \"Pull request Merged + Declined\". If you want to build the provisioning app automatically when commits are pushed to BitBucket, add a webhook as described in the previous section. 1.0.x makes use of the BUILD_URL env variable automatically set by Jenkins. This env variable might be null in your Jenkins master. To fix this, copy https://github.com/opendevstack/ods-core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovy into each Jenins master to /var/lib/jenkins/init.groovy.d/url.groovy. 1.0.x sets image labels on the BuildConfig in Jenkins. It does this by issuing a JSON patch replace request to /spec/output/imageLabels. This path was not present in prior versions, which can lead to the following error: Error from server: jsonpatch replace operation does not apply: doc is missing key: /spec/output/imageLabels. For newly provisioned components, this has been fixed with https://github.com/opendevstack/ods-project-quickstarters/pull/188. For existing components, add the path to the BuildConfig manually by editing the YAML in OpenShift.","title":"Update Guide for OpenDevStack administrators","component":"opendevstack","version":"4.x","name":"update-older","url":"/opendevstack/latest/administration/update-older.html","titles":[{"text":"How to update your OpenDevStack repositories","hash":"_how_to_update_your_opendevstack_repositories","id":1},{"text":"How to update your OpenDevStack installation","hash":"_how_to_update_your_opendevstack_installation","id":2},{"text":"General update procedure","hash":"_general_update_procedure","id":3},{"text":"Backup","hash":"_backup","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Configuration","hash":"_configuration","id":6},{"text":"OCP resources","hash":"_ocp_resources","id":7},{"text":"Images","hash":"_images","id":8},{"text":"Provisioning App","hash":"_provisioning_app","id":9},{"text":"1.2.x to 2.x","hash":"_1_2_x_to_2_x","id":10},{"text":"Setup secure route checking","hash":"_setup_secure_route_checking","id":11},{"text":"Project specific CD users","hash":"_project_specific_cd_users","id":12},{"text":"Deprecation of shared-images namespace","hash":"_deprecation_of_shared_images_namespace","id":13},{"text":"Rundeck removal","hash":"_rundeck_removal","id":14},{"text":"Image puller rights","hash":"_image_puller_rights","id":15},{"text":"Rollout new webhook proxy instances","hash":"_rollout_new_webhook_proxy_instances","id":16},{"text":"Configure the provisioning app","hash":"_configure_the_provisioning_app","id":17},{"text":"1.1.x to 1.2.x","hash":"_1_1_x_to_1_2_x","id":18},{"text":"Prepare installation for release manager quickstarter","hash":"_prepare_installation_for_release_manager_quickstarter","id":19},{"text":"1.0.x to 1.1.x","hash":"_1_0_x_to_1_1_x","id":20},{"text":"0.1.0 to 1.0.x","hash":"_0_1_0_to_1_0_x","id":21},{"text":"Update xyz-cd projects","hash":"_update_xyz_cd_projects","id":22},{"text":"Update components (information for ODS users)","hash":"_update_components_information_for_ods_users","id":23},{"text":"Update provisioning app","hash":"_update_provisioning_app","id":24},{"text":"Fix Jenkins master BUILD_URL","hash":"_fix_jenkins_master_build_url","id":25},{"text":"Fix JSON patch replace error in Jenkins build","hash":"_fix_json_patch_replace_error_in_jenkins_build","id":26}]},"134":{"id":134,"text":"Please refer to the contribution guide in the PMC repository.","title":"Development Guide","component":"opendevstack","version":"4.x","name":"development","url":"/opendevstack/latest/contributing/development.html","titles":[]},"135":{"id":135,"text":"OpenDevStack documentation is build with Antora. As we release new versions of OpenDevStack with new or changed functionality and configuration, it should always be clear which documentation applies to which release. Thus we follow the philosophy: manage documetation as code. This means: Storing content in a version control system alongside with the code. Separating content, configuration, and presentation Reusing shared materials (Don’t repeat yourself) Antora is a static site generator by the folks behind the AsciiDoctor project that follows this practices. The engine converts a collection of version controlled documentation written in AsciiDoc into an HTML site. Documentation is spread across multiple repositories. In each repository, there is a docs folder containing the documentation. We use one \"distributed\" component named opendevstack (see Component structure documentation), and each docs folder adds one or more named modules into that component. The navigation for the component is located in the ods-core repository. Additionally, we have the ods-documentation repository which contains the Playbook and the ods-docs-ui repository containing UI customization. A guide for building the documentation locally is provided in the ods-documentation README. Issue a pull request against the repository containing the documentation you add / modify. Once this is merged, the documentation website will get updated automatically (via a daily cronjob). The documentation will be build on Travis and pushed back to the ods-documentation repository. The .travis.yml file is located in the ods-documentation project.","title":"The OpenDevStack documentation","component":"opendevstack","version":"4.x","name":"documentation","url":"/opendevstack/latest/contributing/documentation.html","titles":[{"text":"Why we chose Antora","hash":"_why_we_chose_antora","id":1},{"text":"How is the documentation organized?","hash":"_how_is_the_documentation_organized","id":2},{"text":"How to build the site locally?","hash":"_how_to_build_the_site_locally","id":3},{"text":"How to contribute documentation","hash":"_how_to_contribute_documentation","id":4},{"text":"How is the documentation built on Github?","hash":"_how_is_the_documentation_built_on_github","id":5}]},"136":{"id":136,"text":"When we started with the OpenShift container platform we were blown away by the 100s of possibilities to use it, but there was nothing along the lines of “This is how you make it work for your org”. What we wanted is to enable developers to quickly introduce Continous Delivery and standardized technology archetypes. We call this lean, empowered governance. OpenDevStack (ODS) is how we achieve this. It is, to a large extent, tooling sitting in between your local software development (your machine/editor), and the running software in the target environemnt (OpenShift etc.). As such, most of ODS functionality is within and related to the CI/CD process. ODS has no overlap with your local environment, such as the editor you use to develop software. ODS is not a project management solution, rather it makes use of the Atlassian suite (Jira, Confluence, Bitbucket). ODS does not run your software application. ODS only deploys your software into a target environment (= OpenShift, but deployment could really be anywhere, such as AWS etc.). ODS is not a replacement for tools in the container space - rather it is one coherent offering of a selection of existing (open-source) tools. ODS is comprised of core functionality, and a configurable set of so-called quickstarters. Quickstarters can be seen as software templates, which can be instantiated in your project to create a component of your application quickly, with all the integration / configuration setup out-of-the box. The officially supplied quickstarters include, but are not limited to: Java (Spring Boot), Python (Flask), Scala (Play), Go, Angular, Ionic, Jupyter, RShiny. The core ODS functionality offers the following: A central provisioning application (the “entry point of ODS”) which allows to: provision new projects and provision components from aforementioned quickstarters within those projects A central Nexus instance to store and retrieve software artefacts. A central SonarQube instance to statically analyze the software components of a project. Customized Jenkins Master and Jenkins agent base images that are integrated with e.g. Bitbucket, OpenShift, Nexus and SonarQube. Each project runs its own Jenkins Master instance using the centrally provided image. A Jenkins Shared Library which can be used from each software component to cover most CI/CD functionality. The shared library offers all language-agnostic features, such as checking out source code, running static analysis, building container images, and deploying artefacts into the target environment. Each component only needs to add in their Jenkinsfile language-specific functionality such as building artefacts (e.g. JAR files). A release manager component which can be installed in each project to generate GxP documents from Jenkins pipeline runs (through the use of a centrally provided document generation service image). Quickstarters provide the following: Jenkins agent images that can be used during pipeline runs to build a specific language / framework Boilerplate of a specific language / framework with a \"Hello World\" example A Jenkinsfile integrating the Jenkins shared library and providing basic artefact building for the specific language / framework Integration with SonarQube, Nexus, OpenShift etc. as required When quickstarters are provisioned through the provisioning application, a repository is created on Bitbucket for the new component. The repository is populated with the boilerplate, and immediately built and deployed via Jenkins through the ODS integration. Developers can start to work on features straight away without setting up CI/CD and integrating various services. The following pictures the different parts ODS is made out of: Below is a diagram detailing the flow of an OpenDevStack CI/CD pipeline: Each major ODS release is identified by a version such as 2, 3, 4 and so on. Administrators of ODS can either: install from master to follow the cutting edge install from 2.x, 3.x, etc. branches to stay on a major version, but get bug fixes (minor versions) install from v2.0.0, v3.0.0, etc. tags to pin an exact version use a custom branch / tag such as 2.acme or 3.custom etc. to run ODS with customizations Users of ODS simply consume the version installed by their ODS administrators. A major update (e.g. 2.x to 3.x or 3.x to 4.x) is, from a user perspective, an explicit update. This means that although admins update the ODS installation in the cluster, users still have to explicitly adopt that change (e.g. by updating their Jenkins image reference and so on). Therefore, a major version change is accompanied by an update guide like Update to 3.x. For admins, a major update might mean that configuration options have to be changed or migration steps have to be taken, as well as rebuilding and rolling out all images etc. A minor update (consuming changes/bugfixs on a release branch such as 3.x) is, from a user perspective, an implicit update. This means that only admins have to make a change to the ODS installation in the cluster. Users should get those changes automatically, without the need to explicitly adopt it. Therefore, there is no update guide for minor updates. For admins, a minor update should (typically) not require changing configuration options nor performing migration steps - only rebuilding and rolling out some (or all) images should be needed. Each version is tracked as a GitHub project. The current major version is 4, the next one will be 5. See project page for details. OpenShift 4 support (keeping 3.11 compatibility) Support for Kubernetes-native Deployment resources and Helm 3 within component pipeline dropped machine learning quickstarter Integration with Aqua Security Implement health checks for quickstarters Rename central namespace to ODS, and extend with running provisioning app Install provisioning app and document generation service from pre-built images Quickstarter pipeline Merge of MRO (now: orchestration pipeline) into general shared pipeline Automation of SonarQube and Nexus setup Decorate Bitbucket pull requests with SonarQube analysis Promote images between environments if possible (instead of rebuilding) New (single page) app user interface as optional feature Removal of Rundeck (replace with Jenkins jobs) New quickstarter concept (multiple repo support) Project specific technical users CPU and memory quota support Initial version of document generation service and MRO pipeline Incremental improvements. Initial release.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"What ODS isn’t","hash":"_what_ods_isnt","id":2},{"text":"High-Level Overview of ODS","hash":"_high_level_overview_of_ods","id":3},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":4},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":5},{"text":"Versioning","hash":"_versioning","id":6},{"text":"Roadmap","hash":"_roadmap","id":7},{"text":"4.2 (Target Date: End-of-Feb 2022)","hash":"_4_2_target_date_end_of_feb_2022","id":8},{"text":"4 (November 2021)","hash":"_4_november_2021","id":9},{"text":"3 (August 2020)","hash":"_3_august_2020","id":10},{"text":"2 (December 2019)","hash":"_2_december_2019","id":11},{"text":"1.2 (October 2019, using old versioning scheme)","hash":"_1_2_october_2019_using_old_versioning_scheme","id":12},{"text":"1.1 (June 2019, using old versioning scheme)","hash":"_1_1_june_2019_using_old_versioning_scheme","id":13},{"text":"1.0 (November 2018, using old versioning scheme)","hash":"_1_0_november_2018_using_old_versioning_scheme","id":14}]},"137":{"id":137,"text":"Jenkins master deployments are using an image built in the central ODS namespace. This image is a customisation of an upstream Jenkins master image provided by RedHat. Jenkins agent images are also built in the central ODS namespace, and are also based on upstream images provided by RedHat. The exact Jenkins version which is used is determined by which RedHat base image tag is used, and depending on the used tag, at which time the ODS image is built. To update Jenkins (master and agents), the following steps need to be taken: Configure new versions Update BuildConfig resources Create new images Rollout new deployments The following will guide you through this process. To configure a new version of Jenkins, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core and ods-quickstarters repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-quickstarters,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change JENKINS_MASTER_BASE_FROM_IMAGE and JENKINS_AGENT_BASE_FROM_IMAGE in ods-configuration/ods-core.env to your desired image tags. Commit the change and push it to Bitbucket. If the configured tag is a moving target, you might not need to change it at all and you can simply continue with the next step. Next, you should ensure that the Jenkins BuildConfig resources in the central ODS namespace are up-to-date, then trigger new builds so that new images with the changed base images get built. Finally, new deployments should be rolled out which use the newly built image. All of this can be done from the ods-core repository: make install-jenkins This target depends on the targets apply-jenkins-build, start-jenkins-build, and apply-jenkins-deploy which execute the steps described above (and can of course also be executed individually). Only the Jenkins master deployment in the central ODS namespace gets updated automatically using this command. Updating Jenkins master deployments in each *-cd namespace is a separate task for which no ODS automation exists at the moment. Finally, you also need to rebuild all technology-specific Jenkins agent images. For the Jenkins agent images delivered with the official quickstarters, this can be done from the ods-quickstarters repository: make install-jenkins-agent If you have other quickstarters which use custom Jenkins agents, you will also have to rebuild those.","title":"Jenkins Administration","component":"opendevstack","version":"4.x","name":"administration","url":"/opendevstack/latest/jenkins/administration.html","titles":[{"text":"Updating Jenkins to a new version","hash":"_updating_jenkins_to_a_new_version","id":1}]},"138":{"id":138,"text":"We have a base image for different jenkins agents. The concrete agent images are then configured as part of the quickstarters. The base image contains the following customizations: SonarQube Scanner SonarQube CNES Report Plugin Tailor Helm Skopeo Snyk - used to scan and monitor projects vulnerable third-party dependencies (only installed if SNYK_DISTRIBUTION_URL is configured) Aqua Scanner CLI - used to scan local images and interact with the Aqua Server (only installed if AQUASEC_SCANNERCLI_URL is configured) Trivy Scanner - used to scan filesystem and generate “software bill of materials” SBOM report Setting of enterprise proxy (based on HTTP_PROXY presence) Support for custom certificates (based on APP_DNS presence) When the container image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins agent works also on OpenShift clusters in enterprises that use a web proxy. The base jenkins agent is used by all ODS builder agents","title":"ODS Jenkins Agent base","component":"opendevstack","version":"4.x","name":"agent-base","url":"/opendevstack/latest/jenkins/agent-base.html","titles":[]},"139":{"id":139,"text":"OpenDevStack provides several customized Jenkins container images based on the official OpenShift images.","title":"Jenkins","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/jenkins/index.html","titles":[]},"140":{"id":140,"text":"The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.18 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 workflow-cps-global-lib:2.13 junit:1.28 blueocean:1.18.0 workflow-durable-task-step:2.28 openshift-sync:1.0.44 Jenkins offers to deploy post-initialization scripts. Table 1. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins location based on the OpenShift route sonarqube.groovy Sets the SonarQube server URL and auth token based on the exposed environment variables ods-jenkins-shared-library.groovy Registers ods-jenkins-shared-library as a global library The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the SonarQube server. SONAR_AUTH_TOKEN this is the SonarQube auth token that is generated when deploying and configuring sonarqube Jenkins email notifications need manual configuration: The SMTP server parameters that need to be defined are found under menu option: Jenkins → Manage Jenkins → Configure System → Extended E-mail Notification It is also mandatory to define the System Admin e-mail address, this is defined under menu option: Jenkins → Manage Jenkins → Configure System → Jenkins Location Once Jenkins is configured, you will also need to define the recipients of the email notifications by definining emailextRecipients parameter in your odsComponentPipeline context, in your components' Jenkinsfile, like: ... odsComponentPipeline( ... emailextRecipients: ['email1@foo.bar', 'email2@foo.bar'], ... ) { context -> ...","title":"Jenkins Master","component":"opendevstack","version":"4.x","name":"master","url":"/opendevstack/latest/jenkins/master.html","titles":[{"text":"Configured Plugins","hash":"_configured_plugins","id":1},{"text":"Init scripts","hash":"_init_scripts","id":2},{"text":"Email notifications","hash":"_email_notifications","id":3}]},"141":{"id":141,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables can be set on the DeploymentConfig and are read by the webhook proxy: Variable Description ACCEPTED_EVENTS Comma-separated list of handled Bitbucket events. Defaults to repo:refs_changed,pr:declined,pr:merged,pr:deleted. ALLOWED_CHANGE_REF_TYPES Comma-separated list of Bitbucket change refs. Defaults to BRANCH, which means tags do not create pipelines nor forward to them. If you want this to happen, specify e.g. BRANCH,TAG. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. For security reasons, by default the webhook proxy allows only its own project and the opendevstack project to be passed as a project parameter. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be removed after they have been merged. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"4.x","name":"webhook-proxy","url":"/opendevstack/latest/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"142":{"id":142,"text":"The ods-core repository contains a build recipe for a central Nexus instance. The remainder of this document describes how that setup is done, and how it can be modified and updated. The Nexus deployment is using an image built in the central ODS namespace. This image is a customisation of the official Nexus image on DockerHub. The Nexus version which is used is determined by which image tag from DockerHub is used, and depending on tag, at which time the ODS image is built. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html To update Nexus, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of Nexus, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change NEXUS_IMAGE_TAG in ods-configuration/ods-core.env to your desired image tag. Commit the change and push it to Bitbucket. Next, you should ensure that the Nexus BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image with the changed base image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-nexus This target depends on the targets apply-nexus-chart and start-nexus-build which execute the steps described above (and can of course also be executed individually). There is also a configure-nexus target. However, this is not executed as part of install-nexus as it is not idempotent yet (which means it cannot be used against an existing Nexus deployment). For a simple Nexus version update, you don’t need to change any configuration, but if you switch between ODS versions you should keep an eye on Nexus configuration.","title":"Nexus Administration","component":"opendevstack","version":"4.x","name":"administration","url":"/opendevstack/latest/nexus/administration.html","titles":[{"text":"Updating Nexus to a new version","hash":"_updating_nexus_to_a_new_version","id":1}]},"143":{"id":143,"text":"","title":"Nexus","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/nexus/index.html","titles":[]},"144":{"id":144,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"4.x","name":"sysenv-requirements","url":"/opendevstack/latest/ods-core/sysenv-requirements.html","titles":[]},"145":{"id":145,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a agent pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"4.x","name":"troubleshooting","url":"/opendevstack/latest/ods-core/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins agent - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_agent_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"146":{"id":146,"text":"The ods-core repository contains a build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this document describes how that setup is done. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OpenShift project cd, inside the sonarqube-app secret. The SonarQube deployment is using an image built in the central ODS namespace. This image is based on the https://hub.docker.com/_/sonarqube, as can be seen in the ODS Dockerfile. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html If the previous version was configured to use Atlassian Crowd as Authentication provider, run the script https://github.com/opendevstack/ods-core/tree/master/scripts/migrate-sonar-users.sh in order to migrate current users to use Saml as Authentication provider. To update SonarQube, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of SonarQube, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change SONAR_VERSION in ods-configuration/ods-core.env to your desired version. Commit the change and push it to Bitbucket. Next, you should ensure that the SonarQube BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-sonarqube This target depends on the targets apply-sonarqube-chart, start-sonarqube-build and configure-sonarqube which execute the steps described above (and can of course also be executed individually).","title":"SonarQube Administration","component":"opendevstack","version":"4.x","name":"administration","url":"/opendevstack/latest/sonarqube/administration.html","titles":[{"text":"Modifying configurations, plugins, etc.","hash":"_modifying_configurations_plugins_etc","id":1},{"text":"Updating SonarQube to a new version","hash":"_updating_sonarqube_to_a_new_version","id":2}]},"147":{"id":147,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This file needs to be located in the root of the repository you want to have analysed. For example: # Project Key (required) sonar.projectKey=test-spring-boot # Project Name (optional, this is what is shown in the main list) sonar.projectName=test-spring-boot # Comma-separated paths to directories with sources (required) sonar.sources=src # Forced Language (optional) sonar.language=java # Encoding of the source files (optional but recommended as default is ASCII) sonar.sourceEncoding=UTF-8 # Plugin-specific settings sonar.java.binaries=build/classes sonar.java.libraries=build/libs sonar.junit.reportPaths=build/test-results/test The general settings are documented at https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/analysis-parameters. There’s a prebuilt stage (odsComponentStageScanWithSonar) that you can use, see https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/component-pipeline.html#_odscomponentstagescanwithsonar for details. The team behind SonarQube also published SonarLint, a plugin currently available for IntelliJ, Eclipse, Visual Studio, VS Code and Atom that lets you scan while coding in your IDE. It also integrates with a SonarQube Server, so that you can scan with the servers rule settings. For further information please see https://www.sonarlint.org/intellij/howto.html. For the server connected mode, the SonarQube URL has to be set to your SonarQube deployment. Be aware that this does not connect you with the SonarQube Server in OpenShift, therefore you might have other rule settings locally than the ones set on server. That said, here’s what you need to do on your host to have a local SonarQube instance: docker pull sonarqube docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube ./gradlew sonarqube Running these commands will let you see at http://localhost:9000 your project reports, for any branch. Please, note that you are not running with an embedded database in this case, so it is only for temporary testing, do not expect historic report.","title":"SonarQube","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/sonarqube/index.html","titles":[{"text":"sonar-project.properties file","hash":"_sonar_project_properties_file","id":1},{"text":"Scanning in Jenkins pipelines","hash":"_scanning_in_jenkins_pipelines","id":2},{"text":"Scanning locally: SonarLint IDE Plugin","hash":"_scanning_locally_sonarlint_ide_plugin","id":3},{"text":"Scanning locally: SonarQube Docker Container","hash":"_scanning_locally_sonarqube_docker_container","id":4}]},"148":{"id":148,"text":"Table of Contents Required steps Update image tags of Jenkins deployments Update Jenkinsfiles in Git repositories Grant image-puller rights to your *-cd namespace Component resource constraints Notable changes Component deployment behaviour Jenkins slave NodeJS 8 New Tailor version Deprecation of shared-services namespace New features SonarQube quality gates Skopeo Common / Known Issues Learn all about how to update your OpenDevStack based project to ODS 2.x. It is assumed that you are updating from ODS 1.2.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (2.x), and trigger a deployment. Edit every Jenkinsfile. The shared library should point to 2.x, e.g.: library identifier: 'ods-library@2.x', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) Also, the image used to run the pipeline in should point to 2.x, e.g.: odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven:2.x\", ... ) This step is not strictly necessary, but recommended as projects created with version 2.x will have those rights by default. Having this setup will enable you to use the *-cd namespace for common base images to reduce build times. Run the following, replacing $PROJECT_ID with your project ID: oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-test -n $PROJECT_ID-cd oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-dev -n $PROJECT_ID-cd Note that you need to be an admin on your project in order to run those commands. For more information, see ods-core#293. Newly created components now have memory quotas (ods-quickstarters#12) and CPU quotas (ods-quickstarters#74) configured. It is recommended (though not required) to configure resource constraints for existing components as well. If you are unsure which values to set, refer to the new defaults and check the current usage in the \"Metrics\" section in OpenShift. In the shared library, rollouts will be triggered manually now when no config/image trigger exists on the DeploymentConfig. The cd/jenkins-slave-nodejs8-angular image has been discontinued. Please update to cd/jenkins-slave-nodejs10-angular. For more information, see ods-quickstarters#71. Tailor has been updated to 0.11.0 in the Jenkins slaves, see ods-core#290. The shared-images namespace (containing common base images) has been removed from new ODS 2.0 installation. For existing installations, it is likely being kept for some time by the cluster administrator to enable users to react to this change. If you use a component based on the ds-jupyter-notebook or ds-rshiny quickstarters, you should switch to using the new authentication approach, which is uing an OpenShift OAuth proxy instead of a Nginx service. See ods-quickstarters#46. If you use the Airflow Quickstarter, its base images should now be built in your *-cd namespace See ods-quickstarters#60. It is now possible to opt-in to failing the build if the SonarQube scan fails the quality gate defined in SonarQube. To enable this, change the call of stageScanForSonarqube(context) to stageScanForSonarqube(context, true). For more information, see ods-jenkins-shared-library#22. When working with images, you may make use of Skopeo, which is now part of the Jenkins slaves. See ods-core#253. When provisioning new components, you must use a name that differs from the component type, otherwise some quickstarters fail. E.g. when creating a new component of type fe-react, you cannot name it fe-react but must choose another name like my-app. For more information, see https://github.com/opendevstack/ods-provisioning-app/issues/336.","title":"Update Guide to version 2.x for OpenDevStack users","component":"opendevstack","version":"4.x","name":"2x","url":"/opendevstack/latest/update-guides/2x.html","titles":[{"text":"Required steps","hash":"_required_steps","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Update Jenkinsfiles in Git repositories","hash":"_update_jenkinsfiles_in_git_repositories","id":3},{"text":"Grant image-puller rights to your *-cd namespace","hash":"_grant_image_puller_rights_to_your_cd_namespace","id":4},{"text":"Component resource constraints","hash":"_component_resource_constraints","id":5},{"text":"Notable changes","hash":"_notable_changes","id":6},{"text":"Component deployment behaviour","hash":"_component_deployment_behaviour","id":7},{"text":"Jenkins slave NodeJS 8","hash":"_jenkins_slave_nodejs_8","id":8},{"text":"New Tailor version","hash":"_new_tailor_version","id":9},{"text":"Deprecation of shared-services namespace","hash":"_deprecation_of_shared_services_namespace","id":10},{"text":"New features","hash":"_new_features","id":11},{"text":"SonarQube quality gates","hash":"_sonarqube_quality_gates","id":12},{"text":"Skopeo","hash":"_skopeo","id":13},{"text":"Common / Known Issues","hash":"_common_known_issues","id":14}]},"149":{"id":149,"text":"Table of Contents New central ods namespace Update image tags of Jenkins deployments Jenkins Shared Library changes Renamed pipelines and stages Reduced boilerplate Changed agent images Changed context properties Different image tags Changes to Jenkins agent images General upgrade to Python 3.8 Airflow Cluster Jenkins agent no longer supported Learn all about how to update your OpenDevStack based project to ODS 3.x. It is assumed that you are updating from ODS 2.x. One of the biggest changes in ODS 3 is that there is a new central namespace, named ods. This namespace hosts the complete ODS installation, such as a provisioning app, Nexus, SonarQube, and images for Jenkins (master and agent). This central namespace replaces the previous namespaces cd (which hosted Nexus, SonarQube, etc.) as well as prov-test, prov-dev and prov-cd (which hosted the provisioning app). As a user, you will be affected by this change insofar as the images you use for the Jenkins master instance and Jenkins agent nodes will need to be retrieved from ods instead of cd (see next section). Further, depending on the migration done by the administrator, the URLs of Nexus, SonarQube and the provisioning app might have changed. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (3.x), and trigger a deployment. Note that you also need to change the namespace of the images from cd to ods (see above). Since ODS 2, it is also recommended to remove any image triggers from jenkins and webhook-proxy, so that any image changes are only rolled out by yourself. If you choose to remove the image trigger, ensure that the imagePullPolicy is set to Always to always get the latest 3.x image when you deploy. If the administrator of your ODS cluster chose to use a custom Bitbucket project for the 3.x installation, then you’ll need to set the environment variable ALLOWED_EXTERNAL_PROJECTS= for the webhook-proxy DeploymentConfig. Otherwise you will not be able to provision quickstarters. 3.x ships with the three pipelines instead of just one. In 2.x, the shared library offered one pipeline to build components, named odsPipeline. This has been renamed to odsComponentPipeline to make its purpose clearer and to distinguish it from the other pipelines, odsQuickstarterPipeline (to provision quickstarters) and odsOrchestrationPipeline (to orchestrate multiple repositories using the release manager). To provide backwards compatibility, odsPipeline is still available, but deprecated and will be removed in ODS 4. In line with this change, the stages have been renamed too, which also makes them easier to distinguish from custom stages written by yourself in the Jenkinsfile. As with the pipeline, the old stages are still available but slated for removal in ODS 4. Here’s a list of the changes: stageScanForSonarqube is now odsComponentStageScanWithSonar stageScanForSnyk is now odsComponentStageScanWithSnyk stageStartOpenshiftBuild is now odsComponentStageBuildOpenShiftImage stageDeployToOpenshift is now odsComponentStageRolloutOpenShiftDeployment stageUploadToNexus is now odsComponentStageUploadToNexus Please note the new casing (e.g. OpenShift instead of Openshift). Further, the new stages all take the same two arguments: IContext context and Map config = [:]. Please see the documentation for details. In particular, some options which would previously have been set on odsPipeline can and should be set on the stage where they are used (however all options have been kept for backwards compatibility). A Jenkinsfile in 2.x looks roughly like this: def final projectId = 'foo' def final componentId = 'bar' def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def dockerRegistry node { dockerRegistry = env.DOCKER_REGISTRY } @Library('ods-jenkins-shared-library@2.x') _ odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-golang:2.x\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: ['master': 'dev'] ) { context -> stageScanForSonarqube(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) } That is a lot of boilerplate. 3.x reduces this dramatically: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: ['master': 'dev'] ) { context -> odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) odsComponentStageRolloutOpenShiftDeployment(context) } Note that the new Jenkinsfile example already uses the new pipeline/stage names as outlined above. Apart from this, it makes use of a new config option, imageStreamTag which removes the need to read the DOCKER_REGISTRY environment variable. If you need it, the image config is still present (e.g. to reference images outside of OpenShift). projectId and componentId are now automatically configured, but can still be set if desired. Up to and including 2.x, Jenkins used \"slave images\" to do its work. They have been renamed to \"agent images\" in 3.x. All new agent images are located in the new central namespace ods. Therefore, you need to update the references in your Jenkinsfile (as shown above): cd/jenkins-slave-base is now ods/jenkins-agent-base cd/jenkins-slave-golang is now ods/jenkins-agent-golang cd/jenkins-slave-maven is now ods/jenkins-agent-maven cd/jenkins-slave-nodejs10-angular is now ods/jenkins-agent-nodejs10-angular cd/jenkins-slave-python is now ods/jenkins-agent-python cd/jenkins-slave-scala is now ods/jenkins-agent-scala The context object available to use in stages has been slimmed down by removing properties unlikely to be useful to author stages (such as resource constraints of the Jenkins agent pod). Please review the documentation in case your authored stages make heavy use of the context object. One notable change to the context object is that bitbucketHost did not include the scheme previously. Now, bitbucketHost is an alias for bitbucketUrl which does include the scheme. This change was made to align the property with nexusHost and nexusUrl, which both include the scheme as well. If you used context.bitbucketHost in one of your Jenkinsfile`s, you may now use `context.bitbucketHostWithoutScheme. A notable addition to the context object is a new property issueId, which exposes the Jira issue ID (such as 123 from branch feature/FOO-123-bar-baz). Previously, images produced by odsComponentStageBuildOpenShiftImage where tagged with context.tagversion, which consisted of the Jenkins build number and the (shortened) Git commit (e.g. 7-cd3e9082). This made it difficult for other processes (unaware of the Jenkins build number) to find those images. The images are now tagged with just the (shortened) Git commit (e.g. cd3e9082). This change also has the huge benefit that it allows to promote images between environments (avoiding to rebuild them) using the new stage odsComponentStageImportOpenShiftImageOrElse. Some agent images (jenkins-agent-maven, jenkins-agent-nodejs10-angular, jenkins-agent-scala) exposed the environment variables NEXUS_HOST and NEXUS_USERNAME/NEXUS_PASSWORD/NEXUS_AUTH. This was not done intentionally, but as a side effect of using those variables during image build time. In 3.x, that has been cleaned up. Now those variables are passed as build arguments to the image build, which means they are no longer accessible as environment variables in the running container. Nexus credentials can and should be accessed from the pipeline context (context.nexusUrl, context.nexusUsername and context.nexusPassword). As a consequence, if a Jenkinsfile relies on the presence of those environment variables without setting them explicitly using withEnv, it will fail to run in 3.x. That said, the Jenkinsfile templates which shipped by default with the quickstarters did not rely on the environment variables - with the exception of fe-ionic which did not set NEXUS_HOST explicitly in the Build stage. Jenkins agent jenkins-agent-python as well as all python related quickstarters (be-python-flask, ds-jupyter-notebook and ds-ml-service) have been upgraded to python 3.8. This is not affecting default provisioned Jenkinsfile for ds-jupyter-notebook nor be-python-flask quickstarters that exist before ODS 3.x. But, ds-ml-service provisoned quickstarters before ODS 3.x need to slightly modify its Jenkinsfile before upgrading to ODS 3.x by just avoiding running any pip install --user (see new Jenkinsfile.template to get a suggested fix, basically using virutalenv; which is the recommended way of working when requiring building python packages). If you provisioned airflow-cluster quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. Therefore, the jenkins-slave-airflow:2.x can be shifted to jenkins-agent-python:3.x when upgrading to ODS 3.x.","title":"Update Guide to version 3.x for OpenDevStack users","component":"opendevstack","version":"4.x","name":"3x","url":"/opendevstack/latest/update-guides/3x.html","titles":[{"text":"New central ods namespace","hash":"_new_central_ods_namespace","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Jenkins Shared Library changes","hash":"_jenkins_shared_library_changes","id":3},{"text":"Renamed pipelines and stages","hash":"_renamed_pipelines_and_stages","id":4},{"text":"Reduced boilerplate","hash":"_reduced_boilerplate","id":5},{"text":"Changed agent images","hash":"_changed_agent_images","id":6},{"text":"Changed context properties","hash":"_changed_context_properties","id":7},{"text":"Different image tags","hash":"_different_image_tags","id":8},{"text":"Changes to Jenkins agent images","hash":"_changes_to_jenkins_agent_images","id":9},{"text":"General upgrade to Python 3.8","hash":"_general_upgrade_to_python_3_8","id":10},{"text":"Airflow Cluster Jenkins agent no longer supported","hash":"_airflow_cluster_jenkins_agent_no_longer_supported","id":11}]},"150":{"id":150,"text":"Table of Contents Update image tags of Jenkins deployments Jenkins Shared Library What’s new? Required changes to adopt 4.x Notes about quickstarters ds-ml-service quickstarter no longer supported ds-jupyter-notebook renamed to ds-jupyter-lab Learn all about how to update your OpenDevStack based project to ODS 4.x. It is assumed that you are updating from ODS 3.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (4.x), and trigger a deployment. ODS has had support for the OpenShift-specific DeploymentConfig resources (controlled by ReplicationControllers) only so far. Now, Kubernetes-native Deployment resources (controlled by ReplicaSets) can be used as well in the component pipeline. Deployment resources are recommended by OpenShift going forward, see https://docs.openshift.com/container-platform/latest/applications/deployments/what-deployments-are.html. Helm 3 is supported now in the component pipeline. This means that Helm (with plugins helm-diff and helm-secrets) can be used as an alternative to Tailor (OpenShift Templates) to define Kubernetes resources in your repository. Helm has some limitations in OpenShift 3.11, but it is the recommended way forward on OpenShift 4. Tailor will be phased out at some point in the future when OpenShift 3.11 is no longer supported by ODS. If you do not author Kubernetes resources in your repository, now is a great time to start with Helm. If you already define OpenShift Templates in your repository and want to switch to Helm, read the migration guide from Tailor to Helm. All ODS component stages understand the branch/branches options now. Those options allow pipeline authors to control for which branches a specific stage should run. As with the branchToEnvironmentMapping option, three types of branch references are supported: exact match (e.g. master, develop - matching branches named master, develop) prefix match (e.g. release/, 'feature/' - matching branches named release/1, feature/foobar) wildcard match (* - matching all branches) If you use Git submodules in your repository, the submodules will now be checked out by Jenkins. This is done automatically when a .gitmodules file is present. Update @Library('ods-jenkins-shared-library@3.x') _ to @Library('ods-jenkins-shared-library@4.x') _ and point to agent images with the 4.x tag, e.g. change imageStreamTag: 'ods/jenkins-agent-golang:3.x' to imageStreamTag: 'ods/jenkins-agent-golang:4.x'. Application images are built in your -cd project now. Previously they were built in your -dev and *-test project. While the update itself should be completely automatic, there are two consequences: You can delete BuildConfig and ImageStream resources from your OpenShift templates (in fact odsComponentStageBuildOpenShiftImage does not run tailor apply anymore). If you made modifications to a BuildConfig you’ll need to re-apply those changes in your *-cd project once the BuildConfig has been migrated there by a pipeline run. ODS 3.x introduced odsComponentStageImportOpenShiftImageOrElse, which allowed to execute some stages only if a container image could not be imported from another namespace or already existed in the current namespace. In ODS 4.x, the check for existing images is only performed in the *-cd namespace. To reflect this, odsComponentStageImportOpenShiftImageOrElse has been deprecated, and is now aliased to the new method, odsComponentFindOpenShiftImageOrElse. The pipeline option imagePromotionSequences has been removed as it is not applicable anymore. odsComponentStageRolloutOpenShiftDeployment rolls out all deployment resources together now. If you had multiple DeploymentConfig resources previously, you had to target each one by specifying the config option resourceName. This is no longer possible - instead the stage iterates over all DeploymentConfig resources with the component label (app=${projectId}-${componentId}). Changes must be made to pipelines that have multiple deployments, such as components based on the ds-jupyter-notebook and ds-rshiny quickstarter. The auto-cloning feature has been removed. If you used this to create ad-hoc namespaces per Jira issue, this is no longer possible now. Changes must be made if your pipeline configured autoCloneEnvironmentsFromSourceMapping. Please see https://github.com/opendevstack/ods-jenkins-shared-library/issues/374 for more information. Versioned development environments in orchestration pipeline are not created automatically anymore. Note that it is still possible to use separate development environments per version, but the namespaces have to be created manually upfront. Take this into account if your pipeline configures versionedDevEnvs: true. Please see https://github.com/opendevstack/ods-jenkins-shared-library/pull/513 for more information. odsComponentStageRolloutOpenShiftDeployment changed its return type because it now supports Deployment resources, as well as multiple deployment resources. Therefore, it returns a map now, where the keys are /, e.g. Deployment/foo and DeploymentConfig/bar. This only affects pipelines that make use of this return value, such as components based on the ds-ml-service and be-fe-mono-repo-plain quickstarter. If you provisioned ds-ml-service quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. It has been set as deprecated due to being superseded by other OpenSource projects like MLflow and Cloud SaaS solutions. The quickstarter ds-jupyter-lab is the new name for the known ds-jupyter-notebook. Which also comes with the newest JupyterLab version 3.","title":"Update Guide to version 4.x for OpenDevStack users","component":"opendevstack","version":"4.x","name":"4x","url":"/opendevstack/latest/update-guides/4x.html","titles":[{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":1},{"text":"Jenkins Shared Library","hash":"_jenkins_shared_library","id":2},{"text":"What’s new?","hash":"_whats_new","id":3},{"text":"Deployment resources","hash":"_deployment_resources","id":4},{"text":"Helm","hash":"_helm","id":5},{"text":"branch/branches options for all stages","hash":"_branchbranches_options_for_all_stages","id":6},{"text":"Support of gitmodules","hash":"_support_of_gitmodules","id":7},{"text":"Required changes to adopt 4.x","hash":"_required_changes_to_adopt_4_x","id":8},{"text":"Notes about quickstarters","hash":"_notes_about_quickstarters","id":9},{"text":"ds-ml-service quickstarter no longer supported","hash":"_ds_ml_service_quickstarter_no_longer_supported","id":10},{"text":"ds-jupyter-notebook renamed to ds-jupyter-lab","hash":"_ds_jupyter_notebook_renamed_to_ds_jupyter_lab","id":11}]},"151":{"id":151,"text":"This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: [ 'master': 'dev', // 'release/': 'test' ] ) { context -> odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage } odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) } odsComponentStageRolloutOpenShiftDeployment(context) } The version in @Library can be any Git revision, such as a branch (e.g. master or 2.x), a tag (e.g. v2.0) or even a specific commit. There are many built-in stages like odsComponentStageScanWithSonar that you can use, please see Stages for more details. odsComponentPipeline can be customized by passing configuration options like this: odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', dockerDir: 'foo' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. notifyNotGreen Whether to send notifications if the build is not successful. Enabled by default. emailextRecipients Notify to this list of emails when notifyNotGreen is enabled. It is empty by default. branchToEnvironmentMapping Define which branches are deployed to which environments, see Git Workflow / Branch to Environment Mapping projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. environmentLimit Number of environments to allow when auto-cloning environments. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. sonarQubeBranch Please use option branch on odsComponentStageScanWithSonar. failOnSnykScanVulnerabilities Deprecated in 3.x! Please use option failOnVulnerabilities on odsComponentStageScanWithSnyk. openshiftBuildTimeout Deprecated in 3.x! Please use option buildTimeoutMinutes on odsComponentStageBuildOpenShiftImage. openshiftRolloutTimeout Deprecated in 3.x! Please use option deployTimeoutMinutes on odsComponentStageRolloutOpenShiftDeployment. testResults Configurable location for xunit test results, in case the build does not put them into build/test-results/test. commitGitWorkingTree Defaulting to false, if set to true, any changes in the working directory added with git add will be committed to the current branch and pushed. When you write custom stages inside the closure passed to odsComponentPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsComponentPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsComponentPipeline starts. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. nexusUrl Nexus URL - value taken from NEXUS_URL. If NEXUS_URL is not present, it will default to NEXUS_HOST (which also includes the scheme). nexusHost is an alias for nexusUrl. nexusUsername Nexus username. nexusPassword Nexus password. nexusUrlWithBasicAuth Nexus URL, including username and password as BasicAuth. nexusHostWithBasicAuth is an alias for nexusUrlWithBasicAuth. sonarQubeEdition Edition of SonarQube in use, determined by SONAR_EDITION (defaults to community). environment The environment which was chosen as the deployment target, e.g. dev. targetProject Target project, based on the environment. E.g. foo-dev. cdProject CD project. E.g. foo-cd. groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. selector Selector common to all resources of component, defaults to app=${projectId}-${componentID} (e.g. app=foo-be-auth). gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. shortGitCommit Short Git commit SHA (first 8 chars) to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message (sanitized). gitCommitRawMessage Git commit message (raw). gitCommitTime Git commit time in RFC 3399. issueId Jira issue ID if any present in either commit message or branch name (e.g. 123 from commit message FOO-123: Bar or branch feature/FOO-123-bar). If the issue ID is present in both, the branch name has precedence. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the pipeline according to your needs by configuring the pipeline option branchToEnvironmentMapping. The setting could look like this: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'hotfix/': 'hotfix', '*': 'review' ] There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OpenShift. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OpenShift. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsComponentPipeline( branchToEnvironmentMapping: [:], podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if Bitbucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate By default, the component pipeline uses existing OpenShift resources, and just creates new images / deployments related to them. However, it is possible to control all OpenShift resources in code, following the infrastructure-as-code approach. This can be done by defining the resources as OpenShift templates in the directory openshift of the repository, which will then get applied by Tailor when running the pipeline. The advantage of this approach: All changes to OpenShift resources are traceble: who did the change and when? Moving your application between OpenShift projects or even clusters is trivial Changes to your application code that require a change in configuration (e.g. a new environment variable) as well can be done together in one commit. If you have an existing component for which you want to enable this feature, you simply need to run: mkdir -p openshift tailor -n foo-dev export -l app=foo-bar > openshift/template.yml Commit the result and the component pipeline should show in the ouput whether there has been drift and how it was reconciled. When using this approach, you need to keep a few things in mind: Any changes done in the OpenShift web console will effectively be reverted with each deploy. When you store templates in code, all changes must be applied to them. You can always preview the changes that will happen by running tailor diff from your local machine. DeploymentConfig resources allow to specify config and image triggers (and ODS configures them by default like this). When deploying via Tailor, it is recommended to remove the image trigger, otherwise you might trigger two deployments: one when config (such as an environment variable) changes, and one when the image changes. When you remove the image trigger, it is crucial to add the internal registry to the image field, and to configure imagePullPolicy: Always for the container (otherwise you might roll out old images). If you want to use encrypted secrets with Tailor, you have to create a keypair for Jenkins so that the pipeline can use it to decrypt the parameters. The easiest way to do this is to create an OpenShift secret named tailor-private-key and sync it with Jenkins as a credential. Example: tailor secrets generate-key jenkins@example.com oc -n foo-cd create secret generic tailor-private-key --from-file=ssh-privatekey=private.key oc -n foo-cd label secret tailor-private-key credential.sync.jenkins.openshift.io=true Controlling your OpenShift resources in source code enables a lot of other use cases as well. For example, you might want to preview changes to a component before merging the source code. By using Tailor to deploy your templates, you can create multiple running components from one repository, e.g. one per feature branch. Following are some steps how to achieve this: First, add 'feature/': 'dev' to the branchToEnvironmentMapping. Then, create new variables in the pipeline block: def componentSuffix = context.issueId ? \"-${context.issueId}\" : '' def suffixedComponent = context.componentId + componentSuffix With this in place, you can adapt the rollout stage: odsComponentStageRolloutOpenShiftDeployment( context, [ tailorSelector: \"app=${context.projectId}-${suffixedComponent}\", tailorParams: [\"COMPONENT_SUFFIX=${componentSuffix}\"] ] ) And finally, in your openshift/template.yml, you need to add the COMPONENT_SUFFIX parameter and append ${COMPONENT_SUFFIX} everywhere the component ID is used in deployment relevant resources (such as Service, DeploymentConfig, Route). That’s all you need to have automatic previews! You might want to clean up when the code is merged, which can be achieved with something like this: stage('Cleanup preview resources') { if (context.environment != 'dev') { echo \"Not performing cleanup outside dev environment\"; return } def mergedIssueId = org.ods.services.GitService.mergedIssueId(context.projectId, context.repoName, context.gitCommitRawMessage) if (mergedIssueId) { echo \"Perform cleanup of suffix '-${mergedIssueId}'\" sh(\"oc -n ${context.targetProject} delete all -l app=${context.projectId}-${context.componentId}-${mergedIssueId}\") } else { echo \"Nothing to cleanup\" } } The shared library already sets the build status of the built commit. It also provides convenience methods on BitbucketService to interact with pull requests: String createPullRequest(String repo, String fromRef, String toRef, String title, String description, List reviewers) creates a pull request in repo from branch fromRef to toRef. reviewers is a list of bitbucket user names. List getDefaultReviewers(String repo) returns a list of bitbucket user names (not display names) that are listed as the default reviewers of the given repo. String getDefaultReviewerConditions(String repo) returns all default reviewer conditions of the given repo, which can be parsed using readJSON. String getPullRequests(String repo, String state = 'OPEN') returns all open pull requests, which can be parsed using readJSON. Map findPullRequest(String repo, String branch, String state = 'OPEN') tries to find a pull request for the given branch, and returns a map with its ID and target branch. void postComment(String repo, int pullRequestId, String comment) allows to add comment to the PR identified by pullRequestId. To make use of these methods, you need to get an instance of the BitbucketService in your Jenkinsfile like this: Jenkinsfile import org.ods.services.ServiceRegistry import org.ods.services.BitbucketService def sayHello(def context) { stage('Say Hello') { def bitbucketService = ServiceRegistry.instance.get(BitbucketService) bitbucketService.postComment(context.repoName, 1, \"Hello world\") } } If the subject of the built commit message contains [ci skip], [skip ci] or ***NO_CI***, the pipeline is skipped. # skip pipeline (one-line commit) $ git commit -m \"docs: update README [ci skip]\" # run pipeline (multi-line commit) as it is not part of the subject $ git commit -m \"docs: update README - add section installation - [ci skip]\" The Jenkins build status will be set to NOT_BUILT, the Bitbucket build status to SUCCESSFUL (as there is no \"skipped\" state). The pipeline will start to execute initially, but abort before launching any agent nodes or starting any of the stages defined in the Jenkinsfile. Each built-in stage (like odsComponentStageScanWithSonar) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsComponentStageScanWithSonar(context, [branch: 'production']) Checks if an image for the current commit exists already, otherwise executes the given closure. Example: odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage to build your application package } odsComponentStageBuildOpenShiftImage(context) } The step can be customized using the options resourceName and imageTag. Using this step in your Jenkinsfile allows you to avoid building a container image for the same Git commit multiple times, reducing build times and increasing reliability as you can promote the exact same image from one environment to another. Keep in mind that image lookup works by finding an image tagged with the current Git commit. If you merge a branch into another using a merge commit, the current Git commit SHA will differ from the previously built image tag, even if the actual contents of the repository are the same. To ensure image importing kicks in, use the --ff-only option on git merge (this can also be enabled for pull requests in Bitbucket under \"Merge strategies\"). There are a few consequences when doing so, which should be kept in mind: No merge commit is created, which has the downside that you do not see when a PR was merged, and that the merge commit is a convenient way to find the associated PR. Further, if the latest commit on a branch which you want to merge contains [ci skip], beware that the build on the target branch will also be skipped. That siad, having no merge commit has the upside that your Git history is not polluted by merge commits. Enforcing a fast-forward merge prevents you from merging a branch which is not up-to-date with the target branch. This has the downside that before merging, you may need to rebase your branch or merge the target branch into your branch if someone else updated the target branch in the meantime. While this may cause extra work, it has the upside that you cannot accidentally break the target branch (e.g. tests on your branch may work based on the outdated target branch, but fail after the merge). In summary, using git merge --ff-only provides safety, a clean history and allows to promote the exact same image between environments. The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the sonar-project.properties file in the repository being built. If your SonarQube server edition allows to scan multiple branches (any commercial edition does), then this stage will automatically decorate pull requests in Bitbucket with feedback from SonarQube (if the PR already exists at the time of the Jenkins pipeline run). In debug mode, the sonar-scanner binary is started with the -X flag. If no sonar.projectVersion is specified in sonar-project.properties, it is set to the shortened Git SHA. Option Description analyzePullRequests boolean Whether to analyze pull requests and decorate them in Bitbucket. Turned on by default, however a scan is only performed if the branch property allows it. branch String Branch to scan. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to scan. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and \\ all branches (). Defaults to master for the community edition of SonarQube, and for all other editions (which are capable of handling multiple branches). longLivedBranches List Branch(es) for which no PR analysis should be performed. If not set, it will be extracted from branchToEnvironmentMapping of the context. requireQualityGatePass boolean Whether to fail the build if the quality gate defined in the SonarQube project is not reached. Defaults to false. resourceName String Name of BuildConfig/ImageStream of the image that we want to scan (defaults to context.componentId). BuildOpenShiftImageStage puts the imageRef into a map with the resourceName as key. In order to be able to receive the imageRef for scanning, the resourceName needs to be the same as in BuildOpenShiftImageStage. The \"Aqua Security Scan\" stage scans an image that was previously built in that same pipeline run. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan result on the Aqua platform. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. To get started, make sure you have a ConfigMap in OpenDevStack project namespace (usually ods) in OpenShift that has these fields: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: registry: Refers to a name for the image registry given in the Aqua platform by an Aqua platform admin. secretName: Name of a Secret that contains the credentials of the Aqua platform user that is used for executing the scan. That user needs to have scanner rights. This field is optional, if the property doesn’t exists the system will use the credential 'cd-user-with-password'. url: Base URL of the Aqua platform (including scheme). enabled: If true, the scan always occur in all projects. False to disable the scan. nexusRepository: Name of the repository in Nexus instance to store the results of analysis in HTML format. alertEmails: Optional field. It contains the emails splitted by ',' to send error notifications regarding with Aqua analysis (misconfigurations, etc…​). The mail server must be configured in Jenkins to send the emails. Is possible to disable the analysis at project level. for that is necessary to add in the ConfigMap new properties e.g. like this: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: project.key1.enabled: project.key2.enabled: project.key1.enabled: Property to indicate that key1 (being key1 the key of the project) has the aqua analysis disabled. project.key2.enabled: The same but for key2 project. The \"Trivy Security Scan\" stage scans the filesystem of the cloned repository using Trivy and generates a SBOM report, with CycloneDX format by default. Check Trivy supported formats here. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan report stored in Nexus. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. To get started, edit your Jenkinsfile and add the Trivy stage: ) { context -> ... odsComponentStageScanWithTrivy(context) ... } Option Description additionalFlags List Additional flags for the Trivy CLI. Please refer to the official Trivy CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--debug', '--timeout=10m'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). format String Set the format for the generated report. Defaults to cyclonedx. nexusDataBaseRepository String Name of the Nexus repository used to proxy the location of the database of vulnerabilities located in GitHub. Defaults to docker-group-ods. nexusReportRepository String Name of the Nexus repository where the scan report will be stored. Defaults to leva-documentation. reportFile String Name of the file that will be archived in Jenkins and uploaded in Nexus. Defaults to trivy-sbom.json. resourceName String Name of component that we want to scan. Defaults to context.componentId. scanners String Comma-separated list of what security issues to detect. Defaults to vuln,config,secret,license. vulType String Comma-separated list of vulnerability types to scan. Defaults to os,library. The \"Snyk Security Scan\" stage performs two tasks: It uploads your 3rd party dependencies including their licenses for monitoring. Snyk will then notify developers about new vulnerabilities per email once they are reported to the Snyk Vulnerability Database. It analyses your 3rd party dependencies including their licenses and breaks the build if vulnerable versions are found. To get started, setup an organisation in snyk.io with exactly the same name as your ODS project name. Under \"Settings\", create a service account for this organisation and make a note of the displayed token. Edit your Jenkinsfile and add the Snyk stage: ) { context -> ... odsComponentStageScanWithSnyk(context, [snykAuthenticationCode: ]) ... } It is recommended to read your authentication token dynamically, e.g. from an environment variable or a credential in your Jenkins master. Option Description additionalFlags List Additional flags for the Snyk CLI. Please refer to the official Snyk CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--all-sub-projects', '--show-vulnerable-paths=all'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildFile String Build file from which to gather dependency information. Defaults to build.gradle. failOnVulnerabilities boolean Whether to fail the build when vulnerabilities are found. Defaults to true. organisation String Name of the Snyk organisation. Default to context.projectId. projectName String Name of the Snyk project name. Default to context.componentId. severityThreshold String Severity threshold for failing. If any found vulnerability has a severity equal or higher to the threshold, the snyk test will return with a failure status. Possible values are low, medium, high. Defaults to low. snykAuthenticationCode String Required! Authentication token of a service account within your organisation. Triggers (and follows) a build in the BuildConfig related to the repository being built. The resulting image is tagged with context.shortGitCommit. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildArgs Map Pass build arguments to the image build process. buildTimeoutMinutes Integer Timeout of build (defaults to 15 minutes). buildTimeoutRetries Integer Adjust retries to wait for the build pod status (defaults to 5). dockerDir String Docker context directory (defaults to docker). extensionImageLabels Map Extra image labels added into imageLabels imageLabels Map Pass labels which should be added on the image. Each label will be prefixed with ext.. imageTag String Image tag to apply (defaults to context.shortGitCommit). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). Imports an image from another namespace. By default, the source image is identified using the commit which triggered the pipeline run. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). imagePullerSecret String Name of image-puller secret (optional, used when pulling images from an external source cluster). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). sourceProject String OpenShift project from which to import the image identified by resourceName. sourceTag String Image tag to look for in the sourceProject (defaults to context.shortGitCommit). targetTag String Image tag to apply to the imported image in the target project (defaults to sourceTag). Rolls out the current resources as defined in the component. Without any configuration the stage tries to guess what a user expects. If the component contains a directory name chart, a Helm deployment is assumed. If the component contains a directory name openshift, a Tailor deployment is assumed. If neither exists a Tailor deployment is assumed. Triggers a release or update of an release with Helm. The stage will use the helm command to trigger the release. The command will be executed in the directory referenced by chartDir. If the directory does not exist, the stage will fail. The images used in the deployment will not be tagged or otherwise modified. HELM_DIFF_IGNORE_UNKNOWN_FLAGS=true helm -n play-dev secrets diff upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=example-dev \\ --set imageTag=deadbeef69cafebabe \\ --no-color --three-way-merge --normalize-manifests \\ example-release . || true # run the upgrade helm -n play-dev secrets upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=play-dev \\ --set imageTag=deadbeef69cafebabe \\ example-release . Triggers (and follows) a rollout of the DeploymentConfig related to the repository being built. It achieves this by tagging the image built in odsComponentStageBuildOpenShiftImage with latest. This might already trigger a rollout based on an existing ImageTrigger. If none is set, the stage will start a manual rollout. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In this case, it is recommended to remove any image triggers to avoid duplicate rollouts (one when configuration changes due to a config trigger and one when the image is tagged to latest). In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). chartDir String Directory of Helm chart (defaults to chart). deployTimeoutMinutes Integer Adjust timeout of rollout (defaults to 5 minutes). Caution: This needs to be aligned with the deployment strategy timeout (timeoutSeconds) and the readiness probe timeouts (initialDelaySeconds + failureThreshold * periodSeconds). deployTimeoutRetries Integer Adjust retries to wait for the pod during a rollout (defaults to 5). helmAdditionalFlags List List of additional flags to be passed verbatim to to helm upgrade (empty by default). Only relevant if the directory referenced by chartDir exists. helmDefaultFlags List List of default flags to be passed verbatim to to helm upgrade (defaults to ['--install', '--atomic']). Typically these should not be modified - if you want to pass more flags, use helmAdditionalFlags instead. Only relevant if the directory referenced by chartDir exists. helmDiff boolean Whether to show diff explaining changes to the release before running helm upgrade (true by default). Only relevant if the directory referenced by chartDir exists. helmEnvBasedValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. These must contain a suffix called '.env.yml' - which will be replaced during rollout and deployment, and then added to helmValueFiles Passing a string literal of 'values.env.yaml' will be expanded to their respective environments. For example: 'values.env.yaml' will become 'values.dev.yaml', 'values.test.yaml' or 'values.prod.yaml'. That means creating the usual files that are named after their respective environment are parsed as usual. helmPrivateKeyCredentialsId String Credentials name of the private key used by helm-secrets (defaults to ${context.cdProject}-helm-private-key). The fingerprint must match the one specified in .sops.yaml. Only relevant if the directory referenced by chartDir exists. helmReleaseName String Name of the Helm release (defaults to context.componentId). Change this value if you want to install separate instances of the Helm chart in the same namespace. In that case, make sure to use {{ .Release.Name }} in resource names to avoid conflicts. Only relevant if the directory referenced by chartDir exists. helmValues Map Key/value pairs to pass as values (by default, the key imageTag is set to the config option imageTag). Only relevant if the directory referenced by chartDir exists. helmValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. imageTag String Image tag on which to apply the latest tag (defaults to context.shortGitCommit). openshiftDir String Directory with OpenShift templates (defaults to openshift). selector String Selector scope used to determine which resources are part of a component (defaults to context.selector). tailorExclude String Resource kind exclusion used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile String Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorParams List Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve List Paths to preserve in the live configuration (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPrivateKeyCredentialsId String Credentials name of the private key used by Tailor (defaults to ${context.cdProject}-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector String Selector scope used by Tailor (defaults to config option selector). Only relevant if the directory referenced by openshiftDir exists. tailorVerify boolean Whether Tailor verifies the live configuration against the desired state after application (defaults to false). Only relevant if the directory referenced by openshiftDir exists. When tailor does the rollout, all the created or updated OpenShift resources are automatically labeled to ease their management. This is in contrast to helm rollouts which rely on the chart providing the desired labels. Add labels either via the chart directly or via supplying them in the values or values files. Detailed information about the labelling can be found here. Triggers the upload of an artifact to Nexus. Implementation is based on https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api Option Description artifactId String For repositoryType=maven2: default is context.componentId branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). distributionFile String Filename. Defaults to ${context.componentId}-${context.tagversion}.tar.gz groupId String For repositoryType=maven2: default is the groupId on project level, or in case not set at all org.opendevstack.${context.projectId} repository String Name of the Nexus repository. Defaults to candidates. repositoryType String Type of the Nexus repository. Defaults to maven2. targetDirectory String For repositoryType=raw: default is context.projectId version String For repositoryType=maven2: default is context.tagversion Copies a source image into the project. This is useful to get images into the OpenShift registry so that release manager will accept all images. The primary intention is for helm charts so that external images can be imported. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). sourceCredential String sourceCredential is the token to use, if any, to access the source registry sourceImageUrlIncludingRegistry String Source image to import This needs to be in the following format: [REGISTRY/]REPO/IMAGE[:TAG] tagIntoTargetEnv Boolean true will tag the image from the -cd namespace into the targetEnvironment that the pipeline is running for verifyTLS Boolean verifyTLS allows the stage to ignore certificate validation errors. The default is to verify certificate paths","title":"Component Pipeline","component":"opendevstack","version":"4.x","name":"component-pipeline","url":"/opendevstack/latest/jenkins-shared-library/component-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Git Workflow / Branch to Environment Mapping","hash":"_git_workflow_branch_to_environment_mapping","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Advanced","hash":"_advanced","id":6},{"text":"Agent customization","hash":"_agent_customization","id":7},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":8},{"text":"Deploying OpenShift resources from source code","hash":"_deploying_openshift_resources_from_source_code","id":9},{"text":"Interacting with Bitbucket","hash":"_interacting_with_bitbucket","id":10},{"text":"Skipping pipeline runs","hash":"_skipping_pipeline_runs","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"odsComponentFindOpenShiftImageOrElse","hash":"_odscomponentfindopenshiftimageorelse","id":13},{"text":"odsComponentStageScanWithSonar","hash":"_odscomponentstagescanwithsonar","id":14},{"text":"Options","hash":"_options","id":15},{"text":"odsComponentStageScanWithAqua","hash":"_odscomponentstagescanwithaqua","id":16},{"text":"odsComponentStageScanWithTrivy","hash":"_odscomponentstagescanwithtrivy","id":17},{"text":"Options","hash":"_options_2","id":18},{"text":"odsComponentStageScanWithSnyk","hash":"_odscomponentstagescanwithsnyk","id":19},{"text":"Options","hash":"_options_3","id":20},{"text":"odsComponentStageBuildOpenShiftImage","hash":"_odscomponentstagebuildopenshiftimage","id":21},{"text":"Options","hash":"_options_4","id":22},{"text":"odsComponentStageImportOpenShiftImage","hash":"_odscomponentstageimportopenshiftimage","id":23},{"text":"Options","hash":"_options_5","id":24},{"text":"odsComponentStageRolloutOpenShiftDeployment","hash":"_odscomponentstagerolloutopenshiftdeployment","id":25},{"text":"Helm","hash":"_helm","id":26},{"text":"Tailor","hash":"_tailor","id":27},{"text":"Options","hash":"_options_6","id":28},{"text":"Notable Differences between tailor and helm deployments","hash":"_notable_differences_between_tailor_and_helm_deployments","id":29},{"text":"odsComponentStageUploadToNexus","hash":"_odscomponentstageuploadtonexus","id":30},{"text":"Options","hash":"_options_7","id":31},{"text":"odsComponentStageCopyImage","hash":"_odscomponentstagecopyimage","id":32},{"text":"Options","hash":"_options_8","id":33}]},"152":{"id":152,"text":"OpenDevStack provides a Jenkins Shared Library which offers three pipelines: A pipeline to build components, odsComponentPipeline. This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. As a user, you will mostly interface with this pipeline. A pipeline to orchestrate releases with multiple components, odsOrchestrationPipeline. It supports the orchestration of multiple repositories into a live application using the Release Manager quickstarter. A pipeline to provision quickstarters, odsQuickstarterPipeline. This pipeline is useful for quickstarter authors. The implementation was originally based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/jenkins-shared-library/index.html","titles":[{"text":"Background","hash":"_background","id":1}]},"153":{"id":153,"text":"When a rollout happens via tailor there are labels that are added regardless of whether they are in any template or not. This is in contrast to helm which relies on the charts setting the right labels. This decision avoids an unexpected pause or resume during a rollout. A helm rollout will have only the labels that were specified and OpenDevStack will not try to add, remove or change any labels. If your cluster has operators there could still be some label changes. The shared library automatically labels all OpenShift resources created in order to ease their management. The labels applied are based on the recommendations by: Kubernetes OpenShift Helm Some additional labels, specific to OpenDevStack, are also assigned. The labelling process is automatically applied by both the quickstarter and the component pipelines. The orchestration pipeline does not directly perform any labelling, but the component pipeline will set some label values based on the information provided by the release manager, when available. The labels set are not directly used by OpenDevStack, but are just made available to the users both as information about the resources and as a way to find resources in queries. The recommended labels, when given values according to their intended semantics, can be used by tools that recognise them, including OpenShift and Helm. The values for the labels are set, in decreasing order or priority, from: Values forcibly set by the library, which cannot be customised. Metadata information which can be customised through the metadata.yml file in the component repository. Some labels can get default values when none have been assigned in the previous steps. The labels are also assigned to the template of each Deployment or DeploymentConfig resource. This warrants that any pods created will also be appropriately labeled. Changing the template of a Deployment or DeploymentConfig can trigger a new deployment, if a config-change trigger is in place. A best effort is done to avoid multiple deployments. Note that any paused Deployment or DeploymentConfig will be resumed as part of the rollout stage. This is the list of supported labels: Label Meaning Value Example app.kubernetes.io/name The name of the application name metadata parameter mongodb app.kubernetes.io/instance A unique name identifying the instance of an application Component ID user-db app.kubernetes.io/version The version of the application version metadata parameter 4.0.8 app.kubernetes.io/component The component within the architecture role metadata parameter database app.kubernetes.io/part-of The name of a higher level application this one is part of partOf metadata parameter my-online-shop app.kubernetes.io/managed-by The tool being used to manage the operation of an application Autodetected tailor app.openshift.io/runtime The runtime this application runs on runtime metadata parameter spring-boot app.openshift.io/runtime-version The version of the runtime runtimeVersion metadata parameter 2.1.16.RELEASE helm.sh/chart Helm chart name-version Autodetected chartName-1.0.0 app.opendevstack.org/project Project ID Autodetected my-project app.opendevstack.org/type Type of ODS component type metadata parameter ods-service app.opendevstack.org/system-name The name of the system Autodetected some-system app.opendevstack.org/project-version Version across all components in the project Autodetected 1.0 app.opendevstack.org/work-in-progress Whether this project version is still a work in progress Autodetected true Detailed description of each label and how to customise it, if possible. Please, note that valid label values must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. Most label values will be sanitised before assigning, but it is recommended to specify values following these restrictions. The name of the application. This is the software deployed in this component. There may be other instances of the same software in other components. This label is always assigned and its default value is the component id. This value can be customised by setting the name entry in the metadata.yml file. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This label will not be deleted, if it is already set. A unique name identifying the instance of an application. This label is used when there is more than one instance of the software identified by the app.kubernetes.io/name label. This label is automatically set to the component id and it cannot be customised. This label will only be set if its value differs from the value of app.kubernetes.io/name. Therefore, if the name label is set to its default value (component id), this instance label will not be set. Example: user-db The current version of the application (e.g., a semantic version, revision hash, etc.). This is the version of the software identified by the app.kubernetes.io/name label. This value can be customised by setting the version entry in the metadata.yml file and it has no default value. Example: 4.0.8 This label will not be deleted, if it is already set. The component within the architecture. This is the role this component plays in the architecture. This value can be customised by setting the role entry in the metadata.yml file. A best effort will be made to determine a default value for this: If the quickstarter name starts with be- (but not be-fe-), the default is backend. If the quickstarter name starts with fe-, the default is frontend. If the quickstarter name starts with ds-, the default is subsystem. In any other case, there is no default. This default value can only be determined when provisioning the component for the first time from a given quickstarter. No default value is ever calculated by the component or orchestration pipelines. However, if the default value was set by the quickstarter pipeline, it can be overridden, but not deleted. Example: database Any value can be set, but OpenShift recognises the following values: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. Note that data-science components are assigned the ad-hoc subsystem value by default. This label will not be deleted if it is already set. The name of a higher level application this one is part of. This is used to group components as part of a higher-level application, when suitable. It is not meant to be systematically set to the project id, though it could make sense in some specific cases. Note that there is already an OpenDevStack-specific project label that holds the project id. This label is not compulsory and has no default value. This value can be customised by setting the partOf entry in the metadata.yml file. Example: you are building an online shop, and this component is part of it. You can set app.kubernetes.io/part-of=my-online-shop. This label will be removed, if no value is given for it. The tool being used to manage the operation of an application. This is automatically set to tailor (by default) or helm, for components managed with Helm. This value cannot be customised. Example: tailor The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. This value can be customised by setting the runtime entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This label will be removed, if no value is given for it. The version of the runtime. This value can be customised by setting the runtimeVersion entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if app.openshift.io/runtime is not also specified. Example: 2.1.16.RELEASE This label will be removed, if no value is given for it. This should be the chart name and version: {{ .Chart.Name }}-{{ .Chart.Version | replace \"+\" \"_\" }}. This is autodetected and cannot be customised. Only set when the component is managed by Helm. Note that, as per the specification of the label in Helm documentation, the value is always sanitised by replacing the character + with the character _. This is done before the common sanitising performed to all label values. Example: charName-1.0.0 The project id. This is autodetected and cannot be customised. Example: my-project This label will not be deleted if it is already set. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. Generally, only the two first ones create resources in OpenShift. This value can be customised by setting the type entry in the metadata.yml file and it has no default value. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This label will not be deleted if it is already set. This is currently set by the Release Manager to the config item and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. This is currently set by the Release Manager to the change id and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. Boolean value indicating whether the current project version (change id) is still a work in progress. This is currently set by the release manager from the value of the version build parameter and it cannot be customised. This label will not be deleted if it is already set.","title":"OpenShift resource labelling with tailor","component":"opendevstack","version":"4.x","name":"labelling","url":"/opendevstack/latest/jenkins-shared-library/labelling.html","titles":[{"text":"Overview of tailor labels","hash":"_overview_of_tailor_labels","id":1},{"text":"Usage","hash":"_usage","id":2},{"text":"Detailed description","hash":"_detailed_description","id":3},{"text":"app.kubernetes.io/name","hash":"_app_kubernetes_ioname","id":4},{"text":"app.kubernetes.io/instance","hash":"_app_kubernetes_ioinstance","id":5},{"text":"app.kubernetes.io/version","hash":"_app_kubernetes_ioversion","id":6},{"text":"app.kubernetes.io/component","hash":"_app_kubernetes_iocomponent","id":7},{"text":"app.kubernetes.io/part-of","hash":"_app_kubernetes_iopart_of","id":8},{"text":"app.kubernetes.io/managed-by","hash":"_app_kubernetes_iomanaged_by","id":9},{"text":"app.openshift.io/runtime","hash":"_app_openshift_ioruntime","id":10},{"text":"app.openshift.io/runtime-version","hash":"_app_openshift_ioruntime_version","id":11},{"text":"helm.sh/chart","hash":"_helm_shchart","id":12},{"text":"app.opendevstack.org/project","hash":"_app_opendevstack_orgproject","id":13},{"text":"app.opendevstack.org/type","hash":"_app_opendevstack_orgtype","id":14},{"text":"app.opendevstack.org/system-name","hash":"_app_opendevstack_orgsystem_name","id":15},{"text":"app.opendevstack.org/project-version","hash":"_app_opendevstack_orgproject_version","id":16},{"text":"app.opendevstack.org/work-in-progress","hash":"_app_opendevstack_orgwork_in_progress","id":17}]},"154":{"id":154,"text":"Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@4.x') _ odsOrchestrationPipeline( debug: true, odsImageTag: '4.x' ) The release manager quickstarter comes with a Jenkinsfile that is already setup like this. The library automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside a release manager component’s metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-infra, ods-service, ods-saas-service, ods-test and ods-library. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. If you use this type ODS expects to find JUnit XML test results. If you do not have any test results the pipeline will fail. If you are deploying something where JUnit XML test results are not available consider using Repository Type: ods-service. This type designates ODS components designed for consuming on-prem or cloud services of arbitrary type using infrastructure as code. Such components are based on quickstarters whose names start with inf-. This type designates ODS components designed for documenting vendor-provided SaaS services. This type designates ODS components designed for running services of arbitrary type. Examples include repositories based on the airflow-cluster quickstarter. This type designates ODS components designed for running automated tests against a live application. Such components are based on quickstarters whose names start with e2e-. This type designates ODS components designed for library components. Such components are only build in dev (WIP and assemble mode), and are needed for other components to be built. The library will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, our library automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. By default the shared library will rebuild all type ods components, no matter which ones changed since the last release. In order to build only the components whose source code changed (partial rebuilding as we will call it from now on), the following needs to be configured in metadata.yml allowPartialRebuild : true If one repository should always be rebuilt, even if partial rebuild is configured on root level, forceRebuild : true can be set at repository level, e.g. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B forceRebuild : true It is important to highlight that, despite having configured partial rebuild, the orchestration pipeline will still deploy all the components (both those which changed and which did not) to the target environment. By default the shared library will always pull the agent image from the internal docker repository. Depending on the cluster node setup, this may decrease execution performance. In order to re-use loaded images, a knob in the Jenkinsfile configuration of the stage odsOrchestrationPipeline can be turned on: alwaysPullImage: true By default the orchestration pipeline will create a pod based on the jenkins-base-agent image to do much of its work. In seldom cases, ususally with a lot of repositories, one may hit an out of memory error on the pod named 'mro-XX'. In this case the below memory limit should be adjusted (defaulting to '1Gi') mroAgentMemoryLimit = \"1Gi\" The library automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process by the release manager component. Note: when you configure a Jira service in the release manager component’s metadata.yml, our library expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the library will fall back to the document chapter templates located in your release manager component’s docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. The library supports the activation of various capabilities through the capabilities: field in metadata.yml. capabilities: - Zephyr The Zephyr for Jira capability currently supports: Reporting the result of a test execution to Zephyr for Jira This section will guide you through the \"environment promotion\" feature of the orchestration pipeline. It is assumed have the release manager quickstarter already provisioned and configured in your project. Typically, software is running in different environments, such as one environment for development (DEV), one for quality assurance (QA), and one for production (PROD - this is what end-users of the software consume). Developers work on on the software in the development environment, and once they finish one version (a state) of the software, they bring that version to the QA environment, and once this version is deemed production-ready it is brought to the production environment so that users can consume the new version. The environment promotion feature of the orchestration pipeline automates moving a certain version of the software from one environment to the next. Developers only have to tell the orchestration pipeline if a new version should be built (in DEV) and packaged as an installable \"release bundle\", or if an existing \"release bundle\" should be promoted to either the QA or the production environment. The environment promotion feature is part of the regular orchestration pipeline. Therefore, the promotion is executed from various Jenkins stages. It is not possible to change the process itself, but you can customize how the promotion happens exactly for each of your software components. The components of your software are defined in the repositories section of the metadata.yml file in the release manager repository. In order for the orchestration pipeline to know which state of each component should be promoted, it needs to have some knowledge about how version control in your repositories is organised. Everything depends on a user-supplied build parameter named version to the Jenkins pipeline. Other input parameters do not have any impact on source code lookup. When no version is given, the orchestration pipeline will default to WIP (work in progress). In this scenario, source code for each repository is taken from the configured branch in the metadata.yml file (defaulting to master if no branch is specified there). When a version is given, source code will be taken from a branch release/$VERSION in each repository. When this branch does not exist yet, it will be created (based on the configured branch in metadata.yml) by the pipeline. Subsequent runs with the same version input will take the source code from the created release branch - changes to the configured branch will have no effect on this version! This is by design: it allows some developers to work on new features on the mainline branch (typically master) while others polish the release branch. To this end, the orchestration pipeline allows to enable separate development environments per version to isolate changes in OpenShift resources (see section \"Environments\" further down). The orchestration pipeline applies the same branching rules to the release manager repository - it will create a release branch per version. There is one small caveat here: Jenkins only considers the Jenkinsfile from the branch which is configured for a pipeline. That means that for a pipeline setup against master, Jenkins will always execute the latest Jenkinsfile from master, even when you pass an explicit version to the pipeline. The orchestration pipeline will read e.g. the metadata.yml file from the matching release branch, but the Jenkinsfile itself will be from master. Usually, this should not be an issue as you should not make changes to the Jenkinsfile of the release manager repository anyway. A specific \"release bundle\" is identified by four data points: a version (as outlined above), a changeId, a build number and an environment. The version, changeId and environment are user-supplied input parameters to the release manager pipeline, the build number is calculated automatically. The changeId can be any string meaningful to the user, its value does not have any effect on the operation of the orchestration pipeline. The environment input variable (such as DEV) will be shortened to a single-letter token (e.g. D). Technically speaking, a release bundle is a certain state of the release manager repository and the state of each linked repository at that time. This state is identified by a Git tag. For example, a release bundle with version=1, changeId=1234, buildNumber=0 and environment=DEV is identified by the Git tag v1-1234-0-D. This tag is set on the release manager repository, and all repositories the metadata.yml refers to at this time. The orchestration pipeline assumes three \"conceptual\" environments: DEV, QA and PROD (with short token forms D, Q and P). Those environments are strictly ordered - a state should go from DEV to QA, and then from QA to PROD. To ensure that software progresses along the DEV → QA → PROD path, release bundles from environment DEV can only be installed into QA, and only a release bundle from QA can be installed into PROD. Installing a release bundle from DEV into PROD is not allowed. Each \"conceptual\" environment is mapped to an OpenShift namespace: DEV to $PROJECT-dev (e.g. foo-dev) QA to $PROJECT-test (e.g. foo-test. Note that it is NOT -qa!) PROD to $PROJECT-prod (e.g. foo-prod) Keep in mind that when you create a new project with OpenDevStack, you get three OpenShift namespaces: foo-dev (your DEV environment) foo-test (your QA environment - unfortunately not named -qa for historical reasons) foo-cd (where Jenkins runs and the pipelines such as the orchestration pipeline are executed) So while there is a corresponding namespace for DEV and QA, there is no namespace corresponding to the PROD environment out-of-the-box. This is because it is assumed that your PROD environment is likely on another cluster altogether. To create foo-prod on another cluster, you (or someone with appropriate rights) can run the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-project.sh. Then you need to tell orchestration pipeline two things: where the API of the external cluster is, and the credentials with which to access it. A typical configuration is: id: foo ... repositories: [ ... ] environments: prod: apiUrl: https://api.example.com credentialsId: foo-cd-foo-prod This assumes you have the API token credentials stored in a secret of type kubernetes.io/basic-auth named foo-prod in the foo-cd namespace. This secret needs to be synced with Jenkins (which is achieved by labeling it with credential.sync.jenkins.openshift.io=true). The stored credentials need to belong to a serviceaccount with rights to admin the foo-prod namespace. The easiest way to setup all of this is by running the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-sa-secret.sh, which makes use of the output of the create-target-project.sh ran earlier. It is also possible to have the PROD environment on the same cluster, then you simply create a foo-prod namespace next to foo-dev and foo-test, and allow the foo-cd:jenkins account to admin that project. In that case, you do not need to configure anything in metadata.yml as the default configuration assumes the same cluster. The opposite is also possible: you can configure the QA environment to be on a different cluster than the DEV environment - simply follow the instructions above to create a foo-test namespace. As mentioned in the \"Source Code Organisation\" section, the orchestration pipeline allows to enable separate development environments to isolate different versions. When this mode is enabled, pipeline runs with version=WIP will deploy into the $PROJECT-dev as usual, but pipeline runs with version=X will deploy into $PROJECT-dev-X. The $PROJECT-dev-X environment has to be created beforehand (e.g. by cloning $PROJECT-dev with its serviceaccounts and rolebindings). To enable this feature, set versionedDevEnvs to true in the config of your Jenkinsfile, like this: def config = [debug: true, odsImageTag: 'x.x', versionedDevEnvs: true] If one of your components take longer than 10 minutes (this is the default value) to be promoted from one environment to another, the Release Manager pipeline will exit due to this timeout. You can increase this timeout by setting the openshiftRolloutTimeoutMinutes per environment in the Release Manager repository in the metadata.yml file. Similarly, the number of retries is configurable with the openshiftRolloutTimeoutRetries property. The following example establishes a timeout of 120 minutes for both qa and prod environments with a total number of 3 retries. ... environments: prod: apiUrl: https://... credentialsId: ... openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 qa: openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 ... Let’s start by assuming you have a project FOO with two components, X and Y. These components are defined under the repositories section in the metadata.yml file of the release manager repository. When you want to create a new release, you start the orchestration pipeline with input parameters - we will use version 1 and change ID 1234 in this example. The environment should be DEV. At the end of the pipeline run, you’ll have a release bundle identified by the tag v1-1234-0-D. This release can later be promoted as-is to QA. Once it is installed there, the same release bundle will be tagged with v1-1234-0-Q which can then be promoted to PROD (where it will be tagged with v1-1234-0-P). To create a release bundle, the orchestration pipeline will first trigger the build of each component. Then, it will export all resources in your OpenShift namespace ($PROJECT-$ENVIRONMENT, here foo-dev) belonging to the component. By convention, this means all resources labeled with app=$PROJECT-$COMPONENT (e.g. app=foo-x). Any resources without such a label will NOT be part of the release bundle. The exported resources are stored in a template.yml file (an OpenShift template) located in the openshift-exported folder within each component repository. Further, the container image SHA of the running pod is retrieved and stored in the file image-sha in the same folder. Once done, the orchestration pipeline will commit the two files, tag the commit with v1-1234-0-D and push to the remote. After this process has been done for all repositories, the same tag is also applied to the release manager repository. At this stage, the \"dev release bundle\" is complete and can be installed into QA. To trigger the installation of an existing release bundle, the user needs to supply a version and changeId which has previously been used to create a release bundle. In our example, supplying version=1, changeId=1234 and environment=QA will promote the release bundle identified by v1-1234-0-D to the QA environment and tag it with v1-1234-0-Q. Now that we have a \"QA release bundle\", we can promote it to PROD by supplying version=1, changeId=1234 and environment=PROD. As outlined above, a release bundle is essentially a state of all involved Git repositories. Each component repository contains two artifacts: a container image SHA OpenShift resource configuration (expressed in an OpenShift template) You cannot modify the image SHA (it is the result of what the component pipeline builds), but you can influence the OpenShift template. One reason to do so is that e.g. routes or ConfigMap values will need to differ between environments, and you need to tell the orchestration pipeline to parametrize the templates, and to supply the right values when the templates are applied in the target environment. When the orchestration pipeline exports configuration, it has no way to tell which values should actually be parameters. For example, you might have a route x.foo-dev.dev-cluster.com in DEV, and want this to be x.foo-test.dev-cluster.com in QA and x.foo-prod.prod-cluster.com in PROD. In the exported template, the value x.foo-dev.dev-cluster.com will be hardcoded. To fix this, you can create three files in the release manager repository, dev.env, qa.env and prod.env. These files may contain PARAM=value lines, like this: dev.env X_ROUTE=x.foo-dev.dev-cluster.com qa.env X_ROUTE=x.foo-test.dev-cluster.com prod.env X_ROUTE=x.foo-prod.prod-cluster.com All three files need to list the exact same parameters - otherwise applying the templates will fail. Once those param files are present, the orchestration pipeline will pick them up automatically. When you create a release bundle (in DEV), the param file is applied \"in reverse\", meaning that any concrete param value (on the right) will be substituted with the param key (on the left) in the template. Later when the template is applied in e.g. QA, the param keys are replaced with the concrete values from qa.env. It is necessary to have all the param files completed before you create a release bundle - if you want to change e.g. the value of a parameter in the prod.env file afterwards, you will need to create a new release bundle (as they are identified by Git tags, which do not move when you make new commits on the release branch). Next to parametrizing templates, you can also adjust how the export is done. As the export is using Tailor, the best way to customize is to supply a Tailorfile in the openshift-exported folder, in which you can define the options you want to set, such as excluding certain labels or resource types, or preserving specific fields in the live configuration. Please see Tailor’s documentation for more information. It is also possible to have different configuration files per environment if you suffix with the $PROJECT, e.g. Tailorfile.foo-dev. If you have component-specific parameters that differ between environments, a lightweight way to add these is via parameter files located in the openshift-exported folder matching the target project such as foo-dev.env, foo-test.env and foo-prod.env. These files are picked up automatically without special setup in a Tailorfile. In the process described above, the OpenShift configuration is exported and stored in the repositories in openshift-exported. This approach is easy to get started with, but it does have limitations: There is no defined state: whatever gets exported is what will be promoted, even if a certain configuration was meant to be only temporary or is specific to e.g. only the DEV environment. There is little traceability: as configuration is done through the OpenShift web interface, it is not known who did the change and when, and no chance for other team members to review that change. The parametrization of the exported template might produce incorrect results as it is just a string search-and-replace operation without further knowledge of the meaning of your configuration values. To overcome these issues, it is possible to author the OpenShift templates yourself instead of exporting them. The fastest way to start with this is by renaming the folder openshift-exported (containing the exported template) to openshift. From this point on, the orchestration pipeline will skip the export, and apply whatever is defined in the openshift folder. If you are new to writing OpenShift templates, please read https://github.com/opendevstack/tailor#template-authoring. When you author templates, you can also store the secrets in the param files GPG encrypted (.env.enc files). To achieve this, you need to create a private/public keypair for Jenkins, store the private key in a secret called tailor-private-key in your foo-cd namespace, and sync it as a Jenkins credentials item. Once the .env.enc files are encrypted against the public key, the orchestration pipeline will automatically use the private key to decrypt the params on-the-fly. Please see Working with Secrets for more information. For versioned, separate DEV environments, pulling images from the foo-cd namespace is not possible (because the foo-cd:jenkins serviceaccount does not have admin rights in foo-cd and therefore can’t grant access to it) Tagging means we are pointing to a concrete SHA of a Git repository. This enforces that no manual editing of exported config can happen between promotion to QA and promotion to PROD, which in effect forces everything to be parameterized properly. JIRA always triggers the master branch of the release manager, which means the Jenkinsfile is always taken from master (and NOT from the correct release branch - only metadata.yml etc. are read from the release branch) There is only one QA namespace, preventing to test multiple releases at the same time. The secret of the serviceaccount in the target cluster is known to the orchestration pipeline (as a Jenkins credential synced from OpenShift), therefore developers with edit/admin rights in the CD namespace have access to that secret Tags could manually be set / moved (this can be prevented in Bitbucket by administrators) Passwords etc. in the OpenShift configuration are stored in clear text in the export (this can be prevented by authoring templates and using a private key for encryption of param files) During export, the templates are parameterized automatically, but this is done using string search-and-replace and unwanted replacements might occur (this can be prevented by authoring the templates manually). By default, SonarQube scans (and reports) are only generated for the master branch of each component. As the orchestration pipeline automatically creates release branches for each version, no scans and reports are created on those. This can be changed by configuring sonarQubeBranch: '*'` in each component’s Jenkinsfile, however keep in mind that quality trends etc. will be mixed up if you use the free version of SonarQube as that version does not have support for multiple branches. An existing QA-tag cannot be deployed again in PROD. This has been intentionally designed that way as any change to PROD needs its unique change ID, which results in a new tag.","title":"Orchestration Pipeline","component":"opendevstack","version":"4.x","name":"orchestration-pipeline","url":"/opendevstack/latest/jenkins-shared-library/orchestration-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-infra","hash":"_repository_type_ods_infra","id":5},{"text":"Repository Type: ods-saas-service","hash":"_repository_type_ods_saas_service","id":6},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":7},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":8},{"text":"Repository Type: ods-library (EXPERIMENTAL feature)","hash":"_repository_type_ods_library_experimental_feature","id":9},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":10},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":11},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":12},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":13},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":14},{"text":"Partial rebuilding of components","hash":"_partial_rebuilding_of_components","id":15},{"text":"Optimization of runtime performance","hash":"_optimization_of_runtime_performance","id":16},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":17},{"text":"Additional Capabilities","hash":"_additional_capabilities","id":18},{"text":"Zephyr for Jira","hash":"_zephyr_for_jira","id":19},{"text":"Environment Promotion","hash":"_environment_promotion","id":20},{"text":"What is the \"environment promotion\" feature?","hash":"_what_is_the_environment_promotion_feature","id":21},{"text":"Source Code Organisation","hash":"_source_code_organisation","id":22},{"text":"Release bundles","hash":"_release_bundles","id":23},{"text":"Environments","hash":"_environments","id":24},{"text":"Customizing the Release Manager configuration","hash":"_customizing_the_release_manager_configuration","id":25},{"text":"Timeouts and retries","hash":"_timeouts_and_retries","id":26},{"text":"Walkthrough","hash":"_walkthrough","id":27},{"text":"Customizing release bundle creation","hash":"_customizing_release_bundle_creation","id":28},{"text":"Authoring OpenShift configuration","hash":"_authoring_openshift_configuration","id":29},{"text":"Known Limitations","hash":"_known_limitations","id":30}]},"155":{"id":155,"text":"This pipeline allows to have a minimal Jenkinsfile for a quickstarter by providing all language-agnostic provision aspects. The goal is to duplicate as little as possible between quickstarters. This pipeline is NOT for building components. It is only to be used when you are authoring a (new) quickstarter itself. If you are building a component (an application), please refer to the component pipeline. Load the shared library in your Jenkinsfile like this: def odsNamespace = env.ODS_NAMESPACE ?: 'ods' def odsGitRef = env.ODS_GIT_REF ?: 'master' def odsImageTag = env.ODS_IMAGE_TAG ?: 'latest' library(\"ods-jenkins-shared-library@${odsGitRef}\") odsQuickstarterPipeline( imageStreamTag: \"${odsNamespace}/jenkins-agent-golang:${odsImageTag}\", ) { context -> odsQuickstarterStageCopyFiles(context) stage('Write go.mod') { dir(context.targetDir) { sh \"go mod init module example.com/foo/bar\" } } odsQuickstarterStageCreateOpenShiftResources(context) odsQuickstarterStageRenderJenkinsfile(context) odsQuickstarterStageRenderSonarProperties(context) } There are many built-in stages like odsQuickstarterStageCopyFiles that you can use, please see Stages for more details. odsQuickstarterPipeline can be customized by passing configuration options like this: odsQuickstarterPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. When you write custom stages inside the closure passed to odsQuickstarterPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsQuickstarterPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsQuickstarterPipeline starts. cdUserCredentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. packageName Package name, retrieved from PACKAGE_NAME build parameter. group Group, retrieved from GROUP build parameter. odsNamespace Central namespace where images are located, retrieved from ODS_NAMESPACE build parameter. odsImageTag ODS image tag. Retrieved from ODS_IMAGE_TAG build parameter. If not set, defaults to latest. odsGitRef ODS Git ref. Retrieved from ODS_GIT_REF build parameter. If not set, defaults to master. agentImageTag Image tag used for the agent pod, retrieved from odsImageTag unless the AGENT_IMAGE_TAG build parameter is set. sharedLibraryRef Git reference used for the Jenkins shared library, retrieved from odsImageTag unless the SHARED_LIBRARY_REF build parameter is set. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. gitUrlHttp URL of the Git repository to push to. The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsQuickstarterPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each built-in stage (like odsQuickstarterStageCreateOpenShiftResources) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsQuickstarterStageCreateOpenShiftResources( context, [directory: 'common/foobar'] ) Copies files from ${context.sourceDir}/files to ${context.targetDir}. There are no configuration options. Uses a set of OpenShift templates to create resources in OpenShift. The resources are created both in -dev and -test namespace. Tailor is used to apply the templates, and fed with a parameter file if it exists. Available options: Option Description directory Directory in which templates are located, defaults to ${context.sourceDir}/openshift. envFile Parameter file to use, defaults to ${context.sourceDir}/ocp.env selector Label selector to constrain tailor apply to, defaults to app=${context.projectId}-${context.componentId}. All the created OpenShift resources are automatically labeled to ease their management. The quickstarter pipeline does a best effort to assign appropriate labels for a new component, based on the information of the quickstarter. This information can be customised by updating the component metadata. Detailed information about the labelling can be found here. Processes a Jenkinsfile template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId @component_type@ ⇒ context.sourceDir @git_url_http@ ⇒ context.gitUrlHttp @ods_image_tag@ ⇒ context.odsImageTag @ods_git_ref@ ⇒ context.odsGitRef @agent_image_tag@ ⇒ context.agentImageTag @shared_library_ref@ ⇒ context.sharedLibraryRef Available options: Option Description source Jenkinsfile template to use, defaults to Jenkinsfile.template target Jenkinsfile filename, defaults to Jenkinsfile Processes a sonar-project.properties template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId Available options: Option Description source sonar-project.properties template to use, defaults to sonar-project.properties.template target sonar-project.properties filename, defaults to sonar-project.properties Forks a component from ODS Available options: Option Description odsComponent the component from (github) ODS to fork","title":"Quickstarter Pipeline","component":"opendevstack","version":"4.x","name":"quickstarter-pipeline","url":"/opendevstack/latest/jenkins-shared-library/quickstarter-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Advanced","hash":"_advanced","id":4},{"text":"Agent customization","hash":"_agent_customization","id":5},{"text":"Stages","hash":"_stages","id":6},{"text":"odsQuickstarterStageCopyFiles","hash":"_odsquickstarterstagecopyfiles","id":7},{"text":"odsQuickstarterStageCreateOpenShiftResources","hash":"_odsquickstarterstagecreateopenshiftresources","id":8},{"text":"odsQuickstarterStageRenderJenkinsfile","hash":"_odsquickstarterstagerenderjenkinsfile","id":9},{"text":"odsQuickstarterStageRenderSonarProperties","hash":"_odsquickstarterstagerendersonarproperties","id":10},{"text":"odsQuickstarterStageForkODS","hash":"_odsquickstarterstageforkods","id":11}]},"156":{"id":156,"text":"Table of Contents How to develop and run it locally How to deploy to OpenShift Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Consuming REST APIs via curl Pre Flight Checks Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Jenkins (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 11 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git To run it locally two spring profiles are provided: odsbox and odsbox_quickstarters`. The profile odsbox configures the application to connect to the ODS development environment (ODSBOX). Use this command to start it from the command-line: ./gradlew bootRun --args='--spring.profiles.active=odsbox,odsbox_quickstarters' Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 In order to test your changes in a real environment, you should deploy the provisioning app in OpenShift. To do so, you need to have an existing OpeDevStack project (consisting of -dev, -test and -cd namespaces). If you don’t have one yet, you can create one via the provisioning app in the central namespace. Now you can make use of the ods-provisioning-app quickstarter to set up the Bitbucket repository in your Bitbucket space. You can either register the quickstarter in the provisiong app in the central namespace, and then provision it from there; or use the script in https://github.com/BIX-Digital/ods-contrib/tree/master/quickstart-with-jenkins. Once you have provisioned the quickstarter, the first build will create a container image and place it in the ImageStream, using the commit SHA as image tag. To deploy this image in the central namespace, you have to tag that image into the central namespace. From your local machine, run: oc tag -dev/: ods/ods-provisioning-app: Then, in ods-configuration/ods-core.env, set PROV_APP_FROM_IMAGE to ods/ods-provisioning-app: and run the deployment using: make install-provisioning-app The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js). ODS 3.x contains a new single page app UI (based on Angular) as an experimental feature located in the client folder. In order to use the UI a feature flag frontend.spa.enabled must be set to true in application.proprties. Please refer to client README on how to setup local development for the frontend code. The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Basic Auth authentication is the recommended way to consume REST API. How to enable Basic Auth authentication is explained in Authentication Crowd Configuration. The following sample script could be used to provision a new project, add a quickstarter to a project or remove a project. It uses Basic Auth to authenticate the request. #!/usr/bin/env bash set -eu # Setup these variables # PROVISION_API_HOST=://: # BASIC_AUTH_CREDENTIAL=: # PROVISION_FILE=provision-new-project-payload.json PROV_APP_CONFIG_FILE=\"${PROV_APP_CONFIG_FILE:-prov-app-config.txt}\" if [ -f $PROV_APP_CONFIG_FILE ]; then cat $PROV_APP_CONFIG_FILE source $PROV_APP_CONFIG_FILE else echo \"No config file found, assuming defaults, current dir: $(pwd)\" fi # not set - use post as operation, create new project COMMAND=\"${1:-POST}\" echo echo \"Started provision project script with command (${COMMAND})!\" echo echo \"... encoding basic auth credentials in base64 format\" BASE64_CREDENTIALS=$(echo -n $BASIC_AUTH_CREDENTIAL | base64) echo echo \"... sending request to '\"$PROVISION_API_HOST\"' (output will be saved in file './response.txt' and headers in file './headers.txt')\" echo RESPONSE_FILE=response.txt if [ -f $RESPONSE_FILE ]; then rm -f $RESPONSE_FILE fi if [ ${COMMAND^^} == \"POST\" ] || [ ${COMMAND^^} == \"PUT\" ]; then echo echo \"create or update project - ${COMMAND^^}\" if [ ! -f $PROVISION_FILE ]; then echo \"Input for provision api (${PROVISION_FILE}) does not EXIST, aborting\\ncurrent: $(pwd)\" exit 1 fi echo \"... ${COMMAND} project request payload loaded from '\"$PROVISION_FILE\"'\"´ echo echo \"... displaying payload file content:\" cat $PROVISION_FILE echo http_resp_code=$(curl --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --data @\"$PROVISION_FILE\" \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) elif [ ${COMMAND^^} == \"DELETE\" ] || [ ${COMMAND^^} == \"GET\" ]; then echo \"delete / get project - ${COMMAND^^}\" if [ -z $2 ]; then echo \"Project Key must be passed as second param in case of command == delete or get!!\" exit 1 fi http_resp_code=$(curl -vvv --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project/$2\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) else echo \"ERROR: Command ${COMMAND} not supported, only GET, POST, PUT or DELETE\" exit 1 fi echo \"curl request successful...\" echo echo \"... displaying HTTP response body (content from './response.txt'):\" if [ -f ${RESPONSE_FILE} ]; then cat ${RESPONSE_FILE} else echo \"No request (body) response recorded\" fi echo echo \"... displaying HTTP response code\" echo \"http_resp_code=${http_resp_code}\" echo if [ $http_resp_code != 200 ] then echo \"something went wrong... endpoint responded with error code [HTTP CODE=\"$http_resp_code\"] (expected was 200)\" exit 1 fi echo \"provision project request (${COMMAND}) completed successfully!!!\" The PROVISION_FILE should point to a json file that defines the payload for the provision of a new project. This is an example: { \"projectName\": \"\", \"projectKey\": \"\", \"description\": \"project description\", \"projectType\": \"default\", \"cdUser\": \"project_cd_user\", \"projectAdminUser\": \"\", \"projectAdminGroup\": \"\", \"projectUserGroup\": \"\", \"projectReadonlyGroup\": \"\", \"bugtrackerSpace\": true, \"platformRuntime\": true, \"specialPermissionSet\": true, \"quickstarters\": [] } For the provisioning of a quickstarter set the command from POST to value PUT instead. Following an example of the PROVISION_FILE for quickstarter provisioning: { \"projectKey\":\"\", \"quickstarters\":[{ \"component_type\":\"docker-plain\", \"component_id\":\"be-docker-example\" }] } The provisioning of new project requires the creation of project in different servers (jira, bitbucket, confluence, openshift, etc…​) In case of an exception happens this process will be interrupted. This will leave the provision of a new project as incomplete. To avoid this situation a series of checks called \"Pre Flight Checks\" were implemented. These checks verify that all required conditions are given in the target system (jira, bitbucket, confluence) before provision a new project. Following some samples of response of the provision new project endpoint POST api/v2/project Pre Flight Check failed: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"UNEXISTANT_USER\",\"error-message\":\"user 'cd_user_wrong_cd_user' does not exists in bitbucket!\"}]} Pre Flight Check due an exception: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"EXCEPTION\",\"error-message\":\"Unexpected error when checking precondition for creation of project 'PROJECTNAME'\"}]} Pre Flight Check successfully passed and project was created: HTTP CODE: 200 OK { \"projectName\": \"MYPROJECT\", \"description\": \"My new project\", \"projectKey\": \"MYPROJECT\", ... } Failed Response due to exception after Pre Flight Checks succesfully passed: HTTP CODE: 500 Internal Server Error An error occured while creating project [PROJECTNAME ], reason [component_id 'ods-myproject-component106' is not valid name (only alpha chars are allowed with dashes (-) allowed in between. ] - but all cleaned up! The provision new project endpoint POST api/v2/project accepts a url parameter called onlyCheckPreconditions. By setting this parameter to true (POST api/v2/project?onlyCheckPreconditions=TRUE) only the Pre Flight Checks will be executed. This could be usefull for the development of new Pre Flight Checks or for integration scenarios. In this later case one could imagine to set this parameter to TRUE to verify all preconditions before creating a project. Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API","title":"Provisioning App: Internal architecture / Development","component":"opendevstack","version":"4.x","name":"architecture","url":"/opendevstack/latest/provisioning-app/architecture.html","titles":[{"text":"How to develop and run it locally","hash":"_how_to_develop_and_run_it_locally","id":1},{"text":"How to deploy to OpenShift","hash":"_how_to_deploy_to_openshift","id":2},{"text":"Frontend Code","hash":"_frontend_code","id":3},{"text":"Backend Code","hash":"_backend_code","id":4},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":5},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":6},{"text":"Consuming REST APIs via curl","hash":"_consuming_rest_apis_via_curl","id":7},{"text":"Pre Flight Checks","hash":"_pre_flight_checks","id":8},{"text":"Response examples:","hash":"_response_examples","id":9},{"text":"Option \"onlyCheckPreconditions=TRUE\":","hash":"_option_onlycheckpreconditionstrue","id":10},{"text":"Link collection","hash":"_link_collection","id":11}]},"157":{"id":157,"text":"Table of Contents Quickstarters Permissions Bitbucket permissions Project/Space types based on templates Custom permissions and group-to-project-role mappings Add Webhook Proxy URL to jira project properties based on project type Error Handling Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Basic Auth authentication Authentication to third party apps via technical users Other configuration FAQ Available quickstarters can be provided in the container via /quickstarters/quickstarters.properties. In the context of OpenShift, this file is supplied by the ConfigMap quickstarters.properties. The quickstarters defined there will be displayed to the users in the UI when they modify an existing project. When the provisioning app is installed for the first time, a default set of quickstarters (from the ods-quickstarters repository) is seeded. As each installation can configure the available quickstarters differently, the quickstarters.properties ConfigMap is not updated automatically when updating ODS. A quickstarter needs to have two mandatory entries: quickstarters.properties jenkinspipeline.quickstarter..desc= jenkinspipeline.quickstarter..repo= For example: quickstarters.properties jenkinspipeline.quickstarter.be-java-springboot.desc=Backend - SpringBoot/Java jenkinspipeline.quickstarter.be-java-springboot.repo=ods-quickstarters This means that in order to provision the quickstarter, the provisioning app will start a Jenkins pipeline based on the Jenkinsfile located in the opendevstack/ods-quickstarters repository, in the folder be-java-springboot. The UI will display the quickstarter as Backend - SpringBoot/Java. Apart from the required properties, there are also optional properties: quickstarters.properties jenkinspipeline.[some-job-name].create-webhook -> whether a default webhook should be created for this repo or not (true by default) jenkinspipeline.[some-job-name].branch -> a branch differing from ods.git-ref property jenkinspipeline.[some-job-name].jenkinsfile -> a path to the Jenkinsfile differing from [some-job-name]/Jenkinsfile When the quickstarter properties are modified, the provisioning app needs to be restarted for the changes to have effect. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three special groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories Moreover, a specific CD user (technical user for the continuous delivery platform) can optionally be specified. The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with the permissions detailed in the section Bitbucket permissions. Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) Furthermore if you need to define default permission for openshift (e.g. to setup membership permission for cluster admins) you can add this to your application properties: jenkinspipeline.create-project.default-project-groups=ADMINGROUP= In case special permissions sets are defined this the default project groups will be appended to the list of permissions sets. Permissions are set both at project and repository levels. Whenever the same user or group is assigned different permissions in the same project or repository, the actual permissions assigned are the higher-level ones. For example, if a group is assigned read-only and R/W permissions in the same project, it will get R/W permissions on it. If a user is assigned both R/W and admin permissions in a repository, it will get admin permissions on it. The mentioned properties in the following subsections have default values specified in the application.properties file. Their values can be overridden in the corresponding config map. Permissions set at project level depend on whether the special permission set has been specified or not. If the special permission set has been specified, these are the permissions set at project level: Type Who? Permission Group ${global.keyuser.role.name} Admin Group admin group Admin Group user group R/W Group readonly group Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that, if a specific CD user has not been specified, it defaults to the value of the bitbucket.technical.user property. If the special permission set has not been specified, these are the default permissions assigned to the project: Type Who? Permission Group ${bitbucket.default.user.group} R/W Group ${idmanager.group.opendevstack-users} Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that no admin permissions are assigned to the project when a special permission set has not been specified. The only project-level administrators are the global Bitbucket administrators, in this case. Repositories belonging to a project inherit the project permissions. Some additional permissions are assigned at repository level. The following tables show the permissions specified at repository level. These are the permissions assigned to the repository when a special permission set has been specified: Type Who? Permission User ${bitbucket.technical.user} R/W These are the permissions assigned to the repository when a special permission set has not been specified: Type Who? Permission Group ${bitbucket.default.admin.group} (default: ${bitbucket.default.user.group}) Admin User ${bitbucket.technical.user} R/W If the bitbucket.default.admin.group property is specified with an empty value, no admin permissions are assigned at repository level. The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, Custom permission configuration makes possible to configure each Project type template with a specific permission-scheme-id on project creation. Any new Jira project of a specific project type will be then set with the same permission-schemed-id. Additionally, mappings of project roles to the special groups (defined above: admin, user and readonly group) have to be configured, so that the special groups are added to the jira project roles of the new project. These capabilities make possible for Jira Admin to define a main permission scheme that will be \"reused\" for every new project. Another big benefit is that release them from the manual task of mapping the special groups to the permission scheme project roles. To configure a project-template-name with a specific permission-schemed-id you need to add these properties to your configuration: jira.project-templates..name=UTest project template jira.project-templates..permission-scheme-id= if the permission-scheme-id is configured you will have to provide group-to-project-role mapping configuration. If a permission-schemd-id is defined, then the following project-to-* properties have to be configured. Otherwise the provisioning app will fail to start. Like the permission-scheme-id the value of these properties has to be in this case an existant project role id in Jira, that you will need to get from your Jira server in advance. jira.project-templates..role-mapping.project-role-for-admin-group= jira.project-templates..role-mapping.project-role-for-user-group= jira.project-templates..role-mapping.project-role-for-readonly-group= Another way to set a permission-scheme-id with the corresponding project-to-role-* mappings is by API call. You can define following properties in the payload of the create project API call: { ... \"specialPermissionSchemeId\": \"\" \"projectRoleForAdminGroup\": \"\", \"projectRoleForUserGroup\": \"\", \"projectRoleForReadonlyGroup\": \"\", ... } A given configuration will be overwritten by these payload properties. You will find more details about the provisioning app REST API in this section: Consuming REST APIs via curl. If no permission-scheme-id with the corresponding project-to-role-* mappings are provided neither by configuration nor in the create project payload, then the default behaviour will be applied, which in this case will create a new permission scheme as explained in the section Permissions. It is possible to configure the Provisioning App to add to jira project the Webhook Proxy URL as project property. Jira provides an REST API for this purpose (Jira Properties API) This functionality can be configured for each project type. To enable this you will need to: Enable this capability for a given project type add the a property like: jira.project.template.add-webhook-proxy-url-as-project-property.=true Define the jira endpoint as template by adding this property: jira.project.template.webhook-proxy-url-endpoint-template.=/api/2/project/%PROJECT_KEY%/properties/WEBHOOK_PROXY.URL These 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Define the jira endpoint payload as template that will be added to the set jira property endpoint call jira.project.template.webhook-proxy-url-payload-template.={\\\"WEBHOOK_PROXY.URL\\\", \\\"%PROPERTY_VALUE%\\\"} For the payload template also these 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false. There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Basic Auth Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence and Bitbucket is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. An example of plain oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link Alternatively if your identity provider is Azure AD, a configuration example is given in application-azure.properties application-azure.properties provision.auth.provider=oauth2 (1) provision.auth.provider.oauth2.user-info-uri=userInfo (2) (3) # Application ID (also called Client ID) spring.security.oauth2.client.registration.azure.client-id=> spring.security.oauth2.client.registration.azure.client-secret= # It's suggested the logged in user should at least belong to one of the below groups # If not, the logged in user will not be able to access any authorization controller rest APIs azure.activedirectory.user-group.allowed-groups=opendevstack-administrators,opendevstack-users (4) azure.activedirectory.environment=global-v2-graph azure.activedirectory.user-group.key=@odata.type azure.activedirectory.user-group.value=#microsoft.graph.group azure.activedirectory.user-group.object-id-key=id azure.activedirectory.tenant-id= (5) oauth2.user.roles.jsonpointerexpression=/claims/roles (6) oauth2.user.use-email-claim-as-username=true (7) (8) idmanager.url=https://login.microsoftonline.com idmanager.realm=${spring.security.oauth2.client.registration.azure.client-id} idmanager.disable-logout-from-idm=true (9) 1 configures oauth2 authentication provider 2 configure user info uri 3 registers in spring security azure oauth2 client id and secret 4 configure allow groups 5 register azure ad tenant 6 the application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 7 configure to use email claim as username 8 configure name of the ProvApp realm 9 instruct ProvApp to not logout from identity management provider This option can be enabled to activate basic auth as additional authentication when using crowd or oauth2 as authentication provider. To enable basic auth this properties needs to be configured: application-azure.properties provision.auth.basic-auth.enabled=true The basic auth authentication needs to connect to an identity manager to authenticate users. Currently only crowd is supported for this purpouse. If you have’ve chosen to use oauth2 as provider you can even enable basic auth to connect to crowd server. For that you will need to add these properties to your configuration: # crowd properties (needed for basic auth) crowd.local.directory=~/dev/temp crowd.application.name= crowd.application.password= crowd.server.url= crowd.cookie.domain= The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence and Bitbucket. The used credentials are read from a pair of properties. For Example, bitbucket.admin_password and bitbucket.admin_user properties are used for Bitbucket, confluence.admin_user and confluence.admin_password are used for Confluence, etc. application-oauth2.properties # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall() To adapt the provisioning app to your infrastructure following properties will help you to enable/disable some adapters/services. To disable the confluence adapter you can add this property to the application properties: adapters.confluence.enabled=false The Openshift Service can be used to verify that a project key does not exist in the cluster before provisioning a project. If you want to enable it, you can add this property to the application properties: services.openshift.enabled=true If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project. What is the default permission schema in Jira? the default permission schema in Jira is named Default Permission Scheme Which role is missing in Jira default permission schema if the project creator cannot access it? The default permission schema named Default Permission Scheme needs the role owner to be added to permission Browser Projects. Otherwise the project creator (role owner) will not be able to access the project.","title":"Provisioning App: Configuration Guide","component":"opendevstack","version":"4.x","name":"configuration","url":"/opendevstack/latest/provisioning-app/configuration.html","titles":[{"text":"Quickstarters","hash":"_quickstarters","id":1},{"text":"Permissions","hash":"_permissions","id":2},{"text":"Bitbucket permissions","hash":"_bitbucket_permissions","id":3},{"text":"Project level","hash":"_project_level","id":4},{"text":"Repository level","hash":"_repository_level","id":5},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":6},{"text":"Custom permissions and group-to-project-role mappings","hash":"_custom_permissions_and_group_to_project_role_mappings","id":7},{"text":"Project type custom permissions scheme id configuration","hash":"_project_type_custom_permissions_scheme_id_configuration","id":8},{"text":"Project type group-to-project-role mappings","hash":"_project_type_group_to_project_role_mappings","id":9},{"text":"Overwriting custom permissions scheme id and group-to-project-role mappings per API call","hash":"_overwriting_custom_permissions_scheme_id_and_group_to_project_role_mappings_per_api_call","id":10},{"text":"Add Webhook Proxy URL to jira project properties based on project type","hash":"_add_webhook_proxy_url_to_jira_project_properties_based_on_project_type","id":11},{"text":"Error Handling","hash":"_error_handling","id":12},{"text":"Authentication Configuration","hash":"_authentication_configuration","id":13},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":14},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":15},{"text":"Basic Auth authentication","hash":"_basic_auth_authentication","id":16},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":17},{"text":"Other configuration","hash":"_other_configuration","id":18},{"text":"FAQ","hash":"_faq","id":19}]},"158":{"id":158,"text":"This application creates new OpenDevStack projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as Jira, Confluence, Bitbucket and Jenkins. Any user with admin privileges can create new ODS projects through the provisioning application. A new ODS project typically consists of: a Jira Project (name based on project ) a Confluence Space (name based on project ) a Bitbucket project (name based on project ) two Openshift projects named -dev and -test, which are used to run your application. Further, a Jenkins deployment will be created in the -cd project to allow each ODS project full freedom of build management. This deployment is based on a common Jenkins image provided by the central ODS namespace. Open the web GUI of the provisioning app (ask your ODS administrator for the URL). Select your project, then choose a quickstarter. If no framework fits your needs, choose the docker-plain quickstarter, and adjust the repository afterwards as required. After provisioning the quickstarter, you’ll have a new repository in your Bitbucket project with the boilerplate of the component. This repository has a webhook configured which will start a new Jenkins job each time a new commit is pushed. This means the new component will immediately be built and deployed into your -dev project. Why are three OpenShift projects created when I provision a new project? The -dev and -test namespaces are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the Component Pipeline In contrast to this, the -cd namespace hosts a project-specific instance of Jenkins Master and Webhook Proxy. When a build is triggered, builder pods (= deployments of Jenkins agents) are created in this project. This was a cautious design choice to give a project team as much power as possible when it comes to configuration of Jenkins. What permissions are assigned when a new Bitbucket project or repository is created? The assigned permissions are detailed here.","title":"Provisioning Application","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/provisioning-app/index.html","titles":[{"text":"Creating a new project","hash":"_creating_a_new_project","id":1},{"text":"Creating a new component within a project (using a quickstarter)","hash":"_creating_a_new_component_within_a_project_using_a_quickstarter","id":2},{"text":"FAQ","hash":"_faq","id":3}]},"159":{"id":159,"text":"This agent is used to build Go code. The image is built in the global ods project and is named jenkins-agent-golang. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-golang:latest. Go 1.21.x golangci-lint 1.54.x Not (yet) Nexus package manager aware and no special HTTP Proxy configuration.","title":"Go Jenkins agent","component":"opendevstack","version":"4.x","name":"golang","url":"/opendevstack/latest/jenkins-agents/golang.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"160":{"id":160,"text":"This agents are used to deploy (Cloud) resources using terraform code. There are two terraform jenkins agents available: 1. jenkins-agent-terraform (ruby 2.7.5, terraform 1.2.x) - this agent is DEPRECATED and will be removed in the next release. 1. jenkins-agent-terraform-2306 (ruby 3.2.2, terraform 1.4.6, and matching tools) - this is the current active jenkins agent. The images are built in the global ods project and are named jenkins-agent-terraform and jenkins-agent-terraform-2306. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-terraform:latest or ods/jenkins-agent-terraform-2306:latest. support of multiple terraform versions using tfenv integrated test-framework using kitchen-terraform and cinc-auditor n/a","title":"Terraform Jenkins agents","component":"opendevstack","version":"4.x","name":"inf-terraform","url":"/opendevstack/latest/jenkins-agents/inf-terraform.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"161":{"id":161,"text":"This agent is used to build Java code. The image is built in the global ods project and is named jenkins-agent-jdk. It can be referenced in a Jenkinsfile with ods/jenkins-agent-jdk. Nexus and HTTP proxy configuration for Maven & Gradle This agent provides 3 JDKs: java 11, java 17 and java 21. For backwards compatibility java 11 is the default version. Java projects migrating from previous ODS version will not require any change. A migration to java 17 and java 21 can be done afterwards. To switch the environment to java 17 the script use-j17.sh is provided at the jenkins home folder. To switch the environment to java 21 the script use-j21.sh is provided at the jenkins home folder. Following command shows how the jenkins build script from the springboot quickstarter switches the java version before calling the gradle wrapper: def status = sh(script: \"$HOME/use-j21.sh && ./gradlew clean build --stacktrace --no-daemon && $HOME/use-j11.sh\", returnStatus: true) like this example, you will need to switch back to java 11 after running the gradlew build. This is required because the jdk agent environment still does not support the latest java version. E.g. the sonar scanner is not compatible with the latest java version. Dockerfile.ubi8 installs: - java-21-openjdk-devel & java-21-openjdk-jmods - java-17-openjdk-devel & java-17-openjdk-jmods - java-11-openjdk-devel & java-11-openjdk-jmods detail about java installed packages can be found in https://centos.pkgs.org n/a","title":"Jdk Jenkins agent","component":"opendevstack","version":"4.x","name":"jdk","url":"/opendevstack/latest/jenkins-agents/jdk.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Supported Java Versions","hash":"_supported_java_versions","id":3},{"text":"Installed packages","hash":"_installed_packages","id":4},{"text":"Known limitations","hash":"_known_limitations","id":5}]},"162":{"id":162,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs16. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs16. Node.js version 16 reaches end-of-life in 2024-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 16 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs16","url":"/opendevstack/latest/jenkins-agents/nodejs16.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"163":{"id":163,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs18. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs18. Node.js version 18 reaches end-of-life in 2025-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 18 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs18","url":"/opendevstack/latest/jenkins-agents/nodejs18.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"164":{"id":164,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs20. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs20. Node.js version 20 reaches end-of-life in 2026-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 20 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs20","url":"/opendevstack/latest/jenkins-agents/nodejs20.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"165":{"id":165,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs22. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs22. Node.js version 22 reaches end-of-life in 2027-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 22 - Jenkins agent","component":"opendevstack","version":"4.x","name":"nodejs22","url":"/opendevstack/latest/jenkins-agents/nodejs22.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"166":{"id":166,"text":"This agent is used to build / execute Python code. The image is built in the global ods project and is named jenkins-agent-python. It can be referenced in a Jenkinsfile with ods/jenkins-agent-python. It supports building on Python versions: 3.11, 3.9, 3.8 and 3.6. NOTE: Python 3.6 have reached EOL on 2021-12-23. See Python versions for further information. Python pip virtualenv No special HTTP Proxy configuration.","title":"Python Jenkins agent","component":"opendevstack","version":"4.x","name":"python","url":"/opendevstack/latest/jenkins-agents/python.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"167":{"id":167,"text":"This agent is used to build / execute Rust code and tools. The image is built in the global ods project and is named jenkins-agent-rust. It can be referenced in a Jenkinsfile with ods/jenkins-agent-rust. Minimum Supported Rust Version (MSRV) 1.75. It can build Rust versions 1.75.x or higher. NOTE: Current Rust edition in use is 2021. See Rust Edition Guide for further information. Rust Axum Cargo Nextest LLVM Coverage Generate No special HTTP Proxy configuration.","title":"Rust Jenkins agent","component":"opendevstack","version":"4.x","name":"rust","url":"/opendevstack/latest/jenkins-agents/rust.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"168":{"id":168,"text":"This agent is used to build Scala code through SBT (Scala build tool). The image is built in the global ods project and is named jenkins-agent-scala. It can be referenced in a Jenkinsfile with ods/jenkins-agent-scala. SBT 1.8.2 HTTP proxy aware Nexus aware In case HTTP Proxy config is injected through environment variables (including NO_PROXY), Nexus configuration is disabled because of an SBT bug.","title":"Scala Jenkins agent","component":"opendevstack","version":"4.x","name":"scala","url":"/opendevstack/latest/jenkins-agents/scala.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"169":{"id":169,"text":"This document describes how you can create your own quickstarter. At the same time, you should be able to find all information required to make changes to an existing quickstarter. Technically speaking, a quickstarter is just a Jenkins pipeline that fills an existing repository with files. How this is done, and what exactly is run in the pipeline is up to the quickstarter author. Typically though, the pipeline makes use of the quickstarter pipeline from the Jenkins shared library, which removes the need to write lots of boilerplate such as running a agent pod, cloning sources, copying files and pushing at the end to the component repository. The rest of the guide assumes that you are using this pipeline. As the Jenkins pipeline runs on a Jenkins agent image, you as the author need to pick either an existing agent image (see \"Jenkins agent Images\" in the navigation on the left), or create your own. The only technical requirement is to have a Jenkinsfile, but depending on the purpose of the quickstarter, a quickstarter should provide the following: A Jenkinsfile in the resulting repository. The best way to do this is by placing a Jenkinsfile.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderJenkinsfile. A sonar-project.properties file in the resulting repository. The best way to do this is by placing a sonar-project.properties.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderSonarProperties. Test setup, e.g. a framework such as JUnit. Test results need to be published in JUnit XML reporting file format. The results need to be stored at build/test-results/test or be configured to a different location. Code Coverage: tests should determine code coverage, and report this to SonarQube. Support for Nexus (pulling dependencies from there) HTTP proxy awareness Documentation. Both for the quickstarter itself (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/quickstarters/pages, following the quickstarter template) and any Jenkins agent image (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/jenkins-agents/pages, following the agent image template). It is recommended to set up proper default metadata values in files/metadata.yml. These default values will also be used to label the generated OpenShift resources when provisioning a new component from the quickstarter for the first time. If you write any custom stages in the quickstarter pipeline, you have access to the pipeline context. Usually, quickstarters are triggered through the provisioning app. However, in order to try a new quickstarter, or to try changes to an existing quickstarter which are made in a branch, you can use the quickstart-with-jenkins/run.sh script in the BIX-Digital/ods-contrib repository to provision a quickstarter without registering it with the provisioning app. See its help for usage. It is highly recommended to use the jenkins-agent-base image as a base image. Otherwise it is likely that some features of the shared pipeline don’t work. The jenkins-agent-base image in turn is based on another base image, e.g. provided by RedHat. The easiest way to get started is to look ath other agent images, such as Go and see how that implements its requirements. If you are just building an image for yourself, do the following: Copy the folder from one of the Jenkins agents to your local machine, and adjust as needed. For sure you’ll need to update the Dockerfile. Also, change the names in the ocp-config folder and delete the Tailorfile in there. Note that the BuildConfig points to a repository and a branch. You will need to push your sources to a matching location. Create the OpenShift resources in your *-cd project via Tailor, e.g. tailor -n foo-cd --param REPO_BASE=https://bitbucket.example.com/scm --param ODS_IMAGE_TAG=2.x …​ Start a build in the OpenShift web console. Reference the built image from your Jenkinsfile like this: imageStreamTag: 'foo-cd/jenkins-agent-bar:latest' If you want to contribute your Jenkins agent image to OpenDevStack, make sure to add documentation according to the agent image template.","title":"Authoring Quickstarters","component":"opendevstack","version":"4.x","name":"authoring-quickstarters","url":"/opendevstack/latest/quickstarters/authoring-quickstarters.html","titles":[{"text":"Creating / Modifying a quickstarter","hash":"_creating_modifying_a_quickstarter","id":1},{"text":"Creating / Modifying a Jenkins agent image","hash":"_creating_modifying_a_jenkins_agent_image","id":2}]},"170":{"id":170,"text":"Use this quickstarter when you want to use nginx server wrapped within OpenResty dynamic web platform. With this quickstarter you can run many different lightweight server implementations like API gateways and HTTP/TCP/UDP reverse proxies. ├── docker - Contains Dockerfile for the build │ ├── lua - Directory for custom Lua modules │ │ └── server-error.lua - Example of server error response module with Lua │ ├── Dockerfile - Definition of your nginx gateway container │ ├── entrypoint.sh - Enables runtime configurations and runs openresty │ └── nginx.conf - The nginx configuration ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager OpenResty ODS Jenkins Shared Library Simply start to configure your nginx.conf to fit your needs. Also, you can develop and/or use different Lua modules. In order to route/proxy to services in the same namespace you do not need to define environment variables for their ports and/or hosts. OpenShift already loads them into the container’s environment by following a convention like _SERVICE_HOST and _SERVICE_PORT. Please, follow the example provided and comments in the nginx.conf file. One can add official Lua modules by using opm. In the following code snipped one can see how to add an official Lua module through docker build stage. Inside your Dockerfile: RUN opm install zmartzone/lua-resty-openidc Then, one can load such module dependency in new modules like: local http = require(\"resty.openidc\") lua-resty-openidc module is already provided with the default Dockerfile. Lua integration in nginx requires following the Directives provided in its architecture. Notice the importance of the execution order of the directives. Most of the directives require being defined inside your server locations. See next some possibilities one can make use of 1 - Managing access with access_by_lua_block With this directive one can integrate with Identity Providers via different auth/z standars, such as simple HTTP Basic Auth, OAuth, OIDC: access_by_lua_block { require(\"your-auth-module\").authenticate() } 2 - Managing content with content_by_lua_block This directive handles content definition. See the provided server-error.lua module example; by loading the right ENV variables in nginx.conf, you can add in your error location block a custom server error handling: location = /50x.html { content_by_lua_block { require(\"server-error\").make_error() } } 3 - Handle incoming requests with rewrite_by_lua_block One can also make use of the rewrite directive, for example, for filtering/rewriting incoming requests coming from your clients: rewrite_by_lua_block { require(\"filter-requests-headers\").run_filter() } 4 - Handle body responses with body_filter_by_lua_block Filter the body responses comming from your Backend services. For example, one could filter any error response, so to assure filtering stack traces from a JSON object response when running on production: body_filter_by_lua_block { require(\"filter-error-response\").filter_stack_traces() } The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: nginx description: \"Enhanced nginx with Lua embeded. nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server. Technologies: OpenResty/nginx 1.25.3.1-1\" supplier: https://openresty.org version: 1.25.3.1-1 type: ods-service role: integration There are two steps: Build the container image. Deploy. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses jenkins-agent-base N/A","title":"Backend - nginx (be-gateway-nginx)","component":"opendevstack","version":"4.x","name":"be-gateway-nginx","url":"/opendevstack/latest/quickstarters/be-gateway-nginx.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Routing to your services","hash":"_routing_to_your_services","id":5},{"text":"Adding offical Lua modules","hash":"_adding_offical_lua_modules","id":6},{"text":"Using Lua modules","hash":"_using_lua_modules","id":7},{"text":"Metadata","hash":"_metadata","id":8},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"171":{"id":171,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in golang\" supplier: https://example.com version: 1.0.1 type: ods role: backend There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Golang builder agent. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"4.x","name":"be-golang-plain","url":"/opendevstack/latest/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"172":{"id":172,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 21 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). The quickstarter uses the spring boot project generator service hosted by Spring (https://start.spring.io) to generate the spring boot project. This is implemented in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project based on version 3.2.0 will be generated and pushed to your git repository. The generated project requires java 21 and includes the required gradle build and wrapper artifact based on gradle version 8.5. The generated spring boot project contains following folders: src (java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,data-rest,data-jpa,h2,security,devtools\"), which are defined in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 21 or later version is required to run gradlew and compile java classes. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Java over Spring Boot\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: spring-boot runtimeVersion: 3.2.0 The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. The jdk builder agent Jenkins builder agent has installed 3 JDK: java 11, java 17 and java 21. The default version is java 11. This makes the agent backwards compatible. If you are migrating an ODS-based spring boot project to java 21 following instructions provide a some guidance about the typical steps to achieve this: change the agent version as indicated in jdk builder agent upgrade the gradle wrapper to version 8.5 running this gradle command at the root folder of your spring project: gradle wrapper --gradle-version 8.5 --distribution-type bin this command use just gradle instead of the wrapper. commit and push the changes to the remote git project repository. Following files are expected to be included in the change: ./gradlew (or gradlew.bat depending on your environment) ./gradle/wrapper/gradle-wrapper.jar ./gradle/wrapper/gradle-wrapper.properties verify that the jenkins build pipeline run successful. Fix any error if is not the case. change your local runtime to java 21 and compile your project with the gradle wrapper. update in your build.gradle file the source compatibility to sourceCompatibility = JavaVersion.VERSION_21 and compile again. update the project Jenkinfile by adding in the stage Build and Unit Test a call to the use-j21.sh before the gradle wrapper. This will set the runtime to `java 21. It would look like this: def status = sh(script: \"use-j21.sh && ./gradlew clean build --stacktrace --no-daemon\", returnStatus: true) commit and push the changes to the remote git project repository. verify that the jenkins build pipeline run successful. Fix any error if is not the case. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"4.x","name":"be-java-springboot","url":"/opendevstack/latest/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"Metadata","hash":"_metadata","id":11},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":12},{"text":"Builder agent used","hash":"_builder_agent_used","id":13},{"text":"Migration to Java 21","hash":"_migration_to_java_21","id":14},{"text":"Known limitations","hash":"_known_limitations","id":15}]},"173":{"id":173,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a simple API-server example written in Python and using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── run.sh - This bash script solves issue with permissions for a container user ├── src │ └── main.py - This file is the main entry point in the project. ├── tests │ ├── __init__.py │ └── main_test.py - Unit testing src/main.py ├── .coveragerc - Coverage configuration file ├── metadata.yml - Component metadata ├── mypy.ini - mypy configuration file ├── release-manager.yml - Configuration file for the Release Manager ├── requirements.txt - This file contains a list of required Python modules to run your application ├── tests_requirements.txt - required Python modules for the Test Suite (includes requirements.txt) and IDE integration └── sonar-project.properties - This file contains SonarQube configuration settings Python 3.11 gunicorn flask pytest mypy flake8 The project is production ready when deployed in OpenShift thanks to gunicorn. It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.11, ensure your system’s python executable is also in version 3.11 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Python over Flask\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: flask runtimeVersion: 3.0.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: pip install -r tests_requirements.txt Lint - Runs mypy and flake8 for increasing code quality: mypy src flake8 --max-line-length=120 src Test - Runs pytest and generates xUnit and code coverage reports: PYTHONPATH=src python -m pytest --junitxml=tests.xml -o junit_family=xunit2 --cov-report term-missing --cov-report xml --cov=src -o testpaths=tests Build - Builds the application: copies src folder into docker/dist folder. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. NOTE: The ODS Jenkins Pytnon Agent supports Python versions 3.11, 3.9 and 3.8. See next chapter for further information. Build and run environment defaults to python3.11, but older python3.8 and python3.6 versions are also supported. If you need older versions support in your project, change: in the provided Jenkinsfile, the mentions of python3.11 binary to, for example, python3.9 binary, and switch the FROM statement in your Dockerfile to the python version required, for example, registry.access.redhat.com/ubi8/python-38. Let us know if you find any, thanks!","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"4.x","name":"be-python-flask","url":"/opendevstack/latest/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Multiple Python versions support","hash":"_multiple_python_versions_support","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"174":{"id":174,"text":"The project supports generation of Rust programming language based projects, with the Axum web framework by default, and quick installation and integration within OpenShift Jenkins CICD pipelines. For Database/Postgres integration it is recommended to use SQLx. Check the Axum with SQLx example. Enjoy a full async, safe and high performant setup! This is a Rust project with a common Rust project folder and files structure, with its main.rs file for the final binary to be built, and that makes use of the lib.rs file, which exposes the crates (AKA modules or packages) of the project (where the business logic happens). Similar to Python project structures. The quickstarter comes with a simple API-server example written in Rust and using the Axum web framework. The package allows to easily build a Rust project, using different Rust crates (packages). It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. NOTE The project can be also extended to build other types of solutions with, for example, WASM or IoT. ├── 📂 .config - The local Rust project config folder │ └──  nextest.toml - The local Nextest config file (required for Jenkins CICD) ├──  .pre-commit-config.yaml - The pre-commit config file one can extend, and providing gitleaks tool by default. ├── 📂 chart - The Helm chart folder │ ├── 📂 templates - The resource files to define in your project (i.e.: deployment.yml, service.yml,...) │ │ ├── 📂 tests - Helm tests folder │ │ │ └──  test-connection.yaml - Helm test connection to app service after a new release │ │ ├── 📄 _helpers.tpl - Helm helpers template │ │ ├──  deployment.yaml - The k8s Deployment template for the app to release │ │ ├──  NOTES.txt - The release notes processed on each release │ │ └──  service.yaml - The k8s Service template for the app to release │ ├──  Chart.yaml - The Helm Chart main config file │ └──  values.yaml - The values to process on your Helm chart ├── 📂 docker - The docker context to build │ └──  Dockerfile - The docker file to deploy and run ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── 📂 src │ ├── 📂 api │ │ ├── 📂 routes │ │ │ ├── 🦀 mod.rs - The routes module file │ │ │ └── 🦀 status.rs │ │ ├── 🦀 mod.rs - The api module file │ │ └── 🦀 router.rs - The router API routes file │ ├── 📂 config │ │ ├── 🦀 mod.rs - The config module file │ │ └── 🦀 settings.rs - The settings file │ ├── 📂 models │ │ ├── 🦀 mod.rs - The models module file │ │ └── 🦀 status.rs - The status model example file │ └── 🦀 main.rs ├── 📂 target - The target folder where all builds (debug, release, ...) are stored (do not commit to git!) ├── 📂 tests │ ├── 🦀 common.rs - Common util implementations and functions │ └── 🦀 status_test.rs - Testing the status endpoint example ├──  Cargo.lock - The Rust dependency hash tree of this project ├──  Cargo.toml - The Rust project config file ├──  metadata.yml - Component metadata ├──  README.md - This README file ├──  release-manager.yml - Configuration file for the Release Manager ├──  rustfmt.toml └──  sonar-project.properties - This file contains SonarQube configuration settings Rust 1.75.0 Axum 0.7.x The project is production ready when deployed in OpenShift. Rust community and official resources are great to get to it, see learn Rust. To get Rust ready on your local environment you just require installing rustup (see install Rust) # Get the Rustup CLI and already install target computer toolchain and latest stable Rust version curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # If you are new to Rust (also check the rustlings TUI) rustup doc --book # Run Unit, Integration and Documentation tests cargo test # Cargo format source code cargo fmt # Cargo run locally cargo run # Cargo run Rust linters cargo clippy # Cargo generate documentation cargo doc [--document-private-items] --open One can also extend the cargo features by installing cargo extensions like: # Live reload locally cargo install cargo-watch # https://github.com/watchexec/cargo-watch # Then you can live reload by: cargo watch -x run # Nextest, with enhanced usage from default Rust cargo test cargo install cargo-nextest # ... NOTE For an extended list of awesome cargo extensions and Rust tools check here and here. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Rust with Axum web framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: rust runtimeVersion: 1.75.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Cargo Check - Checks we can compile: cargo check --all-targets Cargo Format - Checks code is properly formatted: cargo fmt --all -- --check Cargo Clippy - Collection of lints to catch common mistakes and improve your Rust code (output is also used on SonarQube reports): cargo clippy --all-features Cargo Test - Runs nextest (instead of cargo test) with xUnit test report generation (see .config/nextest.toml) and code coverage reports with LLVM coverage tool: cargo nextest run --profile ci cargo llvm-cov --lcov Build - Builds the release target binary and moves it to the docker folder: cargo build --release include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Rust Jenkins builder agent. NOTE: The ODS Jenkins Rust Agent supports Rust versions 1.75.x and above. The following Rust technologies are in use when running this boilerplate: Axum: Web application framework that focuses on ergonomics and modularity. Tokio: Runtime for writing reliable, asynchronous, and slim applications. Tower: Library of modular and reusable components for building robust networking clients and servers. Hyper: A fast and correct HTTP implementation for Rust. Let us know if you find any, thanks!","title":"Backend Rust Axum Quickstarter (be-rust-axum)","component":"opendevstack","version":"4.x","name":"be-rust-axum","url":"/opendevstack/latest/quickstarters/be-rust-axum.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Technologies in use","hash":"_technologies_in_use","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"175":{"id":175,"text":"This is a Play Framework 2.8.0 quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an reactive Web Application / REST API based on the Scala Language. An example Play Web Application is generated with a Controller and some tests. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── app │ ├── controllers │ │ └── HomeController.scala │ └── views │ ├── index.scala.html │ └── main.scala.html ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ ├── messages │ └── routes ├── docker │ └── Dockerfile ├── project │ ├── build.properties │ ├── plugins.sbt ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── main.js │ └── stylesheets │ └── main.css ├── sonar-project.properties ├── test │ └── controllers │ └── HomeControllerSpec.scala └── .scalafmt.conf This project is generated by SBT using SBTs template generation via the new command. The template used is an adapted version of the official Play Scala Seed Template. It will generate a Play Scala project using version 2.8.0 of Play with Scala version 2.13.1. It uses the logstash-logback-encoder to output logmessages in logstash format. It uses Scalafmt to check/format the source files consistently. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing Or run for running locally in development mode with continous compiling. The application will be accessible under http://localhost:8080 The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Scala over the Play framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: play runtimeVersion: 2.8.2 The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - checks source files formatting, runs the tests and builds and copies the artifacts for creating the docker image to the docker directory. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses the Scala Jenkins agent. NA","title":"Backend Scala Playframework Quickstarter (be-scala-play)","component":"opendevstack","version":"4.x","name":"be-scala-play","url":"/opendevstack/latest/quickstarters/be-scala-play.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"176":{"id":176,"text":"This is a Node.js (v20) quickstarter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains a basic setup for Docker, Jenkins, SonarQube and OpenShift. The package json is generated by simply using npm init -y, while the tsconfig is generated using tsc --init --skipLibCheck --outDir \"./dist\". The dependencies mentioned below are added to plain package.json file. On top of that, test, build and start script commands are customized to get your node/express application up and running with typescript. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── sum.ts - Sample function │ ├── index.ts - Entrypoint, This runs first ├── __test__ │ ├── sum.spec.ts - Sample test ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration Express (^4.18.2) Jest (^29.7.0) for Unit Testing Typescript (^5.3.2) On top of the mentioned frameworks above, we use libraries: Jest Junit (^16.0.0) @types/node (^20.10.0) When you push your code, your runtime and test code will be compiled using node v10. After deployment the compiled code also runs in node v10. If you developed your code and tests using a different node version locally, this might cause some problems. This is why we made the tsconfig.json file to be compatible with node v10. So bear in mind that any changes to compiler options might result in compilation and runtime errors. Here are our related changes to tsconfig.json file below: \"compilerOptions\": { \"lib\": [\"es2018\"], \"module\": \"commonjs\", \"target\": \"es2018\" } npm install forms the project root to install all the dependencies npm run build transpiles the typescript code to /dist folder npm run start starts the node server npm run test runs tests located under /dist folder, prints the jest output under /build folder and reports test coverage. The report located under /coverage_output folder is then picked by Sonarqube. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in TypeScript over Express\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: node runtimeVersion: 20 The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command is executed to build the application and then the build is copied to the docker/dist folder. Unit Testing : npm run test command is executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.JS 20 builder agent for Jenkins. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"4.x","name":"be-typescript-express","url":"/opendevstack/latest/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Libraries","hash":"_libraries","id":4},{"text":"Node version","hash":"_node_version","id":5},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":6},{"text":"Metadata","hash":"_metadata","id":7},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":8},{"text":"Builder agent used","hash":"_builder_agent_used","id":9},{"text":"Known limitations","hash":"_known_limitations","id":10}]},"177":{"id":177,"text":"Use this quickstarter when you want to start from a plain Dockerfile only, without any framework on top. A good usecase here is a Dockerfile you found on GitHub which you want to run with OpenDevStack features, or that you need to \"OpenShiftify\", by setting an (non-root) execution user, etc. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - SonarQube Configuration None, except for the ODS jenkins shared library. Amend the generated Dockerfile as needed. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: software-name description: \"Some software packaged in a docker container\" supplier: https://example.com version: 3.2 type: ods-service role: Whatever is in the /docker folder will be passed to oc start build as the docker context. You can add other files to that context as needed: def stageBuild(def context) { stage('Build') { // copy any other artifacts, if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } In case you want to run unit tests, you can add a corresponding statement to stageUnitTest: def stageUnitTest(def context) { stage('Unit Test') { // add your unit tests here, if needed } } Assuming your component contains source code you want to have delivered by the Release Manager, the execution of tests and the reporting of their results is mandatory. For this, your component will have to…​ define name, description, supplier, and version metadata for your component in files/release-manager.yml place the test results in the xUnit XML format in a path known to context.testResults (defaults to build/test-results/test) provide these test results to the Jenkins JUnit plugin via its junit step function. Feel free to look out for examples in our existing quickstarters, such as be-java-springboot. include::partial$secret-scanning-with-gitleaks.adoc none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"4.x","name":"docker-plain","url":"/opendevstack/latest/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"178":{"id":178,"text":"Provision a shared Jupyter Lab within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker │ ├── Dockerfile │ ├── jupyter_lab_config.json │ ├── requirements.txt │ └── run.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.11 JupyterLab The quickstarter sets up two pods in OpenShift. The ds-jupyter-lab instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt. One can setup specific and independent IPython kernels based on specific Python virtual environments: Open a new terminal session in your Jupyter Lab, then: cd python -m venv . /bin/activate pip install ipykernel pip --upgrade python -m ipykernel install --user --name= jupyter kernelspec list # this is for validating installation Now on a notebook you can select that new kernel by clicking on the name you see on the top right where you see the dot status. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: jupyterlab description: \"JupyterLab is a web-based interactive development environment for Jupyter notebooks, code, and data.\" supplier: https://jupyter.org/ version: 3.0.14 type: ods-service The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partial$secret-scanning-with-gitleaks.adoc jenkins-agent-base Consider if sufficient computing resources can be provided by the OpenShift cluster. You might require installing NodeJS if requiring specific JupyterLab extensions (nodejs >=12.0.0).","title":"Data Science Jupyter Lab","component":"opendevstack","version":"4.x","name":"ds-jupyter-lab","url":"/opendevstack/latest/quickstarters/ds-jupyter-lab.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Setting up independent environments/kernels","hash":"_setting_up_independent_environmentskernels","id":5},{"text":"Metadata","hash":"_metadata","id":6},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"179":{"id":179,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── docker - This folder contains Docker configuration settings and main R Shiny app │ ├── Dockerfile │ └── app.R ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: shiny description: \"Shiny is an R package that makes it easy to build interactive web apps straight from R.\" supplier: https://www.rstudio.com/ version: 1.6.0 type: ods-service runtime: r runtimeVersion: 4.1.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partial$secret-scanning-with-gitleaks.adoc jenkins-agent-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"4.x","name":"ds-rshiny","url":"/opendevstack/latest/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"180":{"id":180,"text":"Provisions a streamlit based dashboard with authentication. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker_streamlit │ └── Dockerfile ├── docker_oauth │ └── Dockerfile - Dockerfile for the oauth, please don't change this for proper promotion ├── src - Example code structure based on individual python modules │ ├── calculation │ │ │── __init__.py │ │ └── sample.py │ ├── plots │ │ ├── __init__.py │ │ ├── config.py │ │ └── histogram.py │ └── main.py ├── tests │ └── calculation │ └── sample_test.py │── .gitignore │── requirements.txt - requirements for running the application │── test_requirements.txt - adds additional requirements for the test frameworks │── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.11 streamlit pandas plotly The quickstarter sets up in OpenShift a pod with two containers. The main ds-streamlit container is behind and protected by the OpenShift OAuth proxy container (i.e.: it is a sidecar container). It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.11, ensure your system’s python executable is also in version 3.11 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py name: description: \"Some dashboard based on Streamlit\" supplier: https://example.com version: 1.0.1 type: ods role: dashboard runtime: streamlit runtimeVersion: 1.29.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: Lint - Runs mypy and flake8 for increasing code quality: In order to be sure that your code passes the linting stage execute or add it as a pre-commit hook to your git. black src Test - Runs pytest and generates xUnit and code coverage reports: Build - Builds the application: copies src folder into docker_streamlit/dist folder. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. Let us know if you find any, thanks!","title":"Data Science Streamlit","component":"opendevstack","version":"4.x","name":"ds-streamlit","url":"/opendevstack/latest/quickstarters/ds-streamlit.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"181":{"id":181,"text":"Cypress end-to-end testing quickstarter project This is a Cypress end-to-end testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── fixtures │ └── example.json │── plugins │ └── index.js │── support │ ├── commands.ts │ ├── generic-login.ts │ ├── index.ts │ ├── msalv2-login.ts │ └── test-evidence.ts ├── tests | ├── acceptance │ | └── acceptance.spec.ts | ├── installation │ | └── installation.spec.ts | └── integration │ └── integration.spec.ts ├── cypress-acceptance.json ├── cypress-installation.json ├── cypress-integration.json ├── cypress.env.json.template ├── cypress.json ├── Jenkinsfile ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata │── package.json ├── README.md │── release-manager.yml - Configuration file for the Release Manager └── tsconfig.json Cypress TypeScript Check the README.md file at root level for further instructions after the quickstarter has been provisioned. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile there is the following stage: stageTest Load Node.js dependencies by running npm install and executing the e2e tests by running npm run e2e. Please note: TSLint has been deprecated in favor of ESLint. Therefore the support for TSLint has been removed from this quickstarter. Please consider adding ESLint support (see also https://www.npmjs.com/package/eslint#installation-and-usage) or a formatter like Prettier (see also https://prettier.io/docs/en/install.html). While npm install is gathering the dependencies it is also performing a post-installation process which is downloading Cypress' binaries. It is possible to change this behavior, e.g. for getting those binaries from Nexus or a local cache. See https://docs.cypress.io/guides/getting-started/installing-cypress#Advanced for more details. A more advanced solution could be the use of a custom builder agent, where Cypress is already embedded. The related Dockerfile could look like this: # The following FROM tag is informational. It is overwritten by OpenShift. FROM ods/jenkins-agent-nodejs20:4.x ARG cypressVersion=13.6.0 ARG cypressHash=... USER root # Adds cypress@VERSION binaries to /home/jenkins/.cache/Cypress/VERSION/Cypress # This allows to disable post-installation of Cypress binaries and gather those binaries from a cache folder instead. The cache # folder holds the binaries for the respective versions of Cypress. # Setting the following environment variable in the Jenkinsfile allows to disable post-installation of cypress@...: # CYPRESS_INSTALL_BINARY=0 # The custom cache folder can be configured in Jenkinsfile by the following environment variable setting: # CYPRESS_CACHE_FOLDER=/home/jenkins/.cache/Cypress ADD https://download.cypress.io/desktop/${cypressVersion}?platform=linux&arch=x64 /home/jenkins/cypress/cypress-linux.zip RUN md5sum /home/jenkins/cypress/cypress-linux.zip && \\ echo \"${cypressHash} /home/jenkins/cypress/cypress-linux.zip\" | md5sum -c && \\ mkdir -p /home/jenkins/.cache/Cypress/${cypressVersion} && \\ unzip -q /home/jenkins/cypress/cypress-linux.zip -d /home/jenkins/.cache/Cypress/${cypressVersion} && \\ rm /home/jenkins/cypress/cypress-linux.zip # fix access rights RUN chgrp -R 0 $HOME && \\ chmod -R g=u $HOME && \\ chmod ug=rx /home/jenkins/.cache/Cypress/${cypressVersion}/Cypress/Cypress USER 1001 To use Cypress Cloud within the Cypress QuickSarter, follow these steps: Create a project in Cypress Cloud. Access Cypress Cloud by following this link (https://cloud.cypress.io/), and create a project. This project will be used to store your Cypress tests and results. Change the project ID as indicated in Cypress Cloud. After creating the project, you will need to change the project ID in the four config files, to the one indicated in Cypress Cloud. This ID is used to identify your project and ensure that your tests are associated with the correct project. Set the Cypress Record Key as an environment variable in Openshift. To enable recording of your tests in Cypress Cloud, you will need to set the Cypress Record Key as an environment variable named CYPRESS_RECORD_KEY in Openshift. This key is provided by Cypress and is used to authenticate your tests and results. By setting it in Openshift, we ensure that the record functionality will only be used in official runs and not for local development. Modify the Jenkinsfile for using the record script. In the Jenkinsfile, change the exeuction line: def status = sh(script: 'npm run e2e', returnStatus: true) for the following block of code, which will run the record script only when in master or in a release branch: if (context.gitBranch == 'master' || context.gitBranch.startsWith('release/')) { def status = sh(script: 'npm run e2e:jenkins:record', returnStatus: true) } else { def status = sh(script: 'npm run e2e', returnStatus: true) } Only use this functionality in releases, not development. It is important to note that Cypress Cloud is intended for use in releases, not development. This ensures that your tests are run against stable and reliable code, and that the Dashboard does not get overflooded with non-relevant tests. For the same reason, the Jenkinsfile is configured to only pass the record parameter when running in the master branch, or in a release. You can find more information about using the Cypress Cloud in the official documentation for Cypress https://docs.cypress.io/guides/cloud/introduction. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 20 builder agent for Jenkins. NA","title":"End-to-end tests with Cypress (e2e-cypress)","component":"opendevstack","version":"4.x","name":"e2e-cypress","url":"/opendevstack/latest/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Cypress without post-installation","hash":"_cypress_without_post_installation","id":6},{"text":"Cypress Cloud","hash":"_cypress_cloud","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"182":{"id":182,"text":"End-to-end tests for ETLs quickstarter project This is a python based quicktarter intended to develop end-to-end tests for data pipelines. In order to do that it uses two testing technologies: 1. Great Expectations, meant for data transformation testing data within relational tables. e.g.: You could test the schema of a database, the number of rows, that a specific column has no null values, etc 2. Pytest together with Boto it allows for testing etl triggers, notification system, content of S3 buckets, etc ├── Jenkinsfile - This file contains Jenkins stages. ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── tests - This folder contains the root for test-kitchen │ ├── acceptance/great_expectations - This folder contains the Great Expecations tests to test │ └── acceptance/pytest - This folder contains the pytest tests to test Great-expectations Pytest Check the README.md file at root level for further instructions after the quickstarter has been provisioned. This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"End-to-end tests with Great Expectations and Pytest (e2e-etl-python)","component":"opendevstack","version":"4.x","name":"e2e-etl-python","url":"/opendevstack/latest/quickstarters/e2e-etl-python.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Builder agent used","hash":"_builder_agent_used","id":5},{"text":"Known limitations","hash":"_known_limitations","id":6}]},"183":{"id":183,"text":"spock, geb and unirest e2e testing quickstarter project This is a spock, geb and unirest e2e testing project quickstarter with basic setup for Jenkins, SonarQube and Gradle. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── README.md ├── sonar-project.properties ├── src │ ├── test │ │ └── acceptance │ │ │ └── groovy │ │ │ │ └── DemoAcceptanceSpec.groovy │ │ │ └── java │ │ │ └── DemoAcceptanceTest.java │ │ └── installation │ │ │ └── groovy │ │ │ │ └── DemoInstallationSpec.groovy │ │ │ └── java │ │ │ └── DemoInstallationTest.java │ │ └── integration │ │ │ └── groovy │ │ │ │ └── DemoIntegrationSpec.groovy │ │ │ └── java │ │ | └── DemoIntegrationTest.java │ │ └── resources │ │ └── application.properties │ │ └── GebConfig.groovy │ │ └── SpecHelper.groovy ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── build.gradle ├── gradlew └── gradlew.bat The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. This project is generated by Gradle spock geb unirest Run command gradlew test in project directory to execute the end-to-end tests via spock/geb against the Google Home page and demo jUnit 5 tests. You will see the results inside a new folder 'build' in project directory. . └── build └── test-results ├── acceptance-groovy │ └── TEST-DemoAcceptance.xml ├── acceptance-java │ └── TEST-DemoAcceptanceTest.xml ├── installation-groovy │ └── TEST-DemoInstallation.xml ├── installation-java │ └── TEST-DemoInstallationTest.xml ├── integration-groovy │ └── TEST-DemoIntegration.xml └── integration-java └── TEST-DemoIntegrationTest.xml You can see how a Java Junit 5 test are developed showing the Demo*Test.java files. You can see how a Groovy Spock/Geb test are developed showing the Demo*Spec.groovy files. The url to test with Geb is configured in the property config.application.url inside application.properties Inside GebConfig.groovy you could change the default navigator (CHROME) The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile.template, there is the following stage: stageTest - Run the programed e2e test with this order: installation-java installation-groovy integration-java integration-groovy acceptance-java acceptance-groovy All the results are stashed and published through Jenkins jUnit publisher. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. NA","title":"End-to-end tests with Spock, Geb and Unirest (e2e-spock-geb)","component":"opendevstack","version":"4.x","name":"e2e-spock-geb","url":"/opendevstack/latest/quickstarters/e2e-spock-geb.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Gradle Support","hash":"_gradle_support","id":3},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":4},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":5},{"text":"Frameworks used","hash":"_frameworks_used","id":6},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":7},{"text":"Customization - how do you start to configure your test","hash":"_customization_how_do_you_start_to_configure_your_test","id":8},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"184":{"id":184,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json This project is generated by Angular CLI Angular CLI Angular TypeScript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"My Angular-based front end\" supplier: https://example.com version: 1.0.1 type: ods role: frontend runtime: angular-cli runtimeVersion: 18.0.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: stageBuild - Builds the application by running npm install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. This will also create test coverage analysis data which will then be transfered to SonarQube during odsComponentStageScanWithSonar odsComponentStageScanWithSonar - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. Please note: By default the applciation is always build as full production build including all sorts of optimizations. In addition source maps will be added except for builds that are triggered from master. This can be changed by configuring (additional) build configurations within angular.json and by using them via stageBuild or package.json. Please note: The support for TSLint has been removed from this quickstarter. Also Angular is not shipping a linter by default anymore. Please consider adding ESLint support or a formatter like Prettier. For adding ESLint simply type ng add @angular-eslint/schematics. For setting up Prettier please see https://prettier.io/docs/en/install.html. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"4.x","name":"fe-angular","url":"/opendevstack/latest/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"185":{"id":185,"text":"Ionic quickstarter project This quickstarter generates an Ionic 7.2.0 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/TypeScript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. . ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── src │ ├── app │ │ ├── home │ │ │ ├── home-routing.module.ts │ │ │ ├── home.module.ts │ │ │ ├── home.page.html │ │ │ ├── home.page.scss │ │ │ ├── home.page.spec.ts │ │ │ └── home.page.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── theme │ │ └── variables.scss │ ├── global.scss │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── test.ts │ └── zone-flags.ts ├── angular.json - This file contains Angular project configuration settings ├── capacitor.config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── ionic.config.json - This file contains Ionic project configuration ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── karma.conf.js ├── metadata.yml - Component metadata ├── package.json - This file contains scripts to run and node packages dependencies for project ├── README.md ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json Ionic CLI Ionic Framework Angular TypeScript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g @ionic/cli Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: Ionic component: frontend instance: description: \"Ionic Framework is the free, open source mobile UI toolkit for developing high-quality cross-platform apps for native iOS, Android, and the web—all from a single codebase. Technologies: Ionic 7.2.0\" supplier: https://ionicframework.com type: ods version: 7.2.0 The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following main stages for this quickstarter: Build Installs Ionic CLI and the dependencies of your project with npm install and generates the build by running ionic build. If the merged git branch is master, it creates the production build with ionic build --prod. Finally, it copies the output folder ./www into ./docker/dist. Unit Test Runs unit test cases by executing npm run test command. If any test fails, the build is marked as failed. This will also create test coverage analysis data which will then be transfered to SonarQube. Lint Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. SonarQube Analysis Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and ./src/environments/** are excluded from the analysis, since they usually don’t contain application logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"4.x","name":"fe-ionic","url":"/opendevstack/latest/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known Limitation","hash":"_known_limitation","id":8}]},"186":{"id":186,"text":"Table of Contents Overview Available, official quickstarters Backend Quickstarter Frontend Quickstarter Data Science Quickstarter E2E Test Quickstarter Infrastructure Terraform Quickstarter ODS Contribution Quickstarter Authoring quickstarters Quickstarters are basically templates that help to start out with a component quickly. A quickstarter provides a specific technology, potentially with a framework setup already, such as Java with Springboot in the case of the be-java-springboot quickstarter. Compared to starting out from scratch, using a quickstarter typically helps by: setting up a repository in Bitbucket with webhooks to trigger Jenkins builds shipping a Jenkinsfile with a pipeline that builds and deploys the component (delegating most of the work to the shared library) providing a basic test setup with xUnit reports and code coverage integrating with SonarQube out-of-the-box (including code coverage report) setting up OpenShift resources to build and run the component creating a boilerplate application with one or more sample endpoints Quickstarters are used from the Provisioning App, which allows to add a component to an existing project by running a quickstarter from the configured list of available quickstarters. This list can contain quickstarters from the official repository, ods-quickstarters, or from some other repository such as internally hosted ones in your Bitbucket instance. Backend - Gateway/Nginx Backend - Go Backend - Java/SpringBoot Backend - TypeScript/Express Backend - Python/Flask Backend - Scala/Play Frontend - Angular Mobile - Ionic Data Science - Jupyter Lab Data Science - R-Shiny Data Science Streamlit app E2E test - Cypress E2E test - Spock / Geb E2E test - ETL Python AWS deployments utilizing terraform tooling Azure deployments utilizing terraform tooling ODS Fork - Document Generation Service ODS Fork - Provisioning Application Next to those, there is a \"blank\" quickstarter (Docker/Plain) allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences. As mentioned above, it is possible to supply your own quickstarters. Pleasee see the authoring quickstarters guide on how to make completely new quickstarters or how to adapt existing quickstarters to your needs.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"4.x","name":"index","url":"/opendevstack/latest/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Available, official quickstarters","hash":"_available_official_quickstarters","id":2},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":3},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":4},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":5},{"text":"E2E Test Quickstarter","hash":"_e2e_test_quickstarter","id":6},{"text":"Infrastructure Terraform Quickstarter","hash":"_infrastructure_terraform_quickstarter","id":7},{"text":"ODS Contribution Quickstarter","hash":"_ods_contribution_quickstarter","id":8},{"text":"Authoring quickstarters","hash":"_authoring_quickstarters","id":9}]},"187":{"id":187,"text":"The project supports generation of AWS deployments utilizing terraform tooling. installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform resource which deploys a S3 bucket using AWS CloudFormation. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform AWS Quickstarter (inf-terraform-aws)","component":"opendevstack","version":"4.x","name":"inf-terraform-aws","url":"/opendevstack/latest/quickstarters/inf-terraform-aws.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"188":{"id":188,"text":"The project supports generation of Azure deployments utilizing terraform tooling, installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform which deploys a resource group and a storage account via an ARM template. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with Chef InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.tfbackend.config - This file describes terraform backend parameters in the dev Azure subscription. │ ├── test.tfbackend.config - This file describes terraform backend parameters in the test Azure subscription. │ ├── prod.tfbackend.config - This file describes terraform backend parameters in the production Azure subscription. │ ├── dev.yml - This file describes credential parameters for the development environment. Values are names of secrets held in Jenkins. │ ├── test.yml - This file describes credential parameters for the test environment. Values are names of secrets held in Jenkins. │ ├── prod.yml - This file describes credential parameters for the producation environment. Values are names of secrets held in Jenkins. │ ├── dev.json - This file describes parameters for the development environment. │ ├── test.json - This file describes parameters for the test environment. │ └── prod.json - This file describes parameters for the production environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partial$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform Azure Quickstarter (inf-terraform-azure)","component":"opendevstack","version":"4.x","name":"inf-terraform-azure","url":"/opendevstack/latest/quickstarters/inf-terraform-azure.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"189":{"id":189,"text":"The quickstarters include a skeleton metadata file metadata.yml. This file provides information about the component, but some metadata entries are also used to label the OpenShift resources created for the component. The following is a table with the supported metadata entries and the labels for which they are used: Entry key Meaning Example Label name The name of the software deployed in this component mongodb app.kubernetes.io/name description Description of the software deployed in this component MongoDB is a general-purpose document-based distributed database. supplier Supplier of the software deployed in this component https://www.mongodb.com/ version Version of the software deployed in this component 4.0.8 app.kubernetes.io/version type Type of OpenDevStack component ods-service app.opendevstack.org/type role Role this component plays in the architecture database app.kubernetes.io/component partOf Name of a higher-level application this component is part of my-online-shop app.kubernetes.io/part-of runtime The runtime this software runs on spring-boot app.openshift.io/runtime runtimeVersion The version of the runtime this software runs on 1.4.4.RELEASE app.openshift.io/runtime-version Detailed description of the supported metadata entries. It is strongly recommended to follow the guidelines for the entries that are used to label OpenShift resources. Moreover, OpenShift label values must meet the following restrictions: must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The values given in the metadata file will be sanitised to adhere to those restrictions, but it is recommended to use compliant values that need no sanitation. This is the software deployed in this component. There may be other instances of the same software in other components. For components of type ods, which are pieces of software developed as part of the project, this is recommended to be set to the component ID. For components of type ods-service, which are instances of some existing software, this is recommended to be set to a well-known id of the software being deployed. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the description of the software deployed in this component. Examples: \"User-management microservice\" or \"MongoDB is a general-purpose document-based distributed database\". The supplier of the software being deployed. Possible a web-page link. Example: https://www.mongodb.com/ This is the version of the software identified by the name entry. Example: 4.0.8 This metadata entry will be used as the value of the label app.kubernetes.io/version. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the role this component plays in the architecture. Example: database Any value can be set, but the following values are recommended: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. This metadata entry will be used as the value of the label app.kubernetes.io/component. The name of a higher level application this component is part of. This is used to group components as part of a higher-level application, when suitable. Example: you are building an online shop, and this component is part of it. You can set partOf: my-online-shop This metadata entry will be used as the value of the label app.kubernetes.io/part-of. The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This metadata entry will be used as the value of the label app.openshift.io/runtime. The version of the runtime. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if runtime is not also specified. Example: 1.4.4.RELEASE This metadata entry will be used as the value of the label app.openshift.io/runtime-version.","title":"Component metadata","component":"opendevstack","version":"4.x","name":"metadata","url":"/opendevstack/latest/quickstarters/metadata.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Detailed description","hash":"_detailed_description","id":2},{"text":"name","hash":"_name","id":3},{"text":"description","hash":"_description","id":4},{"text":"supplier","hash":"_supplier","id":5},{"text":"version","hash":"_version","id":6},{"text":"type","hash":"_type","id":7},{"text":"role","hash":"_role","id":8},{"text":"partOf","hash":"_partof","id":9},{"text":"runtime","hash":"_runtime","id":10},{"text":"runtimeVersion","hash":"_runtimeversion","id":11}]},"190":{"id":190,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-document-generation-svc None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc N/A","title":"Contribution ODS Document Generation Service (ods-document-gen-svc)","component":"opendevstack","version":"4.x","name":"ods-document-gen-svc","url":"/opendevstack/latest/quickstarters/ods-document-gen-svc.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"191":{"id":191,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-provisioning-app None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app N/A","title":"Contribution ODS Provisioning Application (ods-provisioning-app)","component":"opendevstack","version":"4.x","name":"ods-provisioning-app","url":"/opendevstack/latest/quickstarters/ods-provisioning-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"192":{"id":192,"text":"The release manager supports the orchestration of multiple repositories into a live application. . ├── docs # Fall-back document chapter templates for (LeVA) compliance reports. ├── Jenkinsfile # The release manager pipeline. ├── .pre-commit-config.yaml ├── README.md └── metadata.yml # Configuration of the release manager pipeline and its repositories. The release manager automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. This type designates ODS components designed for running some service. Examples include repositories based on the be-gateway-nginx quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. The release manager will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, the release manager automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. The release manager automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process. Note: when you configure a Jira service in metadata.yml, the release manager expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the release manager will fall back to the document chapter templates located in the docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. If you want your target environment to be created from an existing source environment such as dev or test on the fly, you need to provide the environment and sourceEnvironmentToClone parameters to your pipeline, respectively. Their values will be combined with your project ID in the form ${project-id}-${environment} to create the project (namespace) name in your OpenShift cluster. include::partial$secret-scanning-with-gitleaks.adoc","title":"Release Manager","component":"opendevstack","version":"4.x","name":"release-manager","url":"/opendevstack/latest/quickstarters/release-manager.html","titles":[{"text":"File Structure","hash":"_file_structure","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":12},{"text":"Automated Cloning of Environments","hash":"_automated_cloning_of_environments","id":13}]},"193":{"id":193,"text":"Tailor has been developed for OpenShift 3.11. Back in the days, Helm 2 required the use of a privileged Tiller service and did not work well with OpenShift-specific resources. With Helm 3 and OpenShift 4, this situation has changed. While Tailor also works in an OpenShift 4 cluster, OpenShift has integrated Helm into its product, and Helm has a huge and growing community. Therefore, it is recommended to use Helm instead of Tailor in an OpenShift 4 cluster. Tailor is based on OpenShift templates, which define the Kubernetes resources to apply. Helm uses a different templating language / engine, but in the end the templates also describe Kubernetes resources. Therefore, migration effort is relatively low as one only needs to change the syntax of the definition, not the definition itself. Further, there are differences between the CLI of the two tools and not all features of Tailor are available in Helm and vice-versa. Once migration to Helm is complete, it is also recommended to look at the best practices in the Helm community and adopt these. This document will describe how to adopt resources deployed using Tailor into a Helm release for OpenDevStack installation. There are basically two options how to approach this: you can either adopt your existing OpenShift resources to chart templates, or you can start a clean installation. Once the templates have been made ready, you can continue the installation/update following the normal process In order to adopt the resources into a Helm release you can use the following script https://github.com/opendevstack/ods-core/blob/master/scripts/tailor2helm.sh In this case you will need to remove all existing resources for the component that has been previously deployed using Tailor, you can check existing resources like this: oc -n ods get all -l app=foo-bar Check more information about migration from tailor to helm and their differences in https://github.com/opendevstack/tailor/wiki/Migrating-from-Tailor-to-Helm","title":"Migrating from Tailor to Helm","component":"opendevstack","version":"5.x","name":"helm-migration","url":"/opendevstack/5.x/administration/helm-migration.html","titles":[{"text":"Templates preparation","hash":"_templates_preparation","id":1},{"text":"Option 1: Adopting OpenShift resources","hash":"_option_1_adopting_openshift_resources","id":2},{"text":"Option 2: Clean Installation","hash":"_option_2_clean_installation","id":3},{"text":"Sources","hash":"_sources","id":4}]},"194":{"id":194,"text":"ODS makes use of and provides a few container images. This document will detail which container images are used, how contaienr images are built during an ODS installation, and how images are consumed by users of ODS. There are three broad categories of images: Images used in the central ODS namespace Images used in the *-cd namespace of each ODS project Application images used in the -dev and -test namespace Every category has different lifecycles. Those images are owned by ODS admins. Examples of such images include the SonarQube image and the Nexus image. All of the images used by containers in the central ODS namespace are built by ODS during its installation. No container uses a vanilla image as provided by e.g. DockerHub or quay.io. Each image is created through a BuildConfig, and placed into an ImageStream. The BuildConfig defines which Dockerfile is used, and which base image is used to build from. The base image can be pulled from DockerHub (e.g. in case of SonarQube or Nexus), but it can also be from another registry (e.g. in case for the Jenkins Master image, it might be from registry.access.redhat.com or registry.redhat.io). The images are built during installation or upgrade of ODS, and tagged with the value of the configuration parameter ODS_IMAGE_TAG. Once an image has been built, it is not changed until a new build is triggered - that means that even if the base image changes, it has no effect on the images in the central ODS namespaces unless an admin triggers a new build for that image. Further, a new image does not necessarily equal an update to the deployment. Admins have to ensure that new deployments are rolled out so that the new images get picked up. Those images are also owned by ODS admins, and also built in the central ODS namespace like the first category, but the deployments are running in each ODS project. The images in this catgeory are the Jenkins related images (master, agents, webhook-proxy), and potentially also the image for the document generation service. Note that building a new image in the central ODS namespace does not equal an update of the deployments in each *-cd project. This is because no image triggers are defined on the DeploymentConfig resources. While having such a trigger sounds convenient at first, it is actually not desirable. The main reason is that the rollouts started from an image trigger cannot be controlled, leading to simultaneous restarts which runs the risk of putting a huge amount of load on the cluster. A downside of not having a trigger is that it is cumbersome for ODS admins to rollout bugfixes and security patches to running instances such as the Jenkins Master or the webhook proxy. At the moment, there is no easy, automated, solution to this. However, you might be interested in an experimental tool, oc-batch-rollout, which allows admins to trigger rollouts in a controlled fashion. Those images are owned by ODS users and are built using BuildConfig resources in the respective namespace. The build is triggered from the Jenkins pipeline. The BuildConfig refers to a Dockerfile in the application repository, which refers to an image (typically from DockerHub) in its FROM instruction. Which image gets pulled from DockerHub is completely dependent on which image tag is specified in the FROM instruction. Authors of the Dockerfile are free to be as specific or inspecific as they want, e.g. they could point to the latest tag or use a more stable version published by the base image owner. Therefore, updates to the base image of application images take effect on every build. Once an application runs in a pod though, its image is not automatically updated when the base image changes in DockerHub. Also it is important to note that updates to the Dockerfile in a quickstarter have no effect on an application, even if the application was originally provisioned using that same quickstarter. The reason is that there is no ongoing link between a quickstarter (which is like a template) and the created component (which is like an instance). Depending on the category of the image as outlined above, vulnerabilities in those image have different impact, and also different mitigation paths. Vulnerabilities in application images have a high impact, but mitigation is relatively easy. If the vulnerability is within the base image, and the latest image of the currently used image tag has the vulnerability fixed, one simply needs to trigger a new Jenkins job, which builds a new image, and deploys that new image. If the image tag referenced in the FROM instruction of the Dockerfile does not contain the security fix, one can attempt to change to an image tag which is not vulnerable. Finally, the vulnerability might not be in the base image, but in the Dockerfile of the application, in which the security fix can be applied there. Vulnerabilities in images used in the -cd namespace of each ODS project are a bit harder to mitigate. This is because the vulnerability can be in the base image or in the ODS customisation of it. Further, to actually fix the vulnerability in the running container, one needs to built a new vulnerabilty-free image and have that rolled out to each -cd namespace (remember there are no automatic image triggers). Vulnerabilities in images used in the central ODS namespace are very similar to this. However, since all deployments in the ODS namespace are controlled by the ODS administrator, updating them is easier from a process perspective then the containers in the *-cd namespaces.","title":"Image Lifecycles","component":"opendevstack","version":"5.x","name":"image-lifecycle","url":"/opendevstack/5.x/administration/image-lifecycle.html","titles":[{"text":"Categories of images","hash":"_categories_of_images","id":1},{"text":"Images used in the central ODS namespace","hash":"_images_used_in_the_central_ods_namespace","id":2},{"text":"Images used in the *-cd namespace of each ODS project","hash":"_images_used_in_the_cd_namespace_of_each_ods_project","id":3},{"text":"Application images used in the -dev and -test namespace","hash":"_application_images_used_in_the_dev_and_test_namespace","id":4},{"text":"Vulnerabilities in images","hash":"_vulnerabilities_in_images","id":5}]},"195":{"id":195,"text":"This page is outdated. Please follow the new installation guide instead. However, some parts are still missing there so you might find this page useful. The infrastructure setup part contains the scripts to setup OpenDevstack. It uses Ansible for installing the Atlassian tools and the provisioning app. Setting up an Ansible control host is beyond the scope of this document. Each individual component is set-up using a seperate playbook. So you can decide which playbooks to run, depending on your current environment. We have different playbooks depending on the environment in which you install the Atlassian tools. The playbooks depend on roles. The roles provide variables for customization. The different variables can be looked up under each role at default/main.yml. General Playbooks postgresql.yml Sets up a (local) PostgreSQL for use with Atlassian tools. schemas.yml Sets up the required schemas for Atlassian tools crowd.yml Sets up Atlassian Crowd as an Identity and SSO provider bitbucket.yml Sets up Atlassian Bitbucket jira.yml Sets up Atlassian Jira jira_enable_sso.yml After basic setup of Crowd and Jira setup, enable SSO functionality. confluence.yml Sets up Atlassian Confluence confluence_enable_sso.yml After basic setup of Crowd and Confluence setup, enable SSO functionality. Beside the basic playbooks, it might be required to run additional playbooks if you setup the Atlassian tools on AWS. Special Plabyooks crowd_post_setup.yml Takes care that login to crowd is possible by inserting the AWS LB IP addresses into the database tables. The ansible role definitions are located in the ods-core repository at infrastructure-setup/ansible/roles Note that there are two different types of roles: roles starting with modified or local; these roles are modified by the OpenDevStack members and are maintained by them all other roles, e.g geerlingguy.git, which are copied roles from ansible galaxy. The roles from ansible galaxy are specified in the requirements.yml file. In order to migrate to a new version of the role, you need to specify the version in the requirements.yml file run ansible-galaxy install Example: update geerlingguy.git to version 2.1.0 Update requirements.yml: - src: geerlingguy.git version: 2.1.0 Call ansible-galaxy install: export ANSIBLE_VAULT_PASSWORD_FILE=/vagrant/ansible/.vault_pass.txt && ansible-galaxy install -r requirements.yml -p roles - andrewrothstein.openshift-origin-client-tools (v1.0.9) is already installed, skipping. - geerlingguy.nginx (2.6.2) is already installed, skipping. - geerlingguy.docker (2.0.4) is already installed, skipping. - downloading role 'git', owned by geerlingguy - downloading role from https://github.com/geerlingguy/ansible-role-git/archive/2.1.0.tar.gz - extracting geerlingguy.git to /vagrant/ansible/roles/geerlingguy.git - geerlingguy.git (2.1.0) was installed successfully","title":"Infrastructure Setup","component":"opendevstack","version":"5.x","name":"infrastructure-setup","url":"/opendevstack/5.x/administration/infrastructure-setup.html","titles":[{"text":"The different playbooks","hash":"_the_different_playbooks","id":1},{"text":"How to update ansible roles","hash":"_how_to_update_ansible_roles","id":2}]},"196":{"id":196,"text":"This document will guide you through installing / maintaining an OpenDevStack installation. Installing OpenShift is out of scope for this guide. We assume you have an OpenShift 3.11 cluster running already. If so, ensure that the cluster nodes have vm.max_map_count set to at least 262144, otherwise you’ll not be able to install SonarQube later on. You may change this setting via sudo sysctl -w vm.max_map_count=262144. If you do not have an OpenShift cluster yet, and just want to try things out, you may use oc cluster up to spin up a temporary cluster. Note that this will only work on Linux and we recommend to have at least 16GB RAM and 32GB of available disk space. From now on we assume you work from a Bash terminal (Cygwin / Linux). In this terminal, you’ll ned a recent git version (>= 2.13.2) and a recent jq version (>= 1.5, see https://stedolan.github.io/jq/) in your $PATH. Before you can install OpenDevStack (no matter whether locally or on another server) you need to have the ODS repositories available on your local machine. For this purpose, ODS provides a script to setup all required repositories with the same Git ref easily. This script needs to be downloaded to the umbrella directory which should hold all ODS respositories. The following example shows how to do this for the master version, please use the exact version you want to install (e.g. v4.0.0): UMBRELLA_DIR=~/opendevstack GIT_REF=master mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF After running this script, all required repositories should be available locally. Go to ods-core and run: make prepare-config If you want to install OpenDevStack for the first time, leave the BitBucket URL empty. After the configuration is prepared (which means that a directory ods-configuration will be created if it does not exist yet), fill out all the parameters in ods-core.env in directory ods-configuration for your installation. Add all files of directory ods-configuration to git and commit the result. You don’t need to push yet, this will be done later. \"Preparing\" also updates the sample files and checks if any params are present in the sample files but missing from the real file. If you are using windows Cygwin or WSL remember to change ending line CRLF to LF before commit ods-core.env, you can find more information on configure Git ending line At this stage you have to setup the Atlassian suite (Jira, Confluence, Bitbucket, Crowd) if it does not exist yet. If you already have an installation the Atlassian suite, you now need to configure it to work with OpenDevStack. Documentation for the installation and configuration of the Atlassian suite is missing at the moment. The general setup is described in https://github.com/opendevstack/ods-core/tree/master/infrastructure-setup, but this will likely need adaption to your specific environment. After Crowd is running, ensure that there is a user corresponding to the CD_USER_ID_B64/CD_USER_PWD_B64 parameters in ods-core.env. On Bitbucket, there must be an OPENDEVSTACK project filled with the necessary repositories such as ods-core. To set them up, use: make prepare-bitbucket-repos Notice that prepare-bitbucket-repos expects a running Atlassian suite (it will not spin up a new Bitbucket instance). Then, update them with the latest state so that they can be used e.g. from BuildConfig resources in OpenShift: make push-local-repos You also need to update ods-configuration, which can be done via: git remote add origin git push -u origin master Finally, it is required to create a Git ref in the ods-jenkins-shared-library which matches the ODS version you want your users to consume (as specified by ODS_IMAGE_TAG in the configuration): make set-shared-library-ref We use Tailor to handle OpenShift templates and keep OpenDevStack resources in sync. Tailor is a tool which needs to be installed on your local machine. Please see its installation instructions for your platform. Following are the version requirements: OpenDevStack version Tailor version 3.x >= 1.2.2 2.x >= 0.13.1 1.2.x = 0.9.3 1.1.x = 0.9.3 1.0.x = 0.9.1 0.1.x = 0.8 OpenDevStack needs one central project in OpenShift, which will hold all shared resources such as images or deployments. This project is typically called ods, but you can customize this in the configuration via ODS_NAMESPACE. For the following steps, you must be logged into OpenShift (using oc login --token=) with a user that has cluster-admin rights. In ods-core run: make install-ods-project A central Nexus deployment is used to proxy packages and to store artifacts. In ods-core run: make install-nexus Afterwards, run the initial configuration: make configure-nexus In the course of this you will be prompted to set a new admin password. The configure-nexus target is not idempotent yet, so it cannot be used for upgrading! A central SonarQube deployment is used to analyze source code. In ods-core run: make install-sonarqube This will launch an instance of SonarQube. The script will prompt for a new admin password. Once this has been set, an auth token for the Jenkins pipelines will be generated. Both values are automatically written into ods-configuration/ods-core.env, which you then need to commit and push. Also, you have to add the cd-user as a user in the project permissions of your Bitbucket OpenDevStack project. Read permission is sufficient. Central Jenkins images (master, agent, webhook proxy) are used by every ODS project. In ods-core run: make install-jenkins Then, there are further Jenkins agent images for each quickstarter technology. To create those images, run the following from ods-quickstarters: make install-jenkins-agent At this stage you can setup or modify the image stream for the Document Generation service. In ods-core run: make install-doc-gen At this stage you can setup or modify the provisioning application. In ods-core run: make install-provisioning-app Congratulations! At this point you should have a complete ODS installation. Try it out by provisioning a new project with the provisioning application.","title":"OpenDevStack Setup","component":"opendevstack","version":"5.x","name":"installation","url":"/opendevstack/5.x/administration/installation.html","titles":[{"text":"Server prerequisites","hash":"_server_prerequisites","id":1},{"text":"Local Setup","hash":"_local_setup","id":2},{"text":"Repositories","hash":"_repositories","id":3},{"text":"Configuration","hash":"_configuration","id":4},{"text":"Atlassian Suite","hash":"_atlassian_suite","id":5},{"text":"Bitbucket Repositories","hash":"_bitbucket_repositories","id":6},{"text":"OpenDevStack environment in OpenShift","hash":"_opendevstack_environment_in_openshift","id":7},{"text":"Tailor","hash":"_tailor","id":8},{"text":"Central ODS project","hash":"_central_ods_project","id":9},{"text":"Nexus","hash":"_nexus","id":10},{"text":"SonarQube","hash":"_sonarqube","id":11},{"text":"Jenkins","hash":"_jenkins","id":12},{"text":"Document Generation service","hash":"_document_generation_service","id":13},{"text":"Provisioning Application","hash":"_provisioning_application","id":14}]},"197":{"id":197,"text":"Table of Contents Realm master Users Realm opendevstack Groups Users Client ods-provisioning-app Keycloak is an open source identity and access managment tool. OpenDevStack uses eigther Atlassian Crowd or OpenID Connect / OAuth 2.0 protocol for authentication users of provisioning app. The usage of Keycloak is optional. Instead of keycloak, Atlassian Crowd can still be used for authentication. See documentation under ODS-Components → Provisioning App → Configuration Guide regarding the configuration of provisioning app. Setup of keycloak for local-installation is all done without further manual setup actions by starting the vagrant-box idmanager. User Password Roles admin admin keycloak admin There is (beside the master realm) one single OpenDevStack-specific realm: opendevstack. There are two OpenDevStack-specific groups inside the opendevstack realm: opendevstack-administrators opendevstack-users User Password Groups admin1 admin1 opendevstack-administrators opendevstack-users user1 user1 opendevstack-users There is one OpenDevStack-specific client inside the opendevstack realm: ods-provisioning-app. There is a protocoll mapper called Group Mapper that maps the user’s group membership to a token claim with name roles.","title":"Keycloak","component":"opendevstack","version":"5.x","name":"keycloak","url":"/opendevstack/5.x/administration/keycloak.html","titles":[{"text":"Realm master","hash":"_realm_master","id":1},{"text":"Users","hash":"_users","id":2},{"text":"Realm opendevstack","hash":"_realm_opendevstack","id":3},{"text":"Groups","hash":"_groups","id":4},{"text":"Users","hash":"_users_2","id":5},{"text":"Client ods-provisioning-app","hash":"_client_ods_provisioning_app","id":6}]},"198":{"id":198,"text":"In ODS 2, there was a central namespace cd, alongside 3 namespace dedicated to the provisioning app: prov-cd, prov-dev and prov-test. In ODS 3, there is only one namespace ods, which contains the whole OpenDevStack installation. When updating from ODS 2 to ODS 3, you will need to move the services running in cd, prov-cd and prov-test to ods. In detail: SonarQube is moving from cd to ods Nexus is moving from cd to ods Jenkins (Master and Webhook Proxy) is moving from prov-cd to ods Provisioning App is moving from prov-test to ods The Provisioning App will make use of the Jenkins instance in ods to provision new ODS projects. Apart from the instances, also all build configurations and image streams are moving from cd to ods, which means all users need to pull images from the new namespace. With that in mind, we can start the update procedure! Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. To do so, run the following and select the version you want to install (3.x). make sync-repos If your OpenDevStack installation is based on a custom branch (such as 3.acme), then you need to create a pull request on BitBucket from 3.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor. 3.x requires Tailor 1.2.2. Run: make prepare-config In 2.x, the Jenkins master base image was pulled from the openshift namespace. The agent base image could have been pulled from that namespace as well, or directly from a registry. In 3.x, the master can also be pulled directly from a registry. The advantage of this is that you do not need to worry about the import policy set in the openshift namespace, which can have suprising results (e.g. your base image never updating even though a fix has been released by RedHat). The behaviour is defined by a new configuration parameter, JENKINS_MASTER_BASE_FROM_IMAGE. Further, in 2.x you had to pick (via JENKINS_AGENT_BASE_IMAGE) whether you wanted to use Dockerfile.centos7 or Dockerfile.rhel7. However, both files contained the same instructions. Therefore, those were combined into a single Dockerfile and you only need to choose which base image to use via JENKINS_AGENT_BASE_FROM_IMAGE (like before). After you have updated/added/removed all parameters with your desired values, commit and push the result. Next you need to update all OpenShift resources (such as DC or BC). Review the diff produced by Tailor carefully before applying changes. In ods-core, run: make install-ods-project make install-jenkins make install-nexus make install-doc-gen In ods-quickstarters, run: make install-jenkins-agent With OpenDevStack version 3.x the \"production\" instance of the Provisioning App is moving from the prov-test to the ods namespace. The following steps describe how to perform the change: Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Backup Data to a local directory oc cp prov-test/:/opt/provision/history/ ./history Install the Provisioning App in the ods namespace make install-provisioning-app Copy backed up data to new instance oc cp ./history ods/:/opt/provision Depending on your use of the Provisioning App you can either: delete all prov-* namespaces if you are only interested in running a \"production\" instance. only delete the data under /opt/provision/history in the prov-test namespace if you want to keep your setup. With OpenDevStack version 3.x SonarQube is moving from the cd namespace to the ods namespace. The following outlines the procedure for SonarQube: Create the SonarQube build resources in ods using make apply-sonarqube-build Start build of SonarQube image in ods using make start-sonarqube-build Scale down the SonarQube pod in cd Create a backup of the old data using make ODS_NAMESPACE=cd backup-sonarqube Create the SonarQube deploy resources in ods using make apply-sonarqube-deploy Scale down the SonarQube pod in ods Upload backup to new Postgres pod: oc -n ods cp sonarqube/sonarqube.sql :/var/lib/pgsql/ Start a bash in the Postgres pod: oc rsh -n ods pod/ bash and start a psql session. Drop the sonarqube database (DROP DATABASE sonarqube) and create a new, empty one (CREATE DATABASE sonarqube OWNER sonarqube). Then quit from psql. Import the backup with psql sonarqube System\". Then, start a bash in the SonarQube pod: oc rsh -n ods pod/ bash and remove /opt/sonarqube/data/es6. Afterwards, restart the server from the UI (there’s a button on the \"Administration > System\" page). Booting will take some time (depending on the amount of data to process) as a full re-index is performed. Call make configure-sonarqube to verify the new installation is correctly configured. Now delete the old SonarQube route in cd. Create a new route in ods with the same host as the old route so that projects using the old URL don’t break. Checking for secure routes has been removed from the core, but is still available at https://github.com/BIX-Digital/ods-contrib.","title":"","component":"opendevstack","version":"5.x","name":"update-2-to-3","url":"/opendevstack/5.x/administration/update-2-to-3.html","titles":[{"text":"New central namespace","hash":"_new_central_namespace","id":1},{"text":"Update your OpenDevStack repositories","hash":"_update_your_opendevstack_repositories","id":2},{"text":"Backup","hash":"_backup","id":3},{"text":"Tailor","hash":"_tailor","id":4},{"text":"Configuration","hash":"_configuration","id":5},{"text":"OpenShift resources","hash":"_openshift_resources","id":6},{"text":"Provisioning App changes","hash":"_provisioning_app_changes","id":7},{"text":"SonarQube changes","hash":"_sonarqube_changes","id":8},{"text":"Secure route removal","hash":"_secure_route_removal","id":9}]},"199":{"id":199,"text":"Learn all about how to update your OpenDevStack repositories and the running installation of it. Updating repositories means that new refs from repositories under github.com/opendevstack are pushed into the repositories in your BitBucket instance. First, you need a clone of each repository in BitBucket which should be updated on your local machine. Once this has been done, you need to fetch new refs from github.com/opendevstack. To do so, add a remote pointing to it like this: git remote add ods https://github.com/opendevstack/.git Now you are ready to update the refs. It is recommended to update both the master branch and, unless you want to live off the bleeding edge, a release branch such as 2.x. Use the steps shown below: # Ensure you have the latest refs from ODS locally git fetch ods # Update master git checkout master git reset --hard ods/master git push origin master # Update 2.x git checkout 2.x git reset --hard ods/2.x git push origin 2.x If your OpenDevStack installation is based on a custom branch (such as 2.acme), then you need to create a pull request on BitBucket from 2.x into that custom branch now. Now that the repositories are updated, you also need to modify the images and the running instances in OpenShift. Updating consists of two parts: following the general update procedure (applicable to all version updates) and a version specific update procedure. Before proceeding, it is advisable to make a backup of the existing OpenShift configuration. This can be done easily with Tailor: # Backup CD project tailor export -n cd > backup_CD.yml # Backup provision app namespaces tailor export -n prov-cd > backup_PROV_CD.yml tailor export -n prov-dev > backup_PROV_DEV.yml tailor export -n prov-test > backup_PROV_TEST.yml Note that the executing user needs to have permissions to access all resources in the cd namespaces for this to work properly. Next, update Tailor to the version corresponding to your new OpenDevStack version, which is noted at the start of each version specific update procedure. Then, update/add/remove the configuration parameters (located in ods-configuration). To do this, use the ./update script located in ods-core/configuration-sample. Next, run tailor update in ods-core and ods-quickstarters to bring all OCP resources (such as DC or BC) into sync. Review the diff produced by Tailor carefully, especially around changes to PVCs. After all OCP resources have been updated, you need to start a build for all build configs in the cd namespace to create new images. Also, the provisioning app should be updated. To do that, run tailor update in each ocp-config folder, and then trigger a build in Jenkins to redeploy the service. Now that the general procedure has been completed, you need to apply all the update notes below which apply to your version change. 2.x requires Tailor 0.11.0. Secure route checking has been removed for version 3.x as this is an optional step. The code now is available at https://github.com/BIX-Digital/ods-contrib. Go to ods-core/check-ocp-secure-routes/ocp-config and run tailor update to setup a cron job that will check exposed routes once a day (see https://github.com/opendevstack/ods-core/pull/280). As each project may use a specific CD user now, you have to configure the username of the global CD user. To do so, add username: Y2RfdXNlcg== to secret cd/cd-user-token. The shared-images namespace is no longer part of OpenDevStack. If you do not have any users that use images from that namespace, you may simply delete it via oc delete project shared-images. Otherwise, you can leave it in place and remote it when you see fit. Rundeck is longer part of OpenDevStack and can simply be removed. Images in the cd namespaces should be pullable from all authenticated users. This permission is required for the new project provisioning approach to work: oc adm policy add-cluster-role-to-group system:image-puller system:authenticated -n cd oc adm policy add-role-to-group view system:authenticated -n cd Further, -dev and -test namespaces should be able to pull images from the corresponding *-cd namespaces to make it easy to shared base images within a project (see https://github.com/opendevstack/ods-core/issues/293). It is recommended to grant these rights for every project in your cluster. If you don’t do this, users will have to add the permissions manually if they want to use this flow. 2.x allows the webhook proxy to build repositories in external projects if configured (see https://github.com/opendevstack/ods-core/issues/229). This feature is required for the new quickstarter provisioning approach to work. Therefore, it is recommended to tag a webhook proxy images built from the 2.x branch or v2.0 tag with latest so that all webhook proxies in the cluster get updated. Review the ConfigMap of the provisioning app in prov-dev and prov-test. Depending on your requirements, you might want to configure additional quickstarters (jenkinspipeline.quickstarter…​) and/or change the readable repositories of the project specific users (scm.global.readablerepos.opendevstack[x]) 1.2.x requires Tailor 0.10.2. The new functionality to create documents via Jenkins requires the presence of an image for the DocGen service. In an upcoming release, this will be integrated nicely. For 1.2.x, the image needs to be built once during the update procedure. The recommended way to do this is to build the image in the prov namespaces and then move the image tag into the cd namespace. The first step is to create a pipeline oc -n prov-cd process -f pipeline.yml --param REPO_BASE= --param TRIGGER_SECRET= | oc -n prov-cd create -f -, where pipeline.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: docgen-production spec: nodeSelector: {} output: {} postCommit: {} resources: {} runPolicy: Serial source: git: ref: production uri: ${REPO_BASE}/opendevstack/ods-document-generation-svc.git sourceSecret: name: cd-user-with-password type: Git strategy: jenkinsPipelineStrategy: jenkinsfilePath: Jenkinsfile type: JenkinsPipeline triggers: - generic: secret: ${TRIGGER_SECRET} type: Generic parameters: - name: TRIGGER_SECRET required: true - name: REPO_BASE required: true description: Path to repository, e.g. https://cd_user@bitbucket.domain.com/scm Then, create the BuildConfig and ImageStream in prov-dev using oc -n prov-dev process -f bc-is.yml | oc -n prov-dev create -f -, where bc-is.yml looks like this: apiVersion: template.openshift.io/v1 kind: Template objects: - apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: creationTimestamp: null labels: app: prov-docgen name: docgen spec: failedBuildsHistoryLimit: 5 successfulBuildsHistoryLimit: 5 nodeSelector: null output: to: kind: ImageStreamTag name: docgen:latest postCommit: {} resources: {} runPolicy: Serial source: binary: {} type: Binary strategy: dockerStrategy: {} type: Docker triggers: [] - apiVersion: image.openshift.io/v1 kind: ImageStream metadata: labels: app: prov-docgen name: docgen spec: dockerImageRepository: docgen lookupPolicy: local: false Note that this points to the production branch of ods-document-generation-svc - ensure this branch is present. After all is setup, start a build in Jenkins, and then move the built image to the cd namespace: oc tag prov-dev/docgen:latest cd/docgen:latest 1.1.x requires Tailor 0.9.4. There are no further mandatory changes apart from the general procedure described above when updating from 1.0.x. Users are highly recommended to take a look at the updates done to the boilerplates, especially the Jenkinsfile and Dockerfile. E.g. the Python quickstarter is now building an image containing all dependencies instead of installing them during runtime. 1.0.x requires Tailor 0.9.3. There is a new webhook proxy now, which proxies webhooks sent from BitBucket to Jenkins. As well as proxying, this service creates and deletes pipelines on the fly, allowing to have one pipeline per branch. To update: Setup the image in the cd project by running tailor update in ods-core/jenkins/ocp-config. Build the image. Setup the webhook proxy next to each Jenkins instance. E.g., go to ods-project-quickstarters/ocp-templates/templates and run oc process cd//cd-jenkins-webhook-proxy | oc create -f- -n xyz-cd. Repeat for each project. For each component, follow the following steps: In Jenkinsfile: Set the shared library version to 1.0.x. Replace stageUpdateOpenshiftBuild with stageStartOpenshiftBuild. Remove stageCreateOpenshiftEnvironment and stageTriggerAllBuilds. Adapt the build logic to match the latest state of the quickstarter boilerplates. Remove verbose: true config (replace with debug: true if you want debug output). Configure branchToEnvironmentMapping, see README.md. If you used environment cloning, also apply the instructions for that. In docker/Dockerfile: Adapt the content to match the latest state of the quickstarter boilerplates. No Nexus upload build artifact is required anymore, use a copy in Jenkins shell command to docker folder (see in any boilerplate how it is done now). In BitBucket, remove the existing \"Post Webhooks\" and create a new \"Webhook\", pointing to the new webhook proxy. The URL has to be of the form https://webhook-proxy-$PROJECT_ID-cd.$DOMAIN?trigger_secret=$SECRET. As events, select \"Repository Push\" and \"Pull request Merged + Declined\". If you want to build the provisioning app automatically when commits are pushed to BitBucket, add a webhook as described in the previous section. 1.0.x makes use of the BUILD_URL env variable automatically set by Jenkins. This env variable might be null in your Jenkins master. To fix this, copy https://github.com/opendevstack/ods-core/blob/1.0.x/jenkins/master/configuration/init.groovy.d/url.groovy into each Jenins master to /var/lib/jenkins/init.groovy.d/url.groovy. 1.0.x sets image labels on the BuildConfig in Jenkins. It does this by issuing a JSON patch replace request to /spec/output/imageLabels. This path was not present in prior versions, which can lead to the following error: Error from server: jsonpatch replace operation does not apply: doc is missing key: /spec/output/imageLabels. For newly provisioned components, this has been fixed with https://github.com/opendevstack/ods-project-quickstarters/pull/188. For existing components, add the path to the BuildConfig manually by editing the YAML in OpenShift.","title":"Update Guide for OpenDevStack administrators","component":"opendevstack","version":"5.x","name":"update-older","url":"/opendevstack/5.x/administration/update-older.html","titles":[{"text":"How to update your OpenDevStack repositories","hash":"_how_to_update_your_opendevstack_repositories","id":1},{"text":"How to update your OpenDevStack installation","hash":"_how_to_update_your_opendevstack_installation","id":2},{"text":"General update procedure","hash":"_general_update_procedure","id":3},{"text":"Backup","hash":"_backup","id":4},{"text":"Tailor","hash":"_tailor","id":5},{"text":"Configuration","hash":"_configuration","id":6},{"text":"OCP resources","hash":"_ocp_resources","id":7},{"text":"Images","hash":"_images","id":8},{"text":"Provisioning App","hash":"_provisioning_app","id":9},{"text":"1.2.x to 2.x","hash":"_1_2_x_to_2_x","id":10},{"text":"Setup secure route checking","hash":"_setup_secure_route_checking","id":11},{"text":"Project specific CD users","hash":"_project_specific_cd_users","id":12},{"text":"Deprecation of shared-images namespace","hash":"_deprecation_of_shared_images_namespace","id":13},{"text":"Rundeck removal","hash":"_rundeck_removal","id":14},{"text":"Image puller rights","hash":"_image_puller_rights","id":15},{"text":"Rollout new webhook proxy instances","hash":"_rollout_new_webhook_proxy_instances","id":16},{"text":"Configure the provisioning app","hash":"_configure_the_provisioning_app","id":17},{"text":"1.1.x to 1.2.x","hash":"_1_1_x_to_1_2_x","id":18},{"text":"Prepare installation for release manager quickstarter","hash":"_prepare_installation_for_release_manager_quickstarter","id":19},{"text":"1.0.x to 1.1.x","hash":"_1_0_x_to_1_1_x","id":20},{"text":"0.1.0 to 1.0.x","hash":"_0_1_0_to_1_0_x","id":21},{"text":"Update xyz-cd projects","hash":"_update_xyz_cd_projects","id":22},{"text":"Update components (information for ODS users)","hash":"_update_components_information_for_ods_users","id":23},{"text":"Update provisioning app","hash":"_update_provisioning_app","id":24},{"text":"Fix Jenkins master BUILD_URL","hash":"_fix_jenkins_master_build_url","id":25},{"text":"Fix JSON patch replace error in Jenkins build","hash":"_fix_json_patch_replace_error_in_jenkins_build","id":26}]},"200":{"id":200,"text":"Please refer to the contribution guide in the PMC repository.","title":"Development Guide","component":"opendevstack","version":"5.x","name":"development","url":"/opendevstack/5.x/contributing/development.html","titles":[]},"201":{"id":201,"text":"OpenDevStack documentation is build with Antora. As we release new versions of OpenDevStack with new or changed functionality and configuration, it should always be clear which documentation applies to which release. Thus we follow the philosophy: manage documetation as code. This means: Storing content in a version control system alongside with the code. Separating content, configuration, and presentation Reusing shared materials (Don’t repeat yourself) Antora is a static site generator by the folks behind the AsciiDoctor project that follows this practices. The engine converts a collection of version controlled documentation written in AsciiDoc into an HTML site. Documentation is spread across multiple repositories. In each repository, there is a docs folder containing the documentation. We use one \"distributed\" component named opendevstack (see Component structure documentation), and each docs folder adds one or more named modules into that component. The navigation for the component is located in the ods-core repository. Additionally, we have the ods-documentation repository which contains the Playbook and the ods-docs-ui repository containing UI customization. A guide for building the documentation locally is provided in the ods-documentation README. Issue a pull request against the repository containing the documentation you add / modify. Once this is merged, the documentation website will get updated automatically (via a daily cronjob). The documentation will be build on Travis and pushed back to the ods-documentation repository. The .travis.yml file is located in the ods-documentation project.","title":"The OpenDevStack documentation","component":"opendevstack","version":"5.x","name":"documentation","url":"/opendevstack/5.x/contributing/documentation.html","titles":[{"text":"Why we chose Antora","hash":"_why_we_chose_antora","id":1},{"text":"How is the documentation organized?","hash":"_how_is_the_documentation_organized","id":2},{"text":"How to build the site locally?","hash":"_how_to_build_the_site_locally","id":3},{"text":"How to contribute documentation","hash":"_how_to_contribute_documentation","id":4},{"text":"How is the documentation built on Github?","hash":"_how_is_the_documentation_built_on_github","id":5}]},"202":{"id":202,"text":"When we started with the OpenShift container platform we were blown away by the 100s of possibilities to use it, but there was nothing along the lines of “This is how you make it work for your org”. What we wanted is to enable developers to quickly introduce Continous Delivery and standardized technology archetypes. We call this lean, empowered governance. OpenDevStack (ODS) is how we achieve this. It is, to a large extent, tooling sitting in between your local software development (your machine/editor), and the running software in the target environemnt (OpenShift etc.). As such, most of ODS functionality is within and related to the CI/CD process. ODS has no overlap with your local environment, such as the editor you use to develop software. ODS is not a project management solution, rather it makes use of the Atlassian suite (Jira, Confluence, Bitbucket). ODS does not run your software application. ODS only deploys your software into a target environment (= OpenShift, but deployment could really be anywhere, such as AWS etc.). ODS is not a replacement for tools in the container space - rather it is one coherent offering of a selection of existing (open-source) tools. ODS is comprised of core functionality, and a configurable set of so-called quickstarters. Quickstarters can be seen as software templates, which can be instantiated in your project to create a component of your application quickly, with all the integration / configuration setup out-of-the box. The officially supplied quickstarters include, but are not limited to: Java (Spring Boot), Python (Flask), Scala (Play), Go, Angular, Ionic, Jupyter, RShiny. The core ODS functionality offers the following: A central provisioning application (the “entry point of ODS”) which allows to: provision new projects and provision components from aforementioned quickstarters within those projects A central Nexus instance to store and retrieve software artefacts. A central SonarQube instance to statically analyze the software components of a project. Customized Jenkins Master and Jenkins agent base images that are integrated with e.g. Bitbucket, OpenShift, Nexus and SonarQube. Each project runs its own Jenkins Master instance using the centrally provided image. A Jenkins Shared Library which can be used from each software component to cover most CI/CD functionality. The shared library offers all language-agnostic features, such as checking out source code, running static analysis, building container images, and deploying artefacts into the target environment. Each component only needs to add in their Jenkinsfile language-specific functionality such as building artefacts (e.g. JAR files). A release manager component which can be installed in each project to generate GxP documents from Jenkins pipeline runs (through the use of a centrally provided document generation service image). Quickstarters provide the following: Jenkins agent images that can be used during pipeline runs to build a specific language / framework Boilerplate of a specific language / framework with a \"Hello World\" example A Jenkinsfile integrating the Jenkins shared library and providing basic artefact building for the specific language / framework Integration with SonarQube, Nexus, OpenShift etc. as required When quickstarters are provisioned through the provisioning application, a repository is created on Bitbucket for the new component. The repository is populated with the boilerplate, and immediately built and deployed via Jenkins through the ODS integration. Developers can start to work on features straight away without setting up CI/CD and integrating various services. The following pictures the different parts ODS is made out of: Below is a diagram detailing the flow of an OpenDevStack CI/CD pipeline: Each major ODS release is identified by a version such as 2, 3, 4 and so on. Administrators of ODS can either: install from master to follow the cutting edge install from 2.x, 3.x, etc. branches to stay on a major version, but get bug fixes (minor versions) install from v2.0.0, v3.0.0, etc. tags to pin an exact version use a custom branch / tag such as 2.acme or 3.custom etc. to run ODS with customizations Users of ODS simply consume the version installed by their ODS administrators. A major update (e.g. 2.x to 3.x or 3.x to 4.x) is, from a user perspective, an explicit update. This means that although admins update the ODS installation in the cluster, users still have to explicitly adopt that change (e.g. by updating their Jenkins image reference and so on). Therefore, a major version change is accompanied by an update guide like Update to 3.x. For admins, a major update might mean that configuration options have to be changed or migration steps have to be taken, as well as rebuilding and rolling out all images etc. A minor update (consuming changes/bugfixs on a release branch such as 3.x) is, from a user perspective, an implicit update. This means that only admins have to make a change to the ODS installation in the cluster. Users should get those changes automatically, without the need to explicitly adopt it. Therefore, there is no update guide for minor updates. For admins, a minor update should (typically) not require changing configuration options nor performing migration steps - only rebuilding and rolling out some (or all) images should be needed. Each version is tracked as a GitHub project. The current major version is 4, the next one will be 5. See project page for details. OpenShift 4 support (keeping 3.11 compatibility) Support for Kubernetes-native Deployment resources and Helm 3 within component pipeline dropped machine learning quickstarter Integration with Aqua Security Implement health checks for quickstarters Rename central namespace to ODS, and extend with running provisioning app Install provisioning app and document generation service from pre-built images Quickstarter pipeline Merge of MRO (now: orchestration pipeline) into general shared pipeline Automation of SonarQube and Nexus setup Decorate Bitbucket pull requests with SonarQube analysis Promote images between environments if possible (instead of rebuilding) New (single page) app user interface as optional feature Removal of Rundeck (replace with Jenkins jobs) New quickstarter concept (multiple repo support) Project specific technical users CPU and memory quota support Initial version of document generation service and MRO pipeline Incremental improvements. Initial release.","title":"Introduction to OpenDevStack","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/getting-started/index.html","titles":[{"text":"What is OpenDevStack?","hash":"_what_is_opendevstack","id":1},{"text":"What ODS isn’t","hash":"_what_ods_isnt","id":2},{"text":"High-Level Overview of ODS","hash":"_high_level_overview_of_ods","id":3},{"text":"Parts of OpenDevStack","hash":"_parts_of_opendevstack","id":4},{"text":"Journey: From Commit To Deployment","hash":"_journey_from_commit_to_deployment","id":5},{"text":"Versioning","hash":"_versioning","id":6},{"text":"Roadmap","hash":"_roadmap","id":7},{"text":"4.2 (Target Date: End-of-Feb 2022)","hash":"_4_2_target_date_end_of_feb_2022","id":8},{"text":"4 (November 2021)","hash":"_4_november_2021","id":9},{"text":"3 (August 2020)","hash":"_3_august_2020","id":10},{"text":"2 (December 2019)","hash":"_2_december_2019","id":11},{"text":"1.2 (October 2019, using old versioning scheme)","hash":"_1_2_october_2019_using_old_versioning_scheme","id":12},{"text":"1.1 (June 2019, using old versioning scheme)","hash":"_1_1_june_2019_using_old_versioning_scheme","id":13},{"text":"1.0 (November 2018, using old versioning scheme)","hash":"_1_0_november_2018_using_old_versioning_scheme","id":14}]},"203":{"id":203,"text":"Jenkins master deployments are using an image built in the central ODS namespace. This image is a customisation of an upstream Jenkins master image provided by RedHat. Jenkins agent images are also built in the central ODS namespace, and are also based on upstream images provided by RedHat. The exact Jenkins version which is used is determined by which RedHat base image tag is used, and depending on the used tag, at which time the ODS image is built. To update Jenkins (master and agents), the following steps need to be taken: Configure new versions Update BuildConfig resources Create new images Rollout new deployments The following will guide you through this process. To configure a new version of Jenkins, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core and ods-quickstarters repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-quickstarters,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change JENKINS_MASTER_BASE_FROM_IMAGE and JENKINS_AGENT_BASE_FROM_IMAGE in ods-configuration/ods-core.env to your desired image tags. Commit the change and push it to Bitbucket. If the configured tag is a moving target, you might not need to change it at all and you can simply continue with the next step. Next, you should ensure that the Jenkins BuildConfig resources in the central ODS namespace are up-to-date, then trigger new builds so that new images with the changed base images get built. Finally, new deployments should be rolled out which use the newly built image. All of this can be done from the ods-core repository: make install-jenkins This target depends on the targets apply-jenkins-build, start-jenkins-build, and apply-jenkins-deploy which execute the steps described above (and can of course also be executed individually). Only the Jenkins master deployment in the central ODS namespace gets updated automatically using this command. Updating Jenkins master deployments in each *-cd namespace is a separate task for which no ODS automation exists at the moment. Finally, you also need to rebuild all technology-specific Jenkins agent images. For the Jenkins agent images delivered with the official quickstarters, this can be done from the ods-quickstarters repository: make install-jenkins-agent If you have other quickstarters which use custom Jenkins agents, you will also have to rebuild those.","title":"Jenkins Administration","component":"opendevstack","version":"5.x","name":"administration","url":"/opendevstack/5.x/jenkins/administration.html","titles":[{"text":"Updating Jenkins to a new version","hash":"_updating_jenkins_to_a_new_version","id":1}]},"204":{"id":204,"text":"We have a base image for different jenkins agents. The concrete agent images are then configured as part of the quickstarters. The base image contains the following customizations: SonarQube Scanner SonarQube CNES Report Plugin Tailor Helm Skopeo Snyk - used to scan and monitor projects vulnerable third-party dependencies (only installed if SNYK_DISTRIBUTION_URL is configured) Aqua Scanner CLI - used to scan local images and interact with the Aqua Server (only installed if AQUASEC_SCANNERCLI_URL is configured) Trivy Scanner - used to scan filesystem and generate “software bill of materials” SBOM report Setting of enterprise proxy (based on HTTP_PROXY presence) Support for custom certificates (based on APP_DNS presence) When the container image is built, it fetches automatically the OpenShift root CA certificate and stores it, so that the oc-cli tool can pick it up later and also adds the base domain wildcard certificate to the Java certificate store. The setting of the enterprise proxy takes care that Jenkins agent works also on OpenShift clusters in enterprises that use a web proxy. The base jenkins agent is used by all ODS builder agents","title":"ODS Jenkins Agent base","component":"opendevstack","version":"5.x","name":"agent-base","url":"/opendevstack/5.x/jenkins/agent-base.html","titles":[]},"205":{"id":205,"text":"OpenDevStack provides several customized Jenkins container images based on the official OpenShift images.","title":"Jenkins","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/jenkins/index.html","titles":[]},"206":{"id":206,"text":"The following customizations are applied to enable more automatic deployment of Jenkins. We have included some base plugins token-macro:2.3 greenballs:1.15 credentials-binding:1.18 email-ext:2.63 sonar:2.6.1 ansicolor:0.5.2 workflow-cps-global-lib:2.13 junit:1.28 blueocean:1.18.0 workflow-durable-task-step:2.28 openshift-sync:1.0.44 Jenkins offers to deploy post-initialization scripts. Table 1. Table Post-Initialization Scripts Script Description url.groovy Sets the Jenkins location based on the OpenShift route sonarqube.groovy Sets the SonarQube server URL and auth token based on the exposed environment variables ods-jenkins-shared-library.groovy Registers ods-jenkins-shared-library as a global library The following environment variables must be available to Jenkins: SONAR_SERVER_URL specifies the location of the SonarQube server. SONAR_AUTH_TOKEN this is the SonarQube auth token that is generated when deploying and configuring sonarqube Jenkins email notifications need manual configuration: The SMTP server parameters that need to be defined are found under menu option: Jenkins → Manage Jenkins → Configure System → Extended E-mail Notification It is also mandatory to define the System Admin e-mail address, this is defined under menu option: Jenkins → Manage Jenkins → Configure System → Jenkins Location Once Jenkins is configured, you will also need to define the recipients of the email notifications by definining emailextRecipients parameter in your odsComponentPipeline context, in your components' Jenkinsfile, like: ... odsComponentPipeline( ... emailextRecipients: ['email1@foo.bar', 'email2@foo.bar'], ... ) { context -> ...","title":"Jenkins Master","component":"opendevstack","version":"5.x","name":"master","url":"/opendevstack/5.x/jenkins/master.html","titles":[{"text":"Configured Plugins","hash":"_configured_plugins","id":1},{"text":"Init scripts","hash":"_init_scripts","id":2},{"text":"Email notifications","hash":"_email_notifications","id":3}]},"207":{"id":207,"text":"The webhook proxy service allows to trigger Jenkins pipelines. Further, it automatically creates pipelines that do not exist yet and can delete pipelines that are no longer needed. One instance of the webhook proxy runs in every -cd namespace next to the Jenkins instance. Accepts webhooks from BitBucket and forwards them to the corresponding Jenkins pipeline (which is determined based on the component param and the branch name). If there is no corresponding pipeline yet, it will be created on the fly (by creating a BuildConfig in OpenShift which is synced to Jenkins via the OpenShift plugin). Once a branch is deleted or a pull request declined/merged, the corresponding Jenkins pipeline is deleted. Accepts a payload of the following form: { \"branch\": \"foo\", \"repository\": \"repository\", \"env\": [ { \"name\": \"FOO_BAR\", \"value\": \"baz\" } ], \"project\": \"bar\" } Important: In order to avoid conflicts between pipelines created/triggered via BitBucket and pipelines created/triggered via /build, most likely you’d want to pass a component name to /build, like so: /build?component=foo, see the next section. Also note that the project field is optional, and restricted to the project of the webhook proxy and opendevstack by default (but can be customized via ALLOWED_EXTERNAL_PROJECTS). Both / and /build accept the following query parameters. They are offered as query parameters only because otherwise they could not be adjusted for BitBucket webhooks. Variable Description jenkinsfile_path The path to the Jenkinsfile. By default, the Jenkinsfile is assumed to be in the root of the repository, therefore this value defaults to simply Jenkinsfile. component The component part of the pipeline name. If not given, the pipeline name is created from the repository and the branch. All endpoints return the BuildConfig response as-is from OpenShift, see https://docs.openshift.com/container-platform/3.11/rest_api/apis-build.openshift.io/v1.BuildConfig.html#object-schema. The provisioning app sets up one webhook per repository by default. It is possible to create webhooks manually as well, e.g. to add more than one webhook (likely differentiated by the component param then). To manually create a webhook, go to \"Repository Settings > Webhooks\" and click on \"Create webhook\". Fill in the following: Name: Jenkins (or similar, value is only serves as a description) URL: route to the webhook proxy instance, followed by the trigger_secret, e.g. https://webhook-proxy-foo-cd.example.com?trigger_secret=s3cr3t. The secret can be retrieved in the OpenShift console in your *-cd namespace (in this example foo-cd) under \"Resources > Secrets > webhook-proxy\". Secret: leave blank Under \"Repository events\", select Push. Under \"Pull request events\", select Merged and Declined Now you can verify by clicking \"Test connection\". Afterwards, save your changes. The next pushed commit should automatically send a request to the webhook proxy and start a pipeline in Jenkins. The following environment variables can be set on the DeploymentConfig and are read by the webhook proxy: Variable Description ACCEPTED_EVENTS Comma-separated list of handled Bitbucket events. Defaults to repo:refs_changed,pr:declined,pr:merged,pr:deleted. ALLOWED_CHANGE_REF_TYPES Comma-separated list of Bitbucket change refs. Defaults to BRANCH, which means tags do not create pipelines nor forward to them. If you want this to happen, specify e.g. BRANCH,TAG. ALLOWED_EXTERNAL_PROJECTS Comma-separated list of external projects which the Webhook Proxy can deal with. For security reasons, by default the webhook proxy allows only its own project and the opendevstack project to be passed as a project parameter. OPENSHIFT_API_HOST Defaults to openshift.default.svc.cluster.local. Usually does not need to be modified. PROTECTED_BRANCHES Comma-separated list of branches which pipelines should not be removed after they have been merged. Use either exact branch names, branch prefixes (e.g. feature/) or * for all branches. Defaults to: master,develop,production,staging,release/. REPO_BASE The base URL of the repository (e.g. your BitBucket host). This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. TRIGGER_SECRET The secret which protects the pipeline to be executed from outside. This variable is set by the OpenShift template from which the DeploymentConfig is created and usually does not need to be modified. See the Makefile targets.","title":"Jenkins Webhook Proxy","component":"opendevstack","version":"5.x","name":"webhook-proxy","url":"/opendevstack/5.x/jenkins/webhook-proxy.html","titles":[{"text":"Endpoints","hash":"_endpoints","id":1},{"text":"POST /","hash":"_post","id":2},{"text":"POST /build","hash":"_post_build","id":3},{"text":"Parameters","hash":"_parameters","id":4},{"text":"Responses","hash":"_responses","id":5},{"text":"Adding a webhook in BitBucket","hash":"_adding_a_webhook_in_bitbucket","id":6},{"text":"Customizing the behaviour of the webhook proxy","hash":"_customizing_the_behaviour_of_the_webhook_proxy","id":7},{"text":"Development","hash":"_development","id":8}]},"208":{"id":208,"text":"The ods-core repository contains a build recipe for a central Nexus instance. The remainder of this document describes how that setup is done, and how it can be modified and updated. The Nexus deployment is using an image built in the central ODS namespace. This image is a customisation of the official Nexus image on DockerHub. The Nexus version which is used is determined by which image tag from DockerHub is used, and depending on tag, at which time the ODS image is built. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html To update Nexus, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of Nexus, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change NEXUS_IMAGE_TAG in ods-configuration/ods-core.env to your desired image tag. Commit the change and push it to Bitbucket. Next, you should ensure that the Nexus BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image with the changed base image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-nexus This target depends on the targets apply-nexus-chart and start-nexus-build which execute the steps described above (and can of course also be executed individually). There is also a configure-nexus target. However, this is not executed as part of install-nexus as it is not idempotent yet (which means it cannot be used against an existing Nexus deployment). For a simple Nexus version update, you don’t need to change any configuration, but if you switch between ODS versions you should keep an eye on Nexus configuration.","title":"Nexus Administration","component":"opendevstack","version":"5.x","name":"administration","url":"/opendevstack/5.x/nexus/administration.html","titles":[{"text":"Updating Nexus to a new version","hash":"_updating_nexus_to_a_new_version","id":1}]},"209":{"id":209,"text":"","title":"Nexus","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/nexus/index.html","titles":[]},"210":{"id":210,"text":"Table 1. Table OpenShift and Atlassian Stack Requirements Component Version Atlassian Bitbucket 4.14.3 Atlassian Jira 7.3.6 Atlassian Confluence 6.1.3 Atlassian Crowd 2.11.2 OpenShift OKD 3.11, OpenShift 3.10","title":"System and environment requirements","component":"opendevstack","version":"5.x","name":"sysenv-requirements","url":"/opendevstack/5.x/ods-core/sysenv-requirements.html","titles":[]},"211":{"id":211,"text":"By default cygwin uses the ssh client from it’s msys environment Use \"VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh \" on Windows 10 to tell cygwin to use windows’s ssh-client Source: https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263 This error can happen on windows when the shared folder between windows and the vm doesn’t have the right permissions. Then Ansible will ignore the ansible.cfg config-file in this folder which will cause it to use the wrong directory to search for roles. To fix this you can modify the ansible.cfg file in /etc/ansible and change the roles_path to roles_path = /vagrant/ansible/roles This error happens when executing the ansible-playbooks as root user. You have to execute the playbooks as vagrant Just execute the playbook again. The network is sometimes too slow. If you install Minishift in an environment with an AD domain it is possible, that Minishift doesn’t start up. Try to connect to your AD domain and then restart Minishift again. Jenkins builds fails (or gets stuck at \"continuing on node xyz\"). Check pods in the project’s CD project - and see if a agent pod is in error state with the above message in the events section. In this case - grant system:authenticated (group) -> image-puller rights. Just open a ticket against OpenDevStack - don’t be shy there is no wrong or bad question. And we are there to help!","title":"Troubleshooting","component":"opendevstack","version":"5.x","name":"troubleshooting","url":"/opendevstack/5.x/ods-core/troubleshooting.html","titles":[{"text":"The terminal is empty when using vagrant ssh in cygwin","hash":"_the_terminal_is_empty_when_using_vagrant_ssh_in_cygwin","id":1},{"text":"ERROR! the role '…​' was not found in /vagrant/ansible/playbooks/roles …​","hash":"_error_the_role_was_not_found_in_vagrantansibleplaybooksroles","id":2},{"text":"fatal: [atlassian1]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: Permission denied (publickey,password).\\r\\n\", \"unreachable\": true}","hash":"_fatal_atlassian1_unreachable_changed_false_msg_failed_to_connect_to_the_host_via_ssh_permission_denied_publickeypassword_rn_unreachable_true","id":3},{"text":"Timeouts during the execution of ansible-playbooks","hash":"_timeouts_during_the_execution_of_ansible_playbooks","id":4},{"text":"Minishift does not start","hash":"_minishift_does_not_start","id":5},{"text":"Jenkins agent - Image pull error (ErrImgPull / ImagePullback Exception)","hash":"_jenkins_agent_image_pull_error_errimgpull_imagepullback_exception","id":6},{"text":"All other issues","hash":"_all_other_issues","id":7}]},"212":{"id":212,"text":"The ods-core repository contains a build recipe for a central SonarQube instance to which all Jenkins instances send reports to. The remainder of this document describes how that setup is done. There is an admin user which is allowed to change settings, install plugins, etc. The password is located in the OpenShift project cd, inside the sonarqube-app secret. The SonarQube deployment is using an image built in the central ODS namespace. This image is based on the https://hub.docker.com/_/sonarqube, as can be seen in the ODS Dockerfile. If the previous version was installed using Tailor, follow the process to migrate from tailor to helm in https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html If the previous version was configured to use Atlassian Crowd as Authentication provider, run the script https://github.com/opendevstack/ods-core/tree/master/scripts/migrate-sonar-users.sh in order to migrate current users to use Saml as Authentication provider. To update SonarQube, the following steps need to be taken: Configure new version Update BuildConfig Create new image Rollout new deployment The following will guide you through this process. To configure a new version of SonarQube, you need to update the configuration of ODS, which is located in the ods-configuration repository of your ODS project in Bitbucket. You need to have the latest master of this repository, as well as the ods-core repository in your current ODS version available locally. If you don’t want to do this manually, you can make use the repos.sh script: UMBRELLA_DIR=~/opendevstack BITBUCKET_HOST=bitbucket.acme.org BITBUCKET_PROJECT=opendevstack GIT_REF=v3.0.0 mkdir -p $UMBRELLA_DIR && cd $UMBRELLA_DIR curl -LO https://raw.githubusercontent.com/opendevstack/ods-core/$GIT_REF/scripts/repos.sh chmod +x repos.sh ./repos.sh --git-ref $GIT_REF --repos=\"ods-core,ods-configuration\" --source-project https://$BITBUCKET_HOST/scm/$BITBUCKET_PROJECT The script can also be used in an umbrella directory in which the repositories already exist. Once the repositories are at the desired revision, change SONAR_VERSION in ods-configuration/ods-core.env to your desired version. Commit the change and push it to Bitbucket. Next, you should ensure that the SonarQube BuildConfig resource in the central ODS namespace is up-to-date, then trigger a new build so that a new image gets built. Finally, a new deployment should be rolled out which uses the newly built image. All of this can be done from the ods-core repository: make install-sonarqube This target depends on the targets apply-sonarqube-chart, start-sonarqube-build and configure-sonarqube which execute the steps described above (and can of course also be executed individually).","title":"SonarQube Administration","component":"opendevstack","version":"5.x","name":"administration","url":"/opendevstack/5.x/sonarqube/administration.html","titles":[{"text":"Modifying configurations, plugins, etc.","hash":"_modifying_configurations_plugins_etc","id":1},{"text":"Updating SonarQube to a new version","hash":"_updating_sonarqube_to_a_new_version","id":2}]},"213":{"id":213,"text":"SonarQube is an open source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities. This file needs to be located in the root of the repository you want to have analysed. For example: # Project Key (required) sonar.projectKey=test-spring-boot # Project Name (optional, this is what is shown in the main list) sonar.projectName=test-spring-boot # Comma-separated paths to directories with sources (required) sonar.sources=src # Forced Language (optional) sonar.language=java # Encoding of the source files (optional but recommended as default is ASCII) sonar.sourceEncoding=UTF-8 # Plugin-specific settings sonar.java.binaries=build/classes sonar.java.libraries=build/libs sonar.junit.reportPaths=build/test-results/test The general settings are documented at https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/analysis-parameters. There’s a prebuilt stage (odsComponentStageScanWithSonar) that you can use, see https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/component-pipeline.html#_odscomponentstagescanwithsonar for details. The team behind SonarQube also published SonarLint, a plugin currently available for IntelliJ, Eclipse, Visual Studio, VS Code and Atom that lets you scan while coding in your IDE. It also integrates with a SonarQube Server, so that you can scan with the servers rule settings. For further information please see https://www.sonarlint.org/intellij/howto.html. For the server connected mode, the SonarQube URL has to be set to your SonarQube deployment. Be aware that this does not connect you with the SonarQube Server in OpenShift, therefore you might have other rule settings locally than the ones set on server. That said, here’s what you need to do on your host to have a local SonarQube instance: docker pull sonarqube docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube ./gradlew sonarqube Running these commands will let you see at http://localhost:9000 your project reports, for any branch. Please, note that you are not running with an embedded database in this case, so it is only for temporary testing, do not expect historic report.","title":"SonarQube","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/sonarqube/index.html","titles":[{"text":"sonar-project.properties file","hash":"_sonar_project_properties_file","id":1},{"text":"Scanning in Jenkins pipelines","hash":"_scanning_in_jenkins_pipelines","id":2},{"text":"Scanning locally: SonarLint IDE Plugin","hash":"_scanning_locally_sonarlint_ide_plugin","id":3},{"text":"Scanning locally: SonarQube Docker Container","hash":"_scanning_locally_sonarqube_docker_container","id":4}]},"214":{"id":214,"text":"Table of Contents Required steps Update image tags of Jenkins deployments Update Jenkinsfiles in Git repositories Grant image-puller rights to your *-cd namespace Component resource constraints Notable changes Component deployment behaviour Jenkins slave NodeJS 8 New Tailor version Deprecation of shared-services namespace New features SonarQube quality gates Skopeo Common / Known Issues Learn all about how to update your OpenDevStack based project to ODS 2.x. It is assumed that you are updating from ODS 1.2.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (2.x), and trigger a deployment. Edit every Jenkinsfile. The shared library should point to 2.x, e.g.: library identifier: 'ods-library@2.x', retriever: modernSCM( [$class: 'GitSCMSource', remote: sharedLibraryRepository, credentialsId: credentialsId]) Also, the image used to run the pipeline in should point to 2.x, e.g.: odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-maven:2.x\", ... ) This step is not strictly necessary, but recommended as projects created with version 2.x will have those rights by default. Having this setup will enable you to use the *-cd namespace for common base images to reduce build times. Run the following, replacing $PROJECT_ID with your project ID: oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-test -n $PROJECT_ID-cd oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-dev -n $PROJECT_ID-cd Note that you need to be an admin on your project in order to run those commands. For more information, see ods-core#293. Newly created components now have memory quotas (ods-quickstarters#12) and CPU quotas (ods-quickstarters#74) configured. It is recommended (though not required) to configure resource constraints for existing components as well. If you are unsure which values to set, refer to the new defaults and check the current usage in the \"Metrics\" section in OpenShift. In the shared library, rollouts will be triggered manually now when no config/image trigger exists on the DeploymentConfig. The cd/jenkins-slave-nodejs8-angular image has been discontinued. Please update to cd/jenkins-slave-nodejs10-angular. For more information, see ods-quickstarters#71. Tailor has been updated to 0.11.0 in the Jenkins slaves, see ods-core#290. The shared-images namespace (containing common base images) has been removed from new ODS 2.0 installation. For existing installations, it is likely being kept for some time by the cluster administrator to enable users to react to this change. If you use a component based on the ds-jupyter-notebook or ds-rshiny quickstarters, you should switch to using the new authentication approach, which is uing an OpenShift OAuth proxy instead of a Nginx service. See ods-quickstarters#46. If you use the Airflow Quickstarter, its base images should now be built in your *-cd namespace See ods-quickstarters#60. It is now possible to opt-in to failing the build if the SonarQube scan fails the quality gate defined in SonarQube. To enable this, change the call of stageScanForSonarqube(context) to stageScanForSonarqube(context, true). For more information, see ods-jenkins-shared-library#22. When working with images, you may make use of Skopeo, which is now part of the Jenkins slaves. See ods-core#253. When provisioning new components, you must use a name that differs from the component type, otherwise some quickstarters fail. E.g. when creating a new component of type fe-react, you cannot name it fe-react but must choose another name like my-app. For more information, see https://github.com/opendevstack/ods-provisioning-app/issues/336.","title":"Update Guide to version 2.x for OpenDevStack users","component":"opendevstack","version":"5.x","name":"2x","url":"/opendevstack/5.x/update-guides/2x.html","titles":[{"text":"Required steps","hash":"_required_steps","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Update Jenkinsfiles in Git repositories","hash":"_update_jenkinsfiles_in_git_repositories","id":3},{"text":"Grant image-puller rights to your *-cd namespace","hash":"_grant_image_puller_rights_to_your_cd_namespace","id":4},{"text":"Component resource constraints","hash":"_component_resource_constraints","id":5},{"text":"Notable changes","hash":"_notable_changes","id":6},{"text":"Component deployment behaviour","hash":"_component_deployment_behaviour","id":7},{"text":"Jenkins slave NodeJS 8","hash":"_jenkins_slave_nodejs_8","id":8},{"text":"New Tailor version","hash":"_new_tailor_version","id":9},{"text":"Deprecation of shared-services namespace","hash":"_deprecation_of_shared_services_namespace","id":10},{"text":"New features","hash":"_new_features","id":11},{"text":"SonarQube quality gates","hash":"_sonarqube_quality_gates","id":12},{"text":"Skopeo","hash":"_skopeo","id":13},{"text":"Common / Known Issues","hash":"_common_known_issues","id":14}]},"215":{"id":215,"text":"Table of Contents New central ods namespace Update image tags of Jenkins deployments Jenkins Shared Library changes Renamed pipelines and stages Reduced boilerplate Changed agent images Changed context properties Different image tags Changes to Jenkins agent images General upgrade to Python 3.8 Airflow Cluster Jenkins agent no longer supported Learn all about how to update your OpenDevStack based project to ODS 3.x. It is assumed that you are updating from ODS 2.x. One of the biggest changes in ODS 3 is that there is a new central namespace, named ods. This namespace hosts the complete ODS installation, such as a provisioning app, Nexus, SonarQube, and images for Jenkins (master and agent). This central namespace replaces the previous namespaces cd (which hosted Nexus, SonarQube, etc.) as well as prov-test, prov-dev and prov-cd (which hosted the provisioning app). As a user, you will be affected by this change insofar as the images you use for the Jenkins master instance and Jenkins agent nodes will need to be retrieved from ods instead of cd (see next section). Further, depending on the migration done by the administrator, the URLs of Nexus, SonarQube and the provisioning app might have changed. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (3.x), and trigger a deployment. Note that you also need to change the namespace of the images from cd to ods (see above). Since ODS 2, it is also recommended to remove any image triggers from jenkins and webhook-proxy, so that any image changes are only rolled out by yourself. If you choose to remove the image trigger, ensure that the imagePullPolicy is set to Always to always get the latest 3.x image when you deploy. If the administrator of your ODS cluster chose to use a custom Bitbucket project for the 3.x installation, then you’ll need to set the environment variable ALLOWED_EXTERNAL_PROJECTS= for the webhook-proxy DeploymentConfig. Otherwise you will not be able to provision quickstarters. 3.x ships with the three pipelines instead of just one. In 2.x, the shared library offered one pipeline to build components, named odsPipeline. This has been renamed to odsComponentPipeline to make its purpose clearer and to distinguish it from the other pipelines, odsQuickstarterPipeline (to provision quickstarters) and odsOrchestrationPipeline (to orchestrate multiple repositories using the release manager). To provide backwards compatibility, odsPipeline is still available, but deprecated and will be removed in ODS 4. In line with this change, the stages have been renamed too, which also makes them easier to distinguish from custom stages written by yourself in the Jenkinsfile. As with the pipeline, the old stages are still available but slated for removal in ODS 4. Here’s a list of the changes: stageScanForSonarqube is now odsComponentStageScanWithSonar stageScanForSnyk is now odsComponentStageScanWithSnyk stageStartOpenshiftBuild is now odsComponentStageBuildOpenShiftImage stageDeployToOpenshift is now odsComponentStageRolloutOpenShiftDeployment stageUploadToNexus is now odsComponentStageUploadToNexus Please note the new casing (e.g. OpenShift instead of Openshift). Further, the new stages all take the same two arguments: IContext context and Map config = [:]. Please see the documentation for details. In particular, some options which would previously have been set on odsPipeline can and should be set on the stage where they are used (however all options have been kept for backwards compatibility). A Jenkinsfile in 2.x looks roughly like this: def final projectId = 'foo' def final componentId = 'bar' def final credentialsId = \"${projectId}-cd-cd-user-with-password\" def dockerRegistry node { dockerRegistry = env.DOCKER_REGISTRY } @Library('ods-jenkins-shared-library@2.x') _ odsPipeline( image: \"${dockerRegistry}/cd/jenkins-slave-golang:2.x\", projectId: projectId, componentId: componentId, branchToEnvironmentMapping: ['master': 'dev'] ) { context -> stageScanForSonarqube(context) stageStartOpenshiftBuild(context) stageDeployToOpenshift(context) } That is a lot of boilerplate. 3.x reduces this dramatically: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: ['master': 'dev'] ) { context -> odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) odsComponentStageRolloutOpenShiftDeployment(context) } Note that the new Jenkinsfile example already uses the new pipeline/stage names as outlined above. Apart from this, it makes use of a new config option, imageStreamTag which removes the need to read the DOCKER_REGISTRY environment variable. If you need it, the image config is still present (e.g. to reference images outside of OpenShift). projectId and componentId are now automatically configured, but can still be set if desired. Up to and including 2.x, Jenkins used \"slave images\" to do its work. They have been renamed to \"agent images\" in 3.x. All new agent images are located in the new central namespace ods. Therefore, you need to update the references in your Jenkinsfile (as shown above): cd/jenkins-slave-base is now ods/jenkins-agent-base cd/jenkins-slave-golang is now ods/jenkins-agent-golang cd/jenkins-slave-maven is now ods/jenkins-agent-maven cd/jenkins-slave-nodejs10-angular is now ods/jenkins-agent-nodejs10-angular cd/jenkins-slave-python is now ods/jenkins-agent-python cd/jenkins-slave-scala is now ods/jenkins-agent-scala The context object available to use in stages has been slimmed down by removing properties unlikely to be useful to author stages (such as resource constraints of the Jenkins agent pod). Please review the documentation in case your authored stages make heavy use of the context object. One notable change to the context object is that bitbucketHost did not include the scheme previously. Now, bitbucketHost is an alias for bitbucketUrl which does include the scheme. This change was made to align the property with nexusHost and nexusUrl, which both include the scheme as well. If you used context.bitbucketHost in one of your Jenkinsfile`s, you may now use `context.bitbucketHostWithoutScheme. A notable addition to the context object is a new property issueId, which exposes the Jira issue ID (such as 123 from branch feature/FOO-123-bar-baz). Previously, images produced by odsComponentStageBuildOpenShiftImage where tagged with context.tagversion, which consisted of the Jenkins build number and the (shortened) Git commit (e.g. 7-cd3e9082). This made it difficult for other processes (unaware of the Jenkins build number) to find those images. The images are now tagged with just the (shortened) Git commit (e.g. cd3e9082). This change also has the huge benefit that it allows to promote images between environments (avoiding to rebuild them) using the new stage odsComponentStageImportOpenShiftImageOrElse. Some agent images (jenkins-agent-maven, jenkins-agent-nodejs10-angular, jenkins-agent-scala) exposed the environment variables NEXUS_HOST and NEXUS_USERNAME/NEXUS_PASSWORD/NEXUS_AUTH. This was not done intentionally, but as a side effect of using those variables during image build time. In 3.x, that has been cleaned up. Now those variables are passed as build arguments to the image build, which means they are no longer accessible as environment variables in the running container. Nexus credentials can and should be accessed from the pipeline context (context.nexusUrl, context.nexusUsername and context.nexusPassword). As a consequence, if a Jenkinsfile relies on the presence of those environment variables without setting them explicitly using withEnv, it will fail to run in 3.x. That said, the Jenkinsfile templates which shipped by default with the quickstarters did not rely on the environment variables - with the exception of fe-ionic which did not set NEXUS_HOST explicitly in the Build stage. Jenkins agent jenkins-agent-python as well as all python related quickstarters (be-python-flask, ds-jupyter-notebook and ds-ml-service) have been upgraded to python 3.8. This is not affecting default provisioned Jenkinsfile for ds-jupyter-notebook nor be-python-flask quickstarters that exist before ODS 3.x. But, ds-ml-service provisoned quickstarters before ODS 3.x need to slightly modify its Jenkinsfile before upgrading to ODS 3.x by just avoiding running any pip install --user (see new Jenkinsfile.template to get a suggested fix, basically using virutalenv; which is the recommended way of working when requiring building python packages). If you provisioned airflow-cluster quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. Therefore, the jenkins-slave-airflow:2.x can be shifted to jenkins-agent-python:3.x when upgrading to ODS 3.x.","title":"Update Guide to version 3.x for OpenDevStack users","component":"opendevstack","version":"5.x","name":"3x","url":"/opendevstack/5.x/update-guides/3x.html","titles":[{"text":"New central ods namespace","hash":"_new_central_ods_namespace","id":1},{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":2},{"text":"Jenkins Shared Library changes","hash":"_jenkins_shared_library_changes","id":3},{"text":"Renamed pipelines and stages","hash":"_renamed_pipelines_and_stages","id":4},{"text":"Reduced boilerplate","hash":"_reduced_boilerplate","id":5},{"text":"Changed agent images","hash":"_changed_agent_images","id":6},{"text":"Changed context properties","hash":"_changed_context_properties","id":7},{"text":"Different image tags","hash":"_different_image_tags","id":8},{"text":"Changes to Jenkins agent images","hash":"_changes_to_jenkins_agent_images","id":9},{"text":"General upgrade to Python 3.8","hash":"_general_upgrade_to_python_3_8","id":10},{"text":"Airflow Cluster Jenkins agent no longer supported","hash":"_airflow_cluster_jenkins_agent_no_longer_supported","id":11}]},"216":{"id":216,"text":"Table of Contents Update image tags of Jenkins deployments Jenkins Shared Library What’s new? Required changes to adopt 4.x Notes about quickstarters ds-ml-service quickstarter no longer supported ds-jupyter-notebook renamed to ds-jupyter-lab Learn all about how to update your OpenDevStack based project to ODS 4.x. It is assumed that you are updating from ODS 3.x. Go into your OpenShift *-cd namespace and edit (via \"Actions\" > \"Edit\") the deployments (jenkins and webhook-proxy) to point to the new image tags (4.x), and trigger a deployment. ODS has had support for the OpenShift-specific DeploymentConfig resources (controlled by ReplicationControllers) only so far. Now, Kubernetes-native Deployment resources (controlled by ReplicaSets) can be used as well in the component pipeline. Deployment resources are recommended by OpenShift going forward, see https://docs.openshift.com/container-platform/latest/applications/deployments/what-deployments-are.html. Helm 3 is supported now in the component pipeline. This means that Helm (with plugins helm-diff and helm-secrets) can be used as an alternative to Tailor (OpenShift Templates) to define Kubernetes resources in your repository. Helm has some limitations in OpenShift 3.11, but it is the recommended way forward on OpenShift 4. Tailor will be phased out at some point in the future when OpenShift 3.11 is no longer supported by ODS. If you do not author Kubernetes resources in your repository, now is a great time to start with Helm. If you already define OpenShift Templates in your repository and want to switch to Helm, read the migration guide from Tailor to Helm. All ODS component stages understand the branch/branches options now. Those options allow pipeline authors to control for which branches a specific stage should run. As with the branchToEnvironmentMapping option, three types of branch references are supported: exact match (e.g. master, develop - matching branches named master, develop) prefix match (e.g. release/, 'feature/' - matching branches named release/1, feature/foobar) wildcard match (* - matching all branches) If you use Git submodules in your repository, the submodules will now be checked out by Jenkins. This is done automatically when a .gitmodules file is present. Update @Library('ods-jenkins-shared-library@3.x') _ to @Library('ods-jenkins-shared-library@4.x') _ and point to agent images with the 4.x tag, e.g. change imageStreamTag: 'ods/jenkins-agent-golang:3.x' to imageStreamTag: 'ods/jenkins-agent-golang:4.x'. Application images are built in your -cd project now. Previously they were built in your -dev and *-test project. While the update itself should be completely automatic, there are two consequences: You can delete BuildConfig and ImageStream resources from your OpenShift templates (in fact odsComponentStageBuildOpenShiftImage does not run tailor apply anymore). If you made modifications to a BuildConfig you’ll need to re-apply those changes in your *-cd project once the BuildConfig has been migrated there by a pipeline run. ODS 3.x introduced odsComponentStageImportOpenShiftImageOrElse, which allowed to execute some stages only if a container image could not be imported from another namespace or already existed in the current namespace. In ODS 4.x, the check for existing images is only performed in the *-cd namespace. To reflect this, odsComponentStageImportOpenShiftImageOrElse has been deprecated, and is now aliased to the new method, odsComponentFindOpenShiftImageOrElse. The pipeline option imagePromotionSequences has been removed as it is not applicable anymore. odsComponentStageRolloutOpenShiftDeployment rolls out all deployment resources together now. If you had multiple DeploymentConfig resources previously, you had to target each one by specifying the config option resourceName. This is no longer possible - instead the stage iterates over all DeploymentConfig resources with the component label (app=${projectId}-${componentId}). Changes must be made to pipelines that have multiple deployments, such as components based on the ds-jupyter-notebook and ds-rshiny quickstarter. The auto-cloning feature has been removed. If you used this to create ad-hoc namespaces per Jira issue, this is no longer possible now. Changes must be made if your pipeline configured autoCloneEnvironmentsFromSourceMapping. Please see https://github.com/opendevstack/ods-jenkins-shared-library/issues/374 for more information. Versioned development environments in orchestration pipeline are not created automatically anymore. Note that it is still possible to use separate development environments per version, but the namespaces have to be created manually upfront. Take this into account if your pipeline configures versionedDevEnvs: true. Please see https://github.com/opendevstack/ods-jenkins-shared-library/pull/513 for more information. odsComponentStageRolloutOpenShiftDeployment changed its return type because it now supports Deployment resources, as well as multiple deployment resources. Therefore, it returns a map now, where the keys are /, e.g. Deployment/foo and DeploymentConfig/bar. This only affects pipelines that make use of this return value, such as components based on the ds-ml-service and be-fe-mono-repo-plain quickstarter. If you provisioned ds-ml-service quickstarter, please note that it has been moved out from the officially supported quickstarters (ods-quickstarters) repository and moved to extra-quickstarters. It has been set as deprecated due to being superseded by other OpenSource projects like MLflow and Cloud SaaS solutions. The quickstarter ds-jupyter-lab is the new name for the known ds-jupyter-notebook. Which also comes with the newest JupyterLab version 3.","title":"Update Guide to version 4.x for OpenDevStack users","component":"opendevstack","version":"5.x","name":"4x","url":"/opendevstack/5.x/update-guides/4x.html","titles":[{"text":"Update image tags of Jenkins deployments","hash":"_update_image_tags_of_jenkins_deployments","id":1},{"text":"Jenkins Shared Library","hash":"_jenkins_shared_library","id":2},{"text":"What’s new?","hash":"_whats_new","id":3},{"text":"Deployment resources","hash":"_deployment_resources","id":4},{"text":"Helm","hash":"_helm","id":5},{"text":"branch/branches options for all stages","hash":"_branchbranches_options_for_all_stages","id":6},{"text":"Support of gitmodules","hash":"_support_of_gitmodules","id":7},{"text":"Required changes to adopt 4.x","hash":"_required_changes_to_adopt_4_x","id":8},{"text":"Notes about quickstarters","hash":"_notes_about_quickstarters","id":9},{"text":"ds-ml-service quickstarter no longer supported","hash":"_ds_ml_service_quickstarter_no_longer_supported","id":10},{"text":"ds-jupyter-notebook renamed to ds-jupyter-lab","hash":"_ds_jupyter_notebook_renamed_to_ds_jupyter_lab","id":11}]},"217":{"id":217,"text":"This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@3.x') _ odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', branchToEnvironmentMapping: [ 'master': 'dev', // 'release/': 'test' ] ) { context -> odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage } odsComponentStageScanWithSonar(context) odsComponentStageBuildOpenShiftImage(context) } odsComponentStageRolloutOpenShiftDeployment(context) } The version in @Library can be any Git revision, such as a branch (e.g. master or 2.x), a tag (e.g. v2.0) or even a specific commit. There are many built-in stages like odsComponentStageScanWithSonar that you can use, please see Stages for more details. odsComponentPipeline can be customized by passing configuration options like this: odsComponentPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x', dockerDir: 'foo' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. notifyNotGreen Whether to send notifications if the build is not successful. Enabled by default. emailextRecipients Notify to this list of emails when notifyNotGreen is enabled. It is empty by default. branchToEnvironmentMapping Define which branches are deployed to which environments, see Git Workflow / Branch to Environment Mapping projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. environmentLimit Number of environments to allow when auto-cloning environments. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. sonarQubeBranch Please use option branch on odsComponentStageScanWithSonar. failOnSnykScanVulnerabilities Deprecated in 3.x! Please use option failOnVulnerabilities on odsComponentStageScanWithSnyk. openshiftBuildTimeout Deprecated in 3.x! Please use option buildTimeoutMinutes on odsComponentStageBuildOpenShiftImage. openshiftRolloutTimeout Deprecated in 3.x! Please use option deployTimeoutMinutes on odsComponentStageRolloutOpenShiftDeployment. testResults Configurable location for xunit test results, in case the build does not put them into build/test-results/test. commitGitWorkingTree Defaulting to false, if set to true, any changes in the working directory added with git add will be committed to the current branch and pushed. When you write custom stages inside the closure passed to odsComponentPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsComponentPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsComponentPipeline starts. credentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). tagversion The tagversion is made up of the build number and the first 8 chars of the commit SHA. nexusUrl Nexus URL - value taken from NEXUS_URL. If NEXUS_URL is not present, it will default to NEXUS_HOST (which also includes the scheme). nexusHost is an alias for nexusUrl. nexusUsername Nexus username. nexusPassword Nexus password. nexusUrlWithBasicAuth Nexus URL, including username and password as BasicAuth. nexusHostWithBasicAuth is an alias for nexusUrlWithBasicAuth. sonarQubeEdition Edition of SonarQube in use, determined by SONAR_EDITION (defaults to community). environment The environment which was chosen as the deployment target, e.g. dev. targetProject Target project, based on the environment. E.g. foo-dev. cdProject CD project. E.g. foo-cd. groupId Group ID, defaults to: org.opendevstack.. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth. selector Selector common to all resources of component, defaults to app=${projectId}-${componentID} (e.g. app=foo-be-auth). gitUrl Git URL of repository gitBranch Git branch for which the build runs. gitCommit Git commit SHA to build. shortGitCommit Short Git commit SHA (first 8 chars) to build. gitCommitAuthor Git commit author. gitCommitMessage Git commit message (sanitized). gitCommitRawMessage Git commit message (raw). gitCommitTime Git commit time in RFC 3399. issueId Jira issue ID if any present in either commit message or branch name (e.g. 123 from commit message FOO-123: Bar or branch feature/FOO-123-bar). If the issue ID is present in both, the branch name has precedence. openshiftHost OpenShift host - value taken from OPENSHIFT_API_URL. odsSharedLibVersion ODS Jenkins shared library version, taken from reference in Jenkinsfile. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. dockerDir The docker directory to use when building the image in openshift. Defaults to docker. The shared library does not impose which Git workflow you use. Whether you use git-flow, GitHub flow or a custom workflow, it is possible to configure the pipeline according to your needs by configuring the pipeline option branchToEnvironmentMapping. The setting could look like this: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'hotfix/': 'hotfix', '*': 'review' ] There are three ways to reference branches: Fixed name (e.g. master) Prefix (ending with a slash, e.g. hotfix/) Any branch (*) Matches are made top-to-bottom. For prefixes / any branch, a more specific environment might be selected if: the branch contains a ticket ID and a corresponding env exists in OpenShift. E.g. for mapping \"feature/\": \"dev\" and branch feature/foo-123-bar, the env dev-123 is selected instead of dev if it exists. the branch name corresponds to an existing env in OpenShift. E.g. for mapping \"release/\": \"rel\" and branch release/1.0.0, the env rel-1.0.0 is selected instead of rel if it exists. If you use git-flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', 'develop': 'dev', 'release/': 'rel', 'hotfix/': 'hotfix', '*': 'preview' ] If you use GitHub Flow, the following config fits well: branchToEnvironmentMapping: [ 'master': 'prod', '*': 'preview' ] If you use a custom workflow, the config could look like this: branchToEnvironmentMapping: [ 'production': 'prod', 'master': 'dev', 'staging': 'uat' ] The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsComponentPipeline( branchToEnvironmentMapping: [:], podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. If you are working with large files (e.g.: binary files, media files, files bigger than 5MB…​), you can follow the following steps: Check this HOWTO about Git LFS Track your large files in your local clone, as explained in previous step Enable Git LFS in your repository (if Bitbucket: under repository’s settings main page you can enable it) NOTE: if already having a repository with large files and you want to migrate it to using git LFS: git lfs migrate By default, the component pipeline uses existing OpenShift resources, and just creates new images / deployments related to them. However, it is possible to control all OpenShift resources in code, following the infrastructure-as-code approach. This can be done by defining the resources as OpenShift templates in the directory openshift of the repository, which will then get applied by Tailor when running the pipeline. The advantage of this approach: All changes to OpenShift resources are traceble: who did the change and when? Moving your application between OpenShift projects or even clusters is trivial Changes to your application code that require a change in configuration (e.g. a new environment variable) as well can be done together in one commit. If you have an existing component for which you want to enable this feature, you simply need to run: mkdir -p openshift tailor -n foo-dev export -l app=foo-bar > openshift/template.yml Commit the result and the component pipeline should show in the ouput whether there has been drift and how it was reconciled. When using this approach, you need to keep a few things in mind: Any changes done in the OpenShift web console will effectively be reverted with each deploy. When you store templates in code, all changes must be applied to them. You can always preview the changes that will happen by running tailor diff from your local machine. DeploymentConfig resources allow to specify config and image triggers (and ODS configures them by default like this). When deploying via Tailor, it is recommended to remove the image trigger, otherwise you might trigger two deployments: one when config (such as an environment variable) changes, and one when the image changes. When you remove the image trigger, it is crucial to add the internal registry to the image field, and to configure imagePullPolicy: Always for the container (otherwise you might roll out old images). If you want to use encrypted secrets with Tailor, you have to create a keypair for Jenkins so that the pipeline can use it to decrypt the parameters. The easiest way to do this is to create an OpenShift secret named tailor-private-key and sync it with Jenkins as a credential. Example: tailor secrets generate-key jenkins@example.com oc -n foo-cd create secret generic tailor-private-key --from-file=ssh-privatekey=private.key oc -n foo-cd label secret tailor-private-key credential.sync.jenkins.openshift.io=true Controlling your OpenShift resources in source code enables a lot of other use cases as well. For example, you might want to preview changes to a component before merging the source code. By using Tailor to deploy your templates, you can create multiple running components from one repository, e.g. one per feature branch. Following are some steps how to achieve this: First, add 'feature/': 'dev' to the branchToEnvironmentMapping. Then, create new variables in the pipeline block: def componentSuffix = context.issueId ? \"-${context.issueId}\" : '' def suffixedComponent = context.componentId + componentSuffix With this in place, you can adapt the rollout stage: odsComponentStageRolloutOpenShiftDeployment( context, [ tailorSelector: \"app=${context.projectId}-${suffixedComponent}\", tailorParams: [\"COMPONENT_SUFFIX=${componentSuffix}\"] ] ) And finally, in your openshift/template.yml, you need to add the COMPONENT_SUFFIX parameter and append ${COMPONENT_SUFFIX} everywhere the component ID is used in deployment relevant resources (such as Service, DeploymentConfig, Route). That’s all you need to have automatic previews! You might want to clean up when the code is merged, which can be achieved with something like this: stage('Cleanup preview resources') { if (context.environment != 'dev') { echo \"Not performing cleanup outside dev environment\"; return } def mergedIssueId = org.ods.services.GitService.mergedIssueId(context.projectId, context.repoName, context.gitCommitRawMessage) if (mergedIssueId) { echo \"Perform cleanup of suffix '-${mergedIssueId}'\" sh(\"oc -n ${context.targetProject} delete all -l app=${context.projectId}-${context.componentId}-${mergedIssueId}\") } else { echo \"Nothing to cleanup\" } } The shared library already sets the build status of the built commit. It also provides convenience methods on BitbucketService to interact with pull requests: String createPullRequest(String repo, String fromRef, String toRef, String title, String description, List reviewers) creates a pull request in repo from branch fromRef to toRef. reviewers is a list of bitbucket user names. List getDefaultReviewers(String repo) returns a list of bitbucket user names (not display names) that are listed as the default reviewers of the given repo. String getDefaultReviewerConditions(String repo) returns all default reviewer conditions of the given repo, which can be parsed using readJSON. String getPullRequests(String repo, String state = 'OPEN') returns all open pull requests, which can be parsed using readJSON. Map findPullRequest(String repo, String branch, String state = 'OPEN') tries to find a pull request for the given branch, and returns a map with its ID and target branch. void postComment(String repo, int pullRequestId, String comment) allows to add comment to the PR identified by pullRequestId. To make use of these methods, you need to get an instance of the BitbucketService in your Jenkinsfile like this: Jenkinsfile import org.ods.services.ServiceRegistry import org.ods.services.BitbucketService def sayHello(def context) { stage('Say Hello') { def bitbucketService = ServiceRegistry.instance.get(BitbucketService) bitbucketService.postComment(context.repoName, 1, \"Hello world\") } } If the subject of the built commit message contains [ci skip], [skip ci] or ***NO_CI***, the pipeline is skipped. # skip pipeline (one-line commit) $ git commit -m \"docs: update README [ci skip]\" # run pipeline (multi-line commit) as it is not part of the subject $ git commit -m \"docs: update README - add section installation - [ci skip]\" The Jenkins build status will be set to NOT_BUILT, the Bitbucket build status to SUCCESSFUL (as there is no \"skipped\" state). The pipeline will start to execute initially, but abort before launching any agent nodes or starting any of the stages defined in the Jenkinsfile. Each built-in stage (like odsComponentStageScanWithSonar) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsComponentStageScanWithSonar(context, [branch: 'production']) Checks if an image for the current commit exists already, otherwise executes the given closure. Example: odsComponentFindOpenShiftImageOrElse(context) { stage('Build') { // custom stage to build your application package } odsComponentStageBuildOpenShiftImage(context) } The step can be customized using the options resourceName and imageTag. Using this step in your Jenkinsfile allows you to avoid building a container image for the same Git commit multiple times, reducing build times and increasing reliability as you can promote the exact same image from one environment to another. Keep in mind that image lookup works by finding an image tagged with the current Git commit. If you merge a branch into another using a merge commit, the current Git commit SHA will differ from the previously built image tag, even if the actual contents of the repository are the same. To ensure image importing kicks in, use the --ff-only option on git merge (this can also be enabled for pull requests in Bitbucket under \"Merge strategies\"). There are a few consequences when doing so, which should be kept in mind: No merge commit is created, which has the downside that you do not see when a PR was merged, and that the merge commit is a convenient way to find the associated PR. Further, if the latest commit on a branch which you want to merge contains [ci skip], beware that the build on the target branch will also be skipped. That siad, having no merge commit has the upside that your Git history is not polluted by merge commits. Enforcing a fast-forward merge prevents you from merging a branch which is not up-to-date with the target branch. This has the downside that before merging, you may need to rebase your branch or merge the target branch into your branch if someone else updated the target branch in the meantime. While this may cause extra work, it has the upside that you cannot accidentally break the target branch (e.g. tests on your branch may work based on the outdated target branch, but fail after the merge). In summary, using git merge --ff-only provides safety, a clean history and allows to promote the exact same image between environments. The \"SonarQube Analysis\" stage scans your source code and reports findings to SonarQube. The configuration of the scan happens via the sonar-project.properties file in the repository being built. If your SonarQube server edition allows to scan multiple branches (any commercial edition does), then this stage will automatically decorate pull requests in Bitbucket with feedback from SonarQube (if the PR already exists at the time of the Jenkins pipeline run). In debug mode, the sonar-scanner binary is started with the -X flag. If no sonar.projectVersion is specified in sonar-project.properties, it is set to the shortened Git SHA. Option Description analyzePullRequests boolean Whether to analyze pull requests and decorate them in Bitbucket. Turned on by default, however a scan is only performed if the branch property allows it. branch String Branch to scan. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to scan. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and \\ all branches (). Defaults to master for the community edition of SonarQube, and for all other editions (which are capable of handling multiple branches). longLivedBranches List Branch(es) for which no PR analysis should be performed. If not set, it will be extracted from branchToEnvironmentMapping of the context. requireQualityGatePass boolean Whether to fail the build if the quality gate defined in the SonarQube project is not reached. Defaults to false. resourceName String Name of BuildConfig/ImageStream of the image that we want to scan (defaults to context.componentId). BuildOpenShiftImageStage puts the imageRef into a map with the resourceName as key. In order to be able to receive the imageRef for scanning, the resourceName needs to be the same as in BuildOpenShiftImageStage. The \"Aqua Security Scan\" stage scans an image that was previously built in that same pipeline run. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan result on the Aqua platform. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. In case the Aqua scan detects remotely exploitable cirtical vulnerabilities with solutions the build fails until the solution is implemented. To get started, make sure you have a ConfigMap in OpenDevStack project namespace (usually ods) in OpenShift that has these fields: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: registry: Refers to a name for the image registry given in the Aqua platform by an Aqua platform admin. secretName: Name of a Secret that contains the credentials of the Aqua platform user that is used for executing the scan. That user needs to have scanner rights. This field is optional, if the property doesn’t exists the system will use the credential 'cd-user-with-password'. url: Base URL of the Aqua platform (including scheme). enabled: If true, the scan always occur in all projects. False to disable the scan. nexusRepository: Name of the repository in Nexus instance to store the results of analysis in HTML format. alertEmails: Optional field. It contains the emails splitted by ',' to send error notifications regarding with Aqua analysis (misconfigurations, etc…​). The mail server must be configured in Jenkins to send the emails. Is possible to disable the analysis at project level. for that is necessary to add in the ConfigMap new properties e.g. like this: ... metadata: name: aqua ... data: registry: secretName: url: enabled: nexusRepository: alertEmails: project.key1.enabled: project.key2.enabled: project.key1.enabled: Property to indicate that key1 (being key1 the key of the project) has the aqua analysis disabled. project.key2.enabled: The same but for key2 project. The \"Trivy Security Scan\" stage scans the filesystem of the cloned repository using Trivy and generates a SBOM report, with CycloneDX format by default. Check Trivy supported formats here. As a result, a Bitbucket Code Insight entry is added to the git commit (in Bitbucket) that basically contains a link to the scan report stored in Nexus. The Bitbucket Code Insight entry can be seen in a pull request. The pull request in Bitbucket shows the Code Insight of the latest commit of the PR. To get started, edit your Jenkinsfile and add the Trivy stage: ) { context -> ... odsComponentStageScanWithTrivy(context) ... } Option Description additionalFlags List Additional flags for the Trivy CLI. Please refer to the official Trivy CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--debug', '--timeout=10m'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). format String Set the format for the generated report. Defaults to cyclonedx. nexusDataBaseRepository String Name of the Nexus repository used to proxy the location of the database of vulnerabilities located in GitHub. Defaults to docker-group-ods. nexusReportRepository String Name of the Nexus repository where the scan report will be stored. Defaults to leva-documentation. pkgType String Comma-separated list of vulnerability types to scan. Defaults to os,library. reportFile String Name of the file that will be archived in Jenkins and uploaded in Nexus. Defaults to trivy-sbom.json. resourceName String Name of component that we want to scan. Defaults to context.componentId. scanners String Comma-separated list of what security issues to detect. Defaults to vuln,config,secret,license. The \"Snyk Security Scan\" stage performs two tasks: It uploads your 3rd party dependencies including their licenses for monitoring. Snyk will then notify developers about new vulnerabilities per email once they are reported to the Snyk Vulnerability Database. It analyses your 3rd party dependencies including their licenses and breaks the build if vulnerable versions are found. To get started, setup an organisation in snyk.io with exactly the same name as your ODS project name. Under \"Settings\", create a service account for this organisation and make a note of the displayed token. Edit your Jenkinsfile and add the Snyk stage: ) { context -> ... odsComponentStageScanWithSnyk(context, [snykAuthenticationCode: ]) ... } It is recommended to read your authentication token dynamically, e.g. from an environment variable or a credential in your Jenkins master. Option Description additionalFlags List Additional flags for the Snyk CLI. Please refer to the official Snyk CLI reference for possible options and don’t forget to take the CLI version of your ODS installation into account. The value of additionalFlags must be a list in which the entries have the official flag name and a possible value. Example: ['--all-sub-projects', '--show-vulnerable-paths=all'] branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildFile String Build file from which to gather dependency information. Defaults to build.gradle. failOnVulnerabilities boolean Whether to fail the build when vulnerabilities are found. Defaults to true. organisation String Name of the Snyk organisation. Default to context.projectId. projectName String Name of the Snyk project name. Default to context.componentId. severityThreshold String Severity threshold for failing. If any found vulnerability has a severity equal or higher to the threshold, the snyk test will return with a failure status. Possible values are low, medium, high. Defaults to low. snykAuthenticationCode String Required! Authentication token of a service account within your organisation. Triggers (and follows) a build in the BuildConfig related to the repository being built. The resulting image is tagged with context.shortGitCommit. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). buildArgs Map Pass build arguments to the image build process. buildTimeoutMinutes Integer Timeout of build (defaults to 15 minutes). buildTimeoutRetries Integer Adjust retries to wait for the build pod status (defaults to 5). dockerDir String Docker context directory (defaults to docker). extensionImageLabels Map Extra image labels added into imageLabels imageLabels Map Pass labels which should be added on the image. Each label will be prefixed with ext.. imageTag String Image tag to apply (defaults to context.shortGitCommit). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). Imports an image from another namespace. By default, the source image is identified using the commit which triggered the pipeline run. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). imagePullerSecret String Name of image-puller secret (optional, used when pulling images from an external source cluster). resourceName String Name of BuildConfig/ImageStream to use (defaults to context.componentId). sourceProject String OpenShift project from which to import the image identified by resourceName. sourceTag String Image tag to look for in the sourceProject (defaults to context.shortGitCommit). targetTag String Image tag to apply to the imported image in the target project (defaults to sourceTag). Rolls out the current resources as defined in the component. Without any configuration the stage tries to guess what a user expects. If the component contains a directory name chart, a Helm deployment is assumed. If the component contains a directory name openshift, a Tailor deployment is assumed. If neither exists a Tailor deployment is assumed. Triggers a release or update of an release with Helm. The stage will use the helm command to trigger the release. The command will be executed in the directory referenced by chartDir. If the directory does not exist, the stage will fail. The images used in the deployment will not be tagged or otherwise modified. HELM_DIFF_IGNORE_UNKNOWN_FLAGS=true helm -n play-dev secrets diff upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=example-dev \\ --set imageTag=deadbeef69cafebabe \\ --no-color --three-way-merge --normalize-manifests \\ example-release . || true # run the upgrade helm -n play-dev secrets upgrade \\ --install --atomic --force \\ -f values.yaml \\ --set registry=registry.example.com \\ --set componentId=example-helm-chart \\ --set imageNamespace=play-dev \\ --set imageTag=deadbeef69cafebabe \\ example-release . Triggers (and follows) a rollout of the DeploymentConfig related to the repository being built. It achieves this by tagging the image built in odsComponentStageBuildOpenShiftImage with latest. This might already trigger a rollout based on an existing ImageTrigger. If none is set, the stage will start a manual rollout. If the directory referenced by openshiftDir exists, the templates in there will be applied using Tailor. In this case, it is recommended to remove any image triggers to avoid duplicate rollouts (one when configuration changes due to a config trigger and one when the image is tagged to latest). In addition to the configuration options below, one can use e.g. a Tailorfile to adjust the behaviour of Tailor as needed. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). chartDir String Directory of Helm chart (defaults to chart). deployTimeoutMinutes Integer Adjust timeout of rollout (defaults to 5 minutes). Caution: This needs to be aligned with the deployment strategy timeout (timeoutSeconds) and the readiness probe timeouts (initialDelaySeconds + failureThreshold * periodSeconds). deployTimeoutRetries Integer Adjust retries to wait for the pod during a rollout (defaults to 5). helmAdditionalFlags List List of additional flags to be passed verbatim to to helm upgrade (empty by default). Only relevant if the directory referenced by chartDir exists. helmDefaultFlags List List of default flags to be passed verbatim to to helm upgrade (defaults to ['--install', '--atomic']). Typically these should not be modified - if you want to pass more flags, use helmAdditionalFlags instead. Only relevant if the directory referenced by chartDir exists. helmDiff boolean Whether to show diff explaining changes to the release before running helm upgrade (true by default). Only relevant if the directory referenced by chartDir exists. helmEnvBasedValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. These must contain a suffix called '.env.yml' - which will be replaced during rollout and deployment, and then added to helmValueFiles Passing a string literal of 'values.env.yaml' will be expanded to their respective environments. For example: 'values.env.yaml' will become 'values.dev.yaml', 'values.test.yaml' or 'values.prod.yaml'. That means creating the usual files that are named after their respective environment are parsed as usual. helmPrivateKeyCredentialsId String Credentials name of the private key used by helm-secrets (defaults to ${context.cdProject}-helm-private-key). The fingerprint must match the one specified in .sops.yaml. Only relevant if the directory referenced by chartDir exists. helmReleaseName String Name of the Helm release (defaults to context.componentId). Change this value if you want to install separate instances of the Helm chart in the same namespace. In that case, make sure to use {{ .Release.Name }} in resource names to avoid conflicts. Only relevant if the directory referenced by chartDir exists. helmValues Map Key/value pairs to pass as values (by default, the key imageTag is set to the config option imageTag). Only relevant if the directory referenced by chartDir exists. helmValuesFiles List List of paths to values files (empty by default). Only relevant if the directory referenced by chartDir exists. imageTag String Image tag on which to apply the latest tag (defaults to context.shortGitCommit). openshiftDir String Directory with OpenShift templates (defaults to openshift). selector String Selector scope used to determine which resources are part of a component (defaults to context.selector). tailorExclude String Resource kind exclusion used by Tailor (defaults to bc,is). Only relevant if the directory referenced by openshiftDir exists. tailorParamFile String Path to Tailor parameter file (defaults to none). Only relevant if the directory referenced by openshiftDir exists. tailorParams List Additional parameters to pass to Tailor (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPreserve List Paths to preserve in the live configuration (defaults to []). Only relevant if the directory referenced by openshiftDir exists. tailorPrivateKeyCredentialsId String Credentials name of the private key used by Tailor (defaults to ${context.cdProject}-tailor-private-key). Only relevant if the directory referenced by openshiftDir exists. tailorSelector String Selector scope used by Tailor (defaults to config option selector). Only relevant if the directory referenced by openshiftDir exists. tailorVerify boolean Whether Tailor verifies the live configuration against the desired state after application (defaults to true). Only relevant if the directory referenced by openshiftDir exists. When tailor does the rollout, all the created or updated OpenShift resources are automatically labeled to ease their management. This is in contrast to helm rollouts which rely on the chart providing the desired labels. Add labels either via the chart directly or via supplying them in the values or values files. Detailed information about the labelling can be found here. Triggers the upload of an artifact to Nexus. Implementation is based on https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api Option Description artifactId String For repositoryType=maven2: default is context.componentId branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). distributionFile String Filename. Defaults to ${context.componentId}-${context.tagversion}.tar.gz groupId String For repositoryType=maven2: default is the groupId on project level, or in case not set at all org.opendevstack.${context.projectId} repository String Name of the Nexus repository. Defaults to candidates. repositoryType String Type of the Nexus repository. Defaults to maven2. targetDirectory String For repositoryType=raw: default is context.projectId version String For repositoryType=maven2: default is context.tagversion Copies a source image into the project. This is useful to get images into the OpenShift registry so that release manager will accept all images. The primary intention is for helm charts so that external images can be imported. Option Description branch String Branch to run stage for. Example: 'master'. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). branches List Branches to run stage for. Example: ['master', 'develop']. Next to exact matches, it also supports prefixes (e.g. feature/) and all branches (*). sourceCredential String sourceCredential is the token to use, if any, to access the source registry sourceImageUrlIncludingRegistry String Source image to import This needs to be in the following format: [REGISTRY/]REPO/IMAGE[:TAG] tagIntoTargetEnv Boolean true will tag the image from the -cd namespace into the targetEnvironment that the pipeline is running for verifyTLS Boolean verifyTLS allows the stage to ignore certificate validation errors. The default is to verify certificate paths","title":"Component Pipeline","component":"opendevstack","version":"5.x","name":"component-pipeline","url":"/opendevstack/5.x/jenkins-shared-library/component-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Git Workflow / Branch to Environment Mapping","hash":"_git_workflow_branch_to_environment_mapping","id":4},{"text":"Examples","hash":"_examples","id":5},{"text":"Advanced","hash":"_advanced","id":6},{"text":"Agent customization","hash":"_agent_customization","id":7},{"text":"Git LFS (Git Large File Storage extension)","hash":"_git_lfs_git_large_file_storage_extension","id":8},{"text":"Deploying OpenShift resources from source code","hash":"_deploying_openshift_resources_from_source_code","id":9},{"text":"Interacting with Bitbucket","hash":"_interacting_with_bitbucket","id":10},{"text":"Skipping pipeline runs","hash":"_skipping_pipeline_runs","id":11},{"text":"Stages","hash":"_stages","id":12},{"text":"odsComponentFindOpenShiftImageOrElse","hash":"_odscomponentfindopenshiftimageorelse","id":13},{"text":"odsComponentStageScanWithSonar","hash":"_odscomponentstagescanwithsonar","id":14},{"text":"Options","hash":"_options","id":15},{"text":"odsComponentStageScanWithAqua","hash":"_odscomponentstagescanwithaqua","id":16},{"text":"odsComponentStageScanWithTrivy","hash":"_odscomponentstagescanwithtrivy","id":17},{"text":"Options","hash":"_options_2","id":18},{"text":"odsComponentStageScanWithSnyk","hash":"_odscomponentstagescanwithsnyk","id":19},{"text":"Options","hash":"_options_3","id":20},{"text":"odsComponentStageBuildOpenShiftImage","hash":"_odscomponentstagebuildopenshiftimage","id":21},{"text":"Options","hash":"_options_4","id":22},{"text":"odsComponentStageImportOpenShiftImage","hash":"_odscomponentstageimportopenshiftimage","id":23},{"text":"Options","hash":"_options_5","id":24},{"text":"odsComponentStageRolloutOpenShiftDeployment","hash":"_odscomponentstagerolloutopenshiftdeployment","id":25},{"text":"Helm","hash":"_helm","id":26},{"text":"Tailor","hash":"_tailor","id":27},{"text":"Options","hash":"_options_6","id":28},{"text":"Notable Differences between tailor and helm deployments","hash":"_notable_differences_between_tailor_and_helm_deployments","id":29},{"text":"odsComponentStageUploadToNexus","hash":"_odscomponentstageuploadtonexus","id":30},{"text":"Options","hash":"_options_7","id":31},{"text":"odsComponentStageCopyImage","hash":"_odscomponentstagecopyimage","id":32},{"text":"Options","hash":"_options_8","id":33}]},"218":{"id":218,"text":"OpenDevStack provides a Jenkins Shared Library which offers three pipelines: A pipeline to build components, odsComponentPipeline. This pipeline allows to have a minimal Jenkinsfile in each repository by providing all language-agnostic build aspects. The goal is to duplicate as little as possible between repositories and have an easy way to ship updates to all projects. As a user, you will mostly interface with this pipeline. A pipeline to orchestrate releases with multiple components, odsOrchestrationPipeline. It supports the orchestration of multiple repositories into a live application using the Release Manager quickstarter. A pipeline to provision quickstarters, odsQuickstarterPipeline. This pipeline is useful for quickstarter authors. The implementation was originally based on https://www.relaxdiego.com/2018/02/jenkins-on-jenkins-shared-libraries.html. The scripted pipeline syntax was chosen because it is a better fit for a shared library. The declarative pipeline syntax is targeted for newcomers and/or simple pipelines (see https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline). If you try to use it e.g. within a Groovy class you’ll end up with lots of script blocks.","title":"Jenkins Shared Library","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/jenkins-shared-library/index.html","titles":[{"text":"Background","hash":"_background","id":1}]},"219":{"id":219,"text":"When a rollout happens via tailor there are labels that are added regardless of whether they are in any template or not. This is in contrast to helm which relies on the charts setting the right labels. This decision avoids an unexpected pause or resume during a rollout. A helm rollout will have only the labels that were specified and OpenDevStack will not try to add, remove or change any labels. If your cluster has operators there could still be some label changes. The shared library automatically labels all OpenShift resources created in order to ease their management. The labels applied are based on the recommendations by: Kubernetes OpenShift Helm Some additional labels, specific to OpenDevStack, are also assigned. The labelling process is automatically applied by both the quickstarter and the component pipelines. The orchestration pipeline does not directly perform any labelling, but the component pipeline will set some label values based on the information provided by the release manager, when available. The labels set are not directly used by OpenDevStack, but are just made available to the users both as information about the resources and as a way to find resources in queries. The recommended labels, when given values according to their intended semantics, can be used by tools that recognise them, including OpenShift and Helm. The values for the labels are set, in decreasing order or priority, from: Values forcibly set by the library, which cannot be customised. Metadata information which can be customised through the metadata.yml file in the component repository. Some labels can get default values when none have been assigned in the previous steps. The labels are also assigned to the template of each Deployment or DeploymentConfig resource. This warrants that any pods created will also be appropriately labeled. Changing the template of a Deployment or DeploymentConfig can trigger a new deployment, if a config-change trigger is in place. A best effort is done to avoid multiple deployments. Note that any paused Deployment or DeploymentConfig will be resumed as part of the rollout stage. This is the list of supported labels: Label Meaning Value Example app.kubernetes.io/name The name of the application name metadata parameter mongodb app.kubernetes.io/instance A unique name identifying the instance of an application Component ID user-db app.kubernetes.io/version The version of the application version metadata parameter 4.0.8 app.kubernetes.io/component The component within the architecture role metadata parameter database app.kubernetes.io/part-of The name of a higher level application this one is part of partOf metadata parameter my-online-shop app.kubernetes.io/managed-by The tool being used to manage the operation of an application Autodetected tailor app.openshift.io/runtime The runtime this application runs on runtime metadata parameter spring-boot app.openshift.io/runtime-version The version of the runtime runtimeVersion metadata parameter 2.1.16.RELEASE helm.sh/chart Helm chart name-version Autodetected chartName-1.0.0 app.opendevstack.org/project Project ID Autodetected my-project app.opendevstack.org/type Type of ODS component type metadata parameter ods-service app.opendevstack.org/system-name The name of the system Autodetected some-system app.opendevstack.org/project-version Version across all components in the project Autodetected 1.0 app.opendevstack.org/work-in-progress Whether this project version is still a work in progress Autodetected true Detailed description of each label and how to customise it, if possible. Please, note that valid label values must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. Most label values will be sanitised before assigning, but it is recommended to specify values following these restrictions. The name of the application. This is the software deployed in this component. There may be other instances of the same software in other components. This label is always assigned and its default value is the component id. This value can be customised by setting the name entry in the metadata.yml file. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This label will not be deleted, if it is already set. A unique name identifying the instance of an application. This label is used when there is more than one instance of the software identified by the app.kubernetes.io/name label. This label is automatically set to the component id and it cannot be customised. This label will only be set if its value differs from the value of app.kubernetes.io/name. Therefore, if the name label is set to its default value (component id), this instance label will not be set. Example: user-db The current version of the application (e.g., a semantic version, revision hash, etc.). This is the version of the software identified by the app.kubernetes.io/name label. This value can be customised by setting the version entry in the metadata.yml file and it has no default value. Example: 4.0.8 This label will not be deleted, if it is already set. The component within the architecture. This is the role this component plays in the architecture. This value can be customised by setting the role entry in the metadata.yml file. A best effort will be made to determine a default value for this: If the quickstarter name starts with be- (but not be-fe-), the default is backend. If the quickstarter name starts with fe-, the default is frontend. If the quickstarter name starts with ds-, the default is subsystem. In any other case, there is no default. This default value can only be determined when provisioning the component for the first time from a given quickstarter. No default value is ever calculated by the component or orchestration pipelines. However, if the default value was set by the quickstarter pipeline, it can be overridden, but not deleted. Example: database Any value can be set, but OpenShift recognises the following values: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. Note that data-science components are assigned the ad-hoc subsystem value by default. This label will not be deleted if it is already set. The name of a higher level application this one is part of. This is used to group components as part of a higher-level application, when suitable. It is not meant to be systematically set to the project id, though it could make sense in some specific cases. Note that there is already an OpenDevStack-specific project label that holds the project id. This label is not compulsory and has no default value. This value can be customised by setting the partOf entry in the metadata.yml file. Example: you are building an online shop, and this component is part of it. You can set app.kubernetes.io/part-of=my-online-shop. This label will be removed, if no value is given for it. The tool being used to manage the operation of an application. This is automatically set to tailor (by default) or helm, for components managed with Helm. This value cannot be customised. Example: tailor The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. This value can be customised by setting the runtime entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This label will be removed, if no value is given for it. The version of the runtime. This value can be customised by setting the runtimeVersion entry in the metadata.yml file and it has no default value. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if app.openshift.io/runtime is not also specified. Example: 2.1.16.RELEASE This label will be removed, if no value is given for it. This should be the chart name and version: {{ .Chart.Name }}-{{ .Chart.Version | replace \"+\" \"_\" }}. This is autodetected and cannot be customised. Only set when the component is managed by Helm. Note that, as per the specification of the label in Helm documentation, the value is always sanitised by replacing the character + with the character _. This is done before the common sanitising performed to all label values. Example: charName-1.0.0 The project id. This is autodetected and cannot be customised. Example: my-project This label will not be deleted if it is already set. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. Generally, only the two first ones create resources in OpenShift. This value can be customised by setting the type entry in the metadata.yml file and it has no default value. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This label will not be deleted if it is already set. This is currently set by the Release Manager to the config item and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. This is currently set by the Release Manager to the change id and it cannot be customised. This value is never sanitised. If it is not a valid OpenShift label value, the pipeline will fail with a suitable error message. This label will not be deleted if it is already set. Boolean value indicating whether the current project version (change id) is still a work in progress. This is currently set by the release manager from the value of the version build parameter and it cannot be customised. This label will not be deleted if it is already set.","title":"OpenShift resource labelling with tailor","component":"opendevstack","version":"5.x","name":"labelling","url":"/opendevstack/5.x/jenkins-shared-library/labelling.html","titles":[{"text":"Overview of tailor labels","hash":"_overview_of_tailor_labels","id":1},{"text":"Usage","hash":"_usage","id":2},{"text":"Detailed description","hash":"_detailed_description","id":3},{"text":"app.kubernetes.io/name","hash":"_app_kubernetes_ioname","id":4},{"text":"app.kubernetes.io/instance","hash":"_app_kubernetes_ioinstance","id":5},{"text":"app.kubernetes.io/version","hash":"_app_kubernetes_ioversion","id":6},{"text":"app.kubernetes.io/component","hash":"_app_kubernetes_iocomponent","id":7},{"text":"app.kubernetes.io/part-of","hash":"_app_kubernetes_iopart_of","id":8},{"text":"app.kubernetes.io/managed-by","hash":"_app_kubernetes_iomanaged_by","id":9},{"text":"app.openshift.io/runtime","hash":"_app_openshift_ioruntime","id":10},{"text":"app.openshift.io/runtime-version","hash":"_app_openshift_ioruntime_version","id":11},{"text":"helm.sh/chart","hash":"_helm_shchart","id":12},{"text":"app.opendevstack.org/project","hash":"_app_opendevstack_orgproject","id":13},{"text":"app.opendevstack.org/type","hash":"_app_opendevstack_orgtype","id":14},{"text":"app.opendevstack.org/system-name","hash":"_app_opendevstack_orgsystem_name","id":15},{"text":"app.opendevstack.org/project-version","hash":"_app_opendevstack_orgproject_version","id":16},{"text":"app.opendevstack.org/work-in-progress","hash":"_app_opendevstack_orgwork_in_progress","id":17}]},"220":{"id":220,"text":"Load the shared library in your Jenkinsfile like this: @Library('ods-jenkins-shared-library@4.x') _ odsOrchestrationPipeline( debug: true, odsImageTag: '4.x' ) The release manager quickstarter comes with a Jenkinsfile that is already setup like this. The library automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside a release manager component’s metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master - id: B name: my-repo-B branch: master - id: C If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-infra, ods-service, ods-saas-service, ods-test and ods-library. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A branch: master type: ods - id: B name: my-repo-B branch: master type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. If you use this type ODS expects to find JUnit XML test results. If you do not have any test results the pipeline will fail. If you are deploying something where JUnit XML test results are not available consider using Repository Type: ods-service. This type designates ODS components designed for consuming on-prem or cloud services of arbitrary type using infrastructure as code. Such components are based on quickstarters whose names start with inf-. This type designates ODS components designed for documenting vendor-provided SaaS services. This type designates ODS components designed for running services of arbitrary type. Examples include repositories based on the airflow-cluster quickstarter. This type designates ODS components designed for running automated tests against a live application. Such components are based on quickstarters whose names start with e2e-. This type designates ODS components designed for library components. Such components are only build in dev (WIP and assemble mode), and are needed for other components to be built. The library will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B branch: master Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. If no branch parameter is provided for a repository, master will be assumed. Instead of merely resolving repositories into a strictly sequential execution model, our library automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. By default the shared library will rebuild all type ods components, no matter which ones changed since the last release. In order to build only the components whose source code changed (partial rebuilding as we will call it from now on), the following needs to be configured in metadata.yml allowPartialRebuild : true If one repository should always be rebuilt, even if partial rebuild is configured on root level, forceRebuild : true can be set at repository level, e.g. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B forceRebuild : true It is important to highlight that, despite having configured partial rebuild, the orchestration pipeline will still deploy all the components (both those which changed and which did not) to the target environment. By default the shared library will always pull the agent image from the internal docker repository. Depending on the cluster node setup, this may decrease execution performance. In order to re-use loaded images, a knob in the Jenkinsfile configuration of the stage odsOrchestrationPipeline can be turned on: alwaysPullImage: true By default the orchestration pipeline will create a pod based on the jenkins-base-agent image to do much of its work. In seldom cases, ususally with a lot of repositories, one may hit an out of memory error on the pod named 'mro-XX'. In this case the below memory limit should be adjusted (defaulting to '1Gi') mroAgentMemoryLimit = \"1Gi\" The library automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process by the release manager component. Note: when you configure a Jira service in the release manager component’s metadata.yml, our library expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the library will fall back to the document chapter templates located in your release manager component’s docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. The library supports the activation of various capabilities through the capabilities: field in metadata.yml. capabilities: - Zephyr The Zephyr for Jira capability currently supports: Reporting the result of a test execution to Zephyr for Jira This section will guide you through the \"environment promotion\" feature of the orchestration pipeline. It is assumed have the release manager quickstarter already provisioned and configured in your project. Typically, software is running in different environments, such as one environment for development (DEV), one for quality assurance (QA), and one for production (PROD - this is what end-users of the software consume). Developers work on on the software in the development environment, and once they finish one version (a state) of the software, they bring that version to the QA environment, and once this version is deemed production-ready it is brought to the production environment so that users can consume the new version. The environment promotion feature of the orchestration pipeline automates moving a certain version of the software from one environment to the next. Developers only have to tell the orchestration pipeline if a new version should be built (in DEV) and packaged as an installable \"release bundle\", or if an existing \"release bundle\" should be promoted to either the QA or the production environment. The environment promotion feature is part of the regular orchestration pipeline. Therefore, the promotion is executed from various Jenkins stages. It is not possible to change the process itself, but you can customize how the promotion happens exactly for each of your software components. The components of your software are defined in the repositories section of the metadata.yml file in the release manager repository. In order for the orchestration pipeline to know which state of each component should be promoted, it needs to have some knowledge about how version control in your repositories is organised. Everything depends on a user-supplied build parameter named version to the Jenkins pipeline. Other input parameters do not have any impact on source code lookup. When no version is given, the orchestration pipeline will default to WIP (work in progress). In this scenario, source code for each repository is taken from the configured branch in the metadata.yml file (defaulting to master if no branch is specified there). When a version is given, source code will be taken from a branch release/$VERSION in each repository. When this branch does not exist yet, it will be created (based on the configured branch in metadata.yml) by the pipeline. Subsequent runs with the same version input will take the source code from the created release branch - changes to the configured branch will have no effect on this version! This is by design: it allows some developers to work on new features on the mainline branch (typically master) while others polish the release branch. To this end, the orchestration pipeline allows to enable separate development environments per version to isolate changes in OpenShift resources (see section \"Environments\" further down). The orchestration pipeline applies the same branching rules to the release manager repository - it will create a release branch per version. There is one small caveat here: Jenkins only considers the Jenkinsfile from the branch which is configured for a pipeline. That means that for a pipeline setup against master, Jenkins will always execute the latest Jenkinsfile from master, even when you pass an explicit version to the pipeline. The orchestration pipeline will read e.g. the metadata.yml file from the matching release branch, but the Jenkinsfile itself will be from master. Usually, this should not be an issue as you should not make changes to the Jenkinsfile of the release manager repository anyway. A specific \"release bundle\" is identified by four data points: a version (as outlined above), a changeId, a build number and an environment. The version, changeId and environment are user-supplied input parameters to the release manager pipeline, the build number is calculated automatically. The changeId can be any string meaningful to the user, its value does not have any effect on the operation of the orchestration pipeline. The environment input variable (such as DEV) will be shortened to a single-letter token (e.g. D). Technically speaking, a release bundle is a certain state of the release manager repository and the state of each linked repository at that time. This state is identified by a Git tag. For example, a release bundle with version=1, changeId=1234, buildNumber=0 and environment=DEV is identified by the Git tag v1-1234-0-D. This tag is set on the release manager repository, and all repositories the metadata.yml refers to at this time. The orchestration pipeline assumes three \"conceptual\" environments: DEV, QA and PROD (with short token forms D, Q and P). Those environments are strictly ordered - a state should go from DEV to QA, and then from QA to PROD. To ensure that software progresses along the DEV → QA → PROD path, release bundles from environment DEV can only be installed into QA, and only a release bundle from QA can be installed into PROD. Installing a release bundle from DEV into PROD is not allowed. Each \"conceptual\" environment is mapped to an OpenShift namespace: DEV to $PROJECT-dev (e.g. foo-dev) QA to $PROJECT-test (e.g. foo-test. Note that it is NOT -qa!) PROD to $PROJECT-prod (e.g. foo-prod) Keep in mind that when you create a new project with OpenDevStack, you get three OpenShift namespaces: foo-dev (your DEV environment) foo-test (your QA environment - unfortunately not named -qa for historical reasons) foo-cd (where Jenkins runs and the pipelines such as the orchestration pipeline are executed) So while there is a corresponding namespace for DEV and QA, there is no namespace corresponding to the PROD environment out-of-the-box. This is because it is assumed that your PROD environment is likely on another cluster altogether. To create foo-prod on another cluster, you (or someone with appropriate rights) can run the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-project.sh. Then you need to tell orchestration pipeline two things: where the API of the external cluster is, and the credentials with which to access it. A typical configuration is: id: foo ... repositories: [ ... ] environments: prod: apiUrl: https://api.example.com credentialsId: foo-cd-foo-prod This assumes you have the API token credentials stored in a secret of type kubernetes.io/basic-auth named foo-prod in the foo-cd namespace. This secret needs to be synced with Jenkins (which is achieved by labeling it with credential.sync.jenkins.openshift.io=true). The stored credentials need to belong to a serviceaccount with rights to admin the foo-prod namespace. The easiest way to setup all of this is by running the script located at https://github.com/opendevstack/ods-core/blob/master/ocp-scripts/create-target-sa-secret.sh, which makes use of the output of the create-target-project.sh ran earlier. It is also possible to have the PROD environment on the same cluster, then you simply create a foo-prod namespace next to foo-dev and foo-test, and allow the foo-cd:jenkins account to admin that project. In that case, you do not need to configure anything in metadata.yml as the default configuration assumes the same cluster. The opposite is also possible: you can configure the QA environment to be on a different cluster than the DEV environment - simply follow the instructions above to create a foo-test namespace. As mentioned in the \"Source Code Organisation\" section, the orchestration pipeline allows to enable separate development environments to isolate different versions. When this mode is enabled, pipeline runs with version=WIP will deploy into the $PROJECT-dev as usual, but pipeline runs with version=X will deploy into $PROJECT-dev-X. The $PROJECT-dev-X environment has to be created beforehand (e.g. by cloning $PROJECT-dev with its serviceaccounts and rolebindings). To enable this feature, set versionedDevEnvs to true in the config of your Jenkinsfile, like this: def config = [debug: true, odsImageTag: 'x.x', versionedDevEnvs: true] If one of your components take longer than 10 minutes (this is the default value) to be promoted from one environment to another, the Release Manager pipeline will exit due to this timeout. You can increase this timeout by setting the openshiftRolloutTimeoutMinutes per environment in the Release Manager repository in the metadata.yml file. Similarly, the number of retries is configurable with the openshiftRolloutTimeoutRetries property. The following example establishes a timeout of 120 minutes for both qa and prod environments with a total number of 3 retries. ... environments: prod: apiUrl: https://... credentialsId: ... openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 qa: openshiftRolloutTimeoutMinutes: 120 openshiftRolloutTimeoutRetries: 3 ... Let’s start by assuming you have a project FOO with two components, X and Y. These components are defined under the repositories section in the metadata.yml file of the release manager repository. When you want to create a new release, you start the orchestration pipeline with input parameters - we will use version 1 and change ID 1234 in this example. The environment should be DEV. At the end of the pipeline run, you’ll have a release bundle identified by the tag v1-1234-0-D. This release can later be promoted as-is to QA. Once it is installed there, the same release bundle will be tagged with v1-1234-0-Q which can then be promoted to PROD (where it will be tagged with v1-1234-0-P). To create a release bundle, the orchestration pipeline will first trigger the build of each component. Then, it will export all resources in your OpenShift namespace ($PROJECT-$ENVIRONMENT, here foo-dev) belonging to the component. By convention, this means all resources labeled with app=$PROJECT-$COMPONENT (e.g. app=foo-x). Any resources without such a label will NOT be part of the release bundle. The exported resources are stored in a template.yml file (an OpenShift template) located in the openshift-exported folder within each component repository. Further, the container image SHA of the running pod is retrieved and stored in the file image-sha in the same folder. Once done, the orchestration pipeline will commit the two files, tag the commit with v1-1234-0-D and push to the remote. After this process has been done for all repositories, the same tag is also applied to the release manager repository. At this stage, the \"dev release bundle\" is complete and can be installed into QA. To trigger the installation of an existing release bundle, the user needs to supply a version and changeId which has previously been used to create a release bundle. In our example, supplying version=1, changeId=1234 and environment=QA will promote the release bundle identified by v1-1234-0-D to the QA environment and tag it with v1-1234-0-Q. Now that we have a \"QA release bundle\", we can promote it to PROD by supplying version=1, changeId=1234 and environment=PROD. As outlined above, a release bundle is essentially a state of all involved Git repositories. Each component repository contains two artifacts: a container image SHA OpenShift resource configuration (expressed in an OpenShift template) You cannot modify the image SHA (it is the result of what the component pipeline builds), but you can influence the OpenShift template. One reason to do so is that e.g. routes or ConfigMap values will need to differ between environments, and you need to tell the orchestration pipeline to parametrize the templates, and to supply the right values when the templates are applied in the target environment. When the orchestration pipeline exports configuration, it has no way to tell which values should actually be parameters. For example, you might have a route x.foo-dev.dev-cluster.com in DEV, and want this to be x.foo-test.dev-cluster.com in QA and x.foo-prod.prod-cluster.com in PROD. In the exported template, the value x.foo-dev.dev-cluster.com will be hardcoded. To fix this, you can create three files in the release manager repository, dev.env, qa.env and prod.env. These files may contain PARAM=value lines, like this: dev.env X_ROUTE=x.foo-dev.dev-cluster.com qa.env X_ROUTE=x.foo-test.dev-cluster.com prod.env X_ROUTE=x.foo-prod.prod-cluster.com All three files need to list the exact same parameters - otherwise applying the templates will fail. Once those param files are present, the orchestration pipeline will pick them up automatically. When you create a release bundle (in DEV), the param file is applied \"in reverse\", meaning that any concrete param value (on the right) will be substituted with the param key (on the left) in the template. Later when the template is applied in e.g. QA, the param keys are replaced with the concrete values from qa.env. It is necessary to have all the param files completed before you create a release bundle - if you want to change e.g. the value of a parameter in the prod.env file afterwards, you will need to create a new release bundle (as they are identified by Git tags, which do not move when you make new commits on the release branch). Next to parametrizing templates, you can also adjust how the export is done. As the export is using Tailor, the best way to customize is to supply a Tailorfile in the openshift-exported folder, in which you can define the options you want to set, such as excluding certain labels or resource types, or preserving specific fields in the live configuration. Please see Tailor’s documentation for more information. It is also possible to have different configuration files per environment if you suffix with the $PROJECT, e.g. Tailorfile.foo-dev. If you have component-specific parameters that differ between environments, a lightweight way to add these is via parameter files located in the openshift-exported folder matching the target project such as foo-dev.env, foo-test.env and foo-prod.env. These files are picked up automatically without special setup in a Tailorfile. In the process described above, the OpenShift configuration is exported and stored in the repositories in openshift-exported. This approach is easy to get started with, but it does have limitations: There is no defined state: whatever gets exported is what will be promoted, even if a certain configuration was meant to be only temporary or is specific to e.g. only the DEV environment. There is little traceability: as configuration is done through the OpenShift web interface, it is not known who did the change and when, and no chance for other team members to review that change. The parametrization of the exported template might produce incorrect results as it is just a string search-and-replace operation without further knowledge of the meaning of your configuration values. To overcome these issues, it is possible to author the OpenShift templates yourself instead of exporting them. The fastest way to start with this is by renaming the folder openshift-exported (containing the exported template) to openshift. From this point on, the orchestration pipeline will skip the export, and apply whatever is defined in the openshift folder. If you are new to writing OpenShift templates, please read https://github.com/opendevstack/tailor#template-authoring. When you author templates, you can also store the secrets in the param files GPG encrypted (.env.enc files). To achieve this, you need to create a private/public keypair for Jenkins, store the private key in a secret called tailor-private-key in your foo-cd namespace, and sync it as a Jenkins credentials item. Once the .env.enc files are encrypted against the public key, the orchestration pipeline will automatically use the private key to decrypt the params on-the-fly. Please see Working with Secrets for more information. For versioned, separate DEV environments, pulling images from the foo-cd namespace is not possible (because the foo-cd:jenkins serviceaccount does not have admin rights in foo-cd and therefore can’t grant access to it) Tagging means we are pointing to a concrete SHA of a Git repository. This enforces that no manual editing of exported config can happen between promotion to QA and promotion to PROD, which in effect forces everything to be parameterized properly. JIRA always triggers the master branch of the release manager, which means the Jenkinsfile is always taken from master (and NOT from the correct release branch - only metadata.yml etc. are read from the release branch) There is only one QA namespace, preventing to test multiple releases at the same time. The secret of the serviceaccount in the target cluster is known to the orchestration pipeline (as a Jenkins credential synced from OpenShift), therefore developers with edit/admin rights in the CD namespace have access to that secret Tags could manually be set / moved (this can be prevented in Bitbucket by administrators) Passwords etc. in the OpenShift configuration are stored in clear text in the export (this can be prevented by authoring templates and using a private key for encryption of param files) During export, the templates are parameterized automatically, but this is done using string search-and-replace and unwanted replacements might occur (this can be prevented by authoring the templates manually). By default, SonarQube scans (and reports) are only generated for the master branch of each component. As the orchestration pipeline automatically creates release branches for each version, no scans and reports are created on those. This can be changed by configuring sonarQubeBranch: '*'` in each component’s Jenkinsfile, however keep in mind that quality trends etc. will be mixed up if you use the free version of SonarQube as that version does not have support for multiple branches. An existing QA-tag cannot be deployed again in PROD. This has been intentionally designed that way as any change to PROD needs its unique change ID, which results in a new tag.","title":"Orchestration Pipeline","component":"opendevstack","version":"5.x","name":"orchestration-pipeline","url":"/opendevstack/5.x/jenkins-shared-library/orchestration-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-infra","hash":"_repository_type_ods_infra","id":5},{"text":"Repository Type: ods-saas-service","hash":"_repository_type_ods_saas_service","id":6},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":7},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":8},{"text":"Repository Type: ods-library (EXPERIMENTAL feature)","hash":"_repository_type_ods_library_experimental_feature","id":9},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":10},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":11},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":12},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":13},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":14},{"text":"Partial rebuilding of components","hash":"_partial_rebuilding_of_components","id":15},{"text":"Optimization of runtime performance","hash":"_optimization_of_runtime_performance","id":16},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":17},{"text":"Additional Capabilities","hash":"_additional_capabilities","id":18},{"text":"Zephyr for Jira","hash":"_zephyr_for_jira","id":19},{"text":"Environment Promotion","hash":"_environment_promotion","id":20},{"text":"What is the \"environment promotion\" feature?","hash":"_what_is_the_environment_promotion_feature","id":21},{"text":"Source Code Organisation","hash":"_source_code_organisation","id":22},{"text":"Release bundles","hash":"_release_bundles","id":23},{"text":"Environments","hash":"_environments","id":24},{"text":"Customizing the Release Manager configuration","hash":"_customizing_the_release_manager_configuration","id":25},{"text":"Timeouts and retries","hash":"_timeouts_and_retries","id":26},{"text":"Walkthrough","hash":"_walkthrough","id":27},{"text":"Customizing release bundle creation","hash":"_customizing_release_bundle_creation","id":28},{"text":"Authoring OpenShift configuration","hash":"_authoring_openshift_configuration","id":29},{"text":"Known Limitations","hash":"_known_limitations","id":30}]},"221":{"id":221,"text":"This pipeline allows to have a minimal Jenkinsfile for a quickstarter by providing all language-agnostic provision aspects. The goal is to duplicate as little as possible between quickstarters. This pipeline is NOT for building components. It is only to be used when you are authoring a (new) quickstarter itself. If you are building a component (an application), please refer to the component pipeline. Load the shared library in your Jenkinsfile like this: def odsNamespace = env.ODS_NAMESPACE ?: 'ods' def odsGitRef = env.ODS_GIT_REF ?: 'master' def odsImageTag = env.ODS_IMAGE_TAG ?: 'latest' library(\"ods-jenkins-shared-library@${odsGitRef}\") odsQuickstarterPipeline( imageStreamTag: \"${odsNamespace}/jenkins-agent-golang:${odsImageTag}\", ) { context -> odsQuickstarterStageCopyFiles(context) stage('Write go.mod') { dir(context.targetDir) { sh \"go mod init module example.com/foo/bar\" } } odsQuickstarterStageCreateOpenShiftResources(context) odsQuickstarterStageRenderJenkinsfile(context) odsQuickstarterStageRenderSonarProperties(context) } There are many built-in stages like odsQuickstarterStageCopyFiles that you can use, please see Stages for more details. odsQuickstarterPipeline can be customized by passing configuration options like this: odsQuickstarterPipeline( imageStreamTag: 'ods/jenkins-agent-golang:3.x' ) Available options are: Property Description image Container image to use for the Jenkins agent container. This value is not used when podContainers is set. imageStreamTag Container image tag of an ImageStream in your OpenShift cluster to use for the Jenkins agent container. This value is not used when podContainers or image is set. alwaysPullImage Determine whether to always pull the container image before each build run. Defaults to true. This value is not used when podContainers is set. resourceRequestMemory How much memory the container requests - defaults to 1Gi. This value is not used when podContainers is set. resourceLimitMemory Maximum memory the container can use - defaults to 2Gi. This value is not used when podContainers is set. resourceRequestCpu How much CPU the container requests - defaults to 10m. This value is not used when podContainers is set. resourceLimitCpu Maximum CPU the container can use - defaults to 300m. This value is not used when podContainers is set. podLabel Pod label, set by default to a random label to avoid caching issues. Set to a stable label if you want to reuse pods across builds. podContainers Custom pod containers to use if the default, automatically configured container is not suitable for your use case (e.g. if you need multiple containers such as app and database). See Agent customization. podVolumes Volumes to make available to the pod. podServiceAccount Serviceaccount to use when running the pod. sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. When you write custom stages inside the closure passed to odsQuickstarterPipeline, you have access to the context, which is assembled for you on the master node. The context can be influenced by changing the config map passed to odsQuickstarterPipeline, see Pipeline Options. The context object contains the following properties: Property Description jobName Value of JOB_NAME. It is the name of the project of the build. buildNumber Value of BUILD_NUMBER. The current build number, such as 153. buildUrl Value of BUILD_URL. The URL where the results of the build can be found (e.g. http://buildserver/jenkins/job/MyJobName/123/) buildTime Time of the build, collected when the odsQuickstarterPipeline starts. cdUserCredentialsId Credentials identifier (Credentials are created and named automatically by the OpenShift Jenkins plugin). sourceDir The source directory of the quickstarter, relative to the root of the repository. Defaults to the directory containing the Jenkinsfile. targetDir The target directory in which the component files are places. Defaults to out. projectId Project ID, e.g. foo. componentId Component ID, e.g. be-auth-service. packageName Package name, retrieved from PACKAGE_NAME build parameter. group Group, retrieved from GROUP build parameter. odsNamespace Central namespace where images are located, retrieved from ODS_NAMESPACE build parameter. odsImageTag ODS image tag. Retrieved from ODS_IMAGE_TAG build parameter. If not set, defaults to latest. odsGitRef ODS Git ref. Retrieved from ODS_GIT_REF build parameter. If not set, defaults to master. agentImageTag Image tag used for the agent pod, retrieved from odsImageTag unless the AGENT_IMAGE_TAG build parameter is set. sharedLibraryRef Git reference used for the Jenkins shared library, retrieved from odsImageTag unless the SHARED_LIBRARY_REF build parameter is set. bitbucketUrl Bitbucket URL - value taken from BITBUCKET_URL. If BITBUCKET_URL is not present, it will default to https://`. bitbucketHost is an alias for bitbucketUrl. gitUrlHttp URL of the Git repository to push to. The agent used in the pipeline can be customized by adjusting the image (or imageStreamTag to use. Further, alwaysPullImage (defaulting to true) can be used to determine whether this image should be refreshed on each build. Resource constraints of the container can be changed via resourceRequestCpu, resourceLimitCpu, resourceRequestMemory and resourceLimitMemory. The setting podVolumes allows to mount persistent volume claims to the pod (the value is passed to the podTemplate call as volumes). To completely control the container(s) within the pod, set podContainers (which is passed to the podTemplate call as containers). Configuring of a customized agent container in a Jenkinsfile: odsQuickstarterPipeline( projectId: projectId, podContainers: [ containerTemplate( name: 'jnlp', // do not change, see https://github.com/jenkinsci/kubernetes-plugin#constraints image: \"${env.DOCKER_REGISTRY}/foo-cd/jenkins-agent-custom\", workingDir: '/tmp', resourceRequestCpu: '100m', resourceLimitCpu: '500m', resourceRequestMemory: '2Gi', resourceLimitMemory: '4Gi', alwaysPullImage: true, args: '' ) ], ... ) { context -> stageBuild(context) ... } See the kubernetes-plugin documentation for possible configuration. Each built-in stage (like odsQuickstarterStageCreateOpenShiftResources) takes two arguments: context (required, this is the pipeline context) config (optional, a map of configuration options) Example: odsQuickstarterStageCreateOpenShiftResources( context, [directory: 'common/foobar'] ) Copies files from ${context.sourceDir}/files to ${context.targetDir}. There are no configuration options. Uses a set of OpenShift templates to create resources in OpenShift. The resources are created both in -dev and -test namespace. Tailor is used to apply the templates, and fed with a parameter file if it exists. Available options: Option Description directory Directory in which templates are located, defaults to ${context.sourceDir}/openshift. envFile Parameter file to use, defaults to ${context.sourceDir}/ocp.env selector Label selector to constrain tailor apply to, defaults to app=${context.projectId}-${context.componentId}. All the created OpenShift resources are automatically labeled to ease their management. The quickstarter pipeline does a best effort to assign appropriate labels for a new component, based on the information of the quickstarter. This information can be customised by updating the component metadata. Detailed information about the labelling can be found here. Processes a Jenkinsfile template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId @component_type@ ⇒ context.sourceDir @git_url_http@ ⇒ context.gitUrlHttp @ods_image_tag@ ⇒ context.odsImageTag @ods_git_ref@ ⇒ context.odsGitRef @agent_image_tag@ ⇒ context.agentImageTag @shared_library_ref@ ⇒ context.sharedLibraryRef Available options: Option Description source Jenkinsfile template to use, defaults to Jenkinsfile.template target Jenkinsfile filename, defaults to Jenkinsfile Processes a sonar-project.properties template in the source directory by replacing tokens (@token@) with actual values, and placing the rendered file into the target directory. The handled replacements are: @project_id@ ⇒ context.projectId @component_id@ ⇒ context.componentId Available options: Option Description source sonar-project.properties template to use, defaults to sonar-project.properties.template target sonar-project.properties filename, defaults to sonar-project.properties Forks a component from ODS Available options: Option Description odsComponent the component from (github) ODS to fork","title":"Quickstarter Pipeline","component":"opendevstack","version":"5.x","name":"quickstarter-pipeline","url":"/opendevstack/5.x/jenkins-shared-library/quickstarter-pipeline.html","titles":[{"text":"Usage","hash":"_usage","id":1},{"text":"Pipeline Options","hash":"_pipeline_options","id":2},{"text":"Pipeline Context","hash":"_pipeline_context","id":3},{"text":"Advanced","hash":"_advanced","id":4},{"text":"Agent customization","hash":"_agent_customization","id":5},{"text":"Stages","hash":"_stages","id":6},{"text":"odsQuickstarterStageCopyFiles","hash":"_odsquickstarterstagecopyfiles","id":7},{"text":"odsQuickstarterStageCreateOpenShiftResources","hash":"_odsquickstarterstagecreateopenshiftresources","id":8},{"text":"odsQuickstarterStageRenderJenkinsfile","hash":"_odsquickstarterstagerenderjenkinsfile","id":9},{"text":"odsQuickstarterStageRenderSonarProperties","hash":"_odsquickstarterstagerendersonarproperties","id":10},{"text":"odsQuickstarterStageForkODS","hash":"_odsquickstarterstageforkods","id":11}]},"222":{"id":222,"text":"Table of Contents How to develop and run it locally How to deploy to OpenShift Frontend Code Backend Code Authentication Implementation Consuming REST APIs in Java Consuming REST APIs via curl Pre Flight Checks Link collection The Project is based on Spring Boot, using several technologies which can be seen in the build.gradle. The provision app is merely an orchestrator that does HTTP REST calls to Atlassian Crowd, Jira, Confluence, Bitbucket and Jenkins (for openshift interaction). The APIs exposed for direct usage, and also for the UI are in the controller package. The connectors to the various tools to create resources are in the services package Make sure that you have installed GIT and JAVA ( >= 11 ). Clone the project out of Github $ git clone https://github.com/opendevstack/ods-provisioning-app.git To run it locally two spring profiles are provided: odsbox and odsbox_quickstarters`. The profile odsbox configures the application to connect to the ODS development environment (ODSBOX). Use this command to start it from the command-line: ./gradlew bootRun --args='--spring.profiles.active=odsbox,odsbox_quickstarters' Change directory into ods-provisioning-app $ cd ods-provisioning-app If you want to build / run locally - create gradle.properties in the project’s root to configure connectivity to OpenDevStack NEXUS nexus_url= nexus_user= nexus_pw= If you want to build / run locally without NEXUS, you can disable NEXUS by adding the following property to gradle.properties: no_nexus=true Alternatively, you can also configure the build using environment variables: Gradle property Environment variable nexus_url NEXUS_HOST nexus_user NEXUS_USERNAME nexus_pw NEXUS_PASSWORD no_nexus NO_NEXUS You can start the application with the following command: # to run the server execute ./gradlew bootRun To overwrite the provided application.properties a configmap is created out of them and injected into /config/application.properties within the container. The base configuration map as well as the deployment yamls can be found in ocp-config, and overwrite parameters from application. After started the server it can be reached in the browser under http://localhost:8080 In order to test your changes in a real environment, you should deploy the provisioning app in OpenShift. To do so, you need to have an existing OpeDevStack project (consisting of -dev, -test and -cd namespaces). If you don’t have one yet, you can create one via the provisioning app in the central namespace. Now you can make use of the ods-provisioning-app quickstarter to set up the Bitbucket repository in your Bitbucket space. You can either register the quickstarter in the provisiong app in the central namespace, and then provision it from there; or use the script in https://github.com/BIX-Digital/ods-contrib/tree/master/quickstart-with-jenkins. Once you have provisioned the quickstarter, the first build will create a container image and place it in the ImageStream, using the commit SHA as image tag. To deploy this image in the central namespace, you have to tag that image into the central namespace. From your local machine, run: oc tag -dev/: ods/ods-provisioning-app: Then, in ods-configuration/ods-core.env, set PROV_APP_FROM_IMAGE to ods/ods-provisioning-app: and run the deployment using: make install-provisioning-app The frontend is based on jquery and thymeleaf. All posting to the API happens out of java script (client.js). ODS 3.x contains a new single page app UI (based on Angular) as an experimental feature located in the client folder. In order to use the UI a feature flag frontend.spa.enabled must be set to true in application.proprties. Please refer to client README on how to setup local development for the frontend code. The backend is based on Spring Boot, authenticates against Atlassian Crowd (Using property provision.auth.provider=crowd) or OAUTH2/OpenID Connect provider (Using property provision.auth.provider=oauth2) and exposes consumable APIs (api/v2/project). Storage of created projects happens on the filesystem thru the StorageAdapter. Both frontend (html) and backend are tested thru Junit & Mockito By using the property provision.auth.provider=crowd or provision.auth.provider=oauth2, the application uses eigher CROWD or OAUTH2 authentication. Dependent of the property used, different spring beans are used for configuration. The switch between the two options is implemented via Spring’s ConditionalOnProperty annotation. CROWD - specific configuration classes are located in the java package org.opendevstack.provision.authentication.crowd. Example: org.opendevstack.provision.authentication.crowd.CrowdSecurityConfiguration.java @Configuration @EnableWebSecurity @EnableCaching @EnableEncryptableProperties @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"crowd\") public class CrowdSecurityConfiguration extends WebSecurityConfigurerAdapter { //... } OAUTH2 - specific configuration classes are located in the java package org.opendevstack.provision.authentication.oauth2. Example: org.opendevstack.provision.authentication.oauth2.Oauth2SecurityConfiguration.java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnProperty(name = \"provision.auth.provider\", havingValue = \"oauth2\") @EnableWebSecurity @EnableOAuth2Client public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter { //... } Generally this is a pain. To ease development, a few tools are in use: Jackson (see link below) OKTTP3 Client (see link below) jsonschema2pojo generator (see link below) The process for new operations to be called is: Look up the API call that you intend to make see if there is a JSON Schema available Generate (a) Pojo('s) for the Endpoint Use the pojo to build your request, convert it to JSON with Jackson and send it via OKHTTP3, and the Provision Application’s RestClient Basic Auth authentication is the recommended way to consume REST API. How to enable Basic Auth authentication is explained in Authentication Crowd Configuration. The following sample script could be used to provision a new project, add a quickstarter to a project or remove a project. It uses Basic Auth to authenticate the request. #!/usr/bin/env bash set -eu # Setup these variables # PROVISION_API_HOST=://: # BASIC_AUTH_CREDENTIAL=: # PROVISION_FILE=provision-new-project-payload.json PROV_APP_CONFIG_FILE=\"${PROV_APP_CONFIG_FILE:-prov-app-config.txt}\" if [ -f $PROV_APP_CONFIG_FILE ]; then cat $PROV_APP_CONFIG_FILE source $PROV_APP_CONFIG_FILE else echo \"No config file found, assuming defaults, current dir: $(pwd)\" fi # not set - use post as operation, create new project COMMAND=\"${1:-POST}\" echo echo \"Started provision project script with command (${COMMAND})!\" echo echo \"... encoding basic auth credentials in base64 format\" BASE64_CREDENTIALS=$(echo -n $BASIC_AUTH_CREDENTIAL | base64) echo echo \"... sending request to '\"$PROVISION_API_HOST\"' (output will be saved in file './response.txt' and headers in file './headers.txt')\" echo RESPONSE_FILE=response.txt if [ -f $RESPONSE_FILE ]; then rm -f $RESPONSE_FILE fi if [ ${COMMAND^^} == \"POST\" ] || [ ${COMMAND^^} == \"PUT\" ]; then echo echo \"create or update project - ${COMMAND^^}\" if [ ! -f $PROVISION_FILE ]; then echo \"Input for provision api (${PROVISION_FILE}) does not EXIST, aborting\\ncurrent: $(pwd)\" exit 1 fi echo \"... ${COMMAND} project request payload loaded from '\"$PROVISION_FILE\"'\"´ echo echo \"... displaying payload file content:\" cat $PROVISION_FILE echo http_resp_code=$(curl --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --data @\"$PROVISION_FILE\" \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) elif [ ${COMMAND^^} == \"DELETE\" ] || [ ${COMMAND^^} == \"GET\" ]; then echo \"delete / get project - ${COMMAND^^}\" if [ -z $2 ]; then echo \"Project Key must be passed as second param in case of command == delete or get!!\" exit 1 fi http_resp_code=$(curl -vvv --insecure --request ${COMMAND} \"${PROVISION_API_HOST}/api/v2/project/$2\" \\ --header \"Authorization: Basic ${BASE64_CREDENTIALS}\" \\ --header 'Accept: application/json' \\ --header 'Content-Type: application/json' \\ --dump-header headers.txt -o ${RESPONSE_FILE} -w \"%{http_code}\" ) else echo \"ERROR: Command ${COMMAND} not supported, only GET, POST, PUT or DELETE\" exit 1 fi echo \"curl request successful...\" echo echo \"... displaying HTTP response body (content from './response.txt'):\" if [ -f ${RESPONSE_FILE} ]; then cat ${RESPONSE_FILE} else echo \"No request (body) response recorded\" fi echo echo \"... displaying HTTP response code\" echo \"http_resp_code=${http_resp_code}\" echo if [ $http_resp_code != 200 ] then echo \"something went wrong... endpoint responded with error code [HTTP CODE=\"$http_resp_code\"] (expected was 200)\" exit 1 fi echo \"provision project request (${COMMAND}) completed successfully!!!\" The PROVISION_FILE should point to a json file that defines the payload for the provision of a new project. This is an example: { \"projectName\": \"\", \"projectKey\": \"\", \"description\": \"project description\", \"projectType\": \"default\", \"cdUser\": \"project_cd_user\", \"projectAdminUser\": \"\", \"projectAdminGroup\": \"\", \"projectUserGroup\": \"\", \"projectReadonlyGroup\": \"\", \"bugtrackerSpace\": true, \"platformRuntime\": true, \"specialPermissionSet\": true, \"quickstarters\": [] } For the provisioning of a quickstarter set the command from POST to value PUT instead. Following an example of the PROVISION_FILE for quickstarter provisioning: { \"projectKey\":\"\", \"quickstarters\":[{ \"component_type\":\"docker-plain\", \"component_id\":\"be-docker-example\" }] } The provisioning of new project requires the creation of project in different servers (jira, bitbucket, confluence, openshift, etc…​) In case of an exception happens this process will be interrupted. This will leave the provision of a new project as incomplete. To avoid this situation a series of checks called \"Pre Flight Checks\" were implemented. These checks verify that all required conditions are given in the target system (jira, bitbucket, confluence) before provision a new project. Following some samples of response of the provision new project endpoint POST api/v2/project Pre Flight Check failed: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"UNEXISTANT_USER\",\"error-message\":\"user 'cd_user_wrong_cd_user' does not exists in bitbucket!\"}]} Pre Flight Check due an exception: HTTP CODE: 503 Service Unavailable {\"endpoint\":\"ADD_PROJECT\",\"stage\":\"CHECK_PRECONDITIONS\",\"status\":\"FAILED\",\"errors\":[{\"error-code\":\"EXCEPTION\",\"error-message\":\"Unexpected error when checking precondition for creation of project 'PROJECTNAME'\"}]} Pre Flight Check successfully passed and project was created: HTTP CODE: 200 OK { \"projectName\": \"MYPROJECT\", \"description\": \"My new project\", \"projectKey\": \"MYPROJECT\", ... } Failed Response due to exception after Pre Flight Checks succesfully passed: HTTP CODE: 500 Internal Server Error An error occured while creating project [PROJECTNAME ], reason [component_id 'ods-myproject-component106' is not valid name (only alpha chars are allowed with dashes (-) allowed in between. ] - but all cleaned up! The provision new project endpoint POST api/v2/project accepts a url parameter called onlyCheckPreconditions. By setting this parameter to true (POST api/v2/project?onlyCheckPreconditions=TRUE) only the Pre Flight Checks will be executed. This could be usefull for the development of new Pre Flight Checks or for integration scenarios. In this later case one could imagine to set this parameter to TRUE to verify all preconditions before creating a project. Mkyong spring boot + security + thymeleaf example Getting more Webjars Generating POJOs from JSON Schemas very helpful for the Atlassian API Docs OKHttp3 Mockito Jackson Atlassian API’s Jira API Confluence API Bitbucket API Crowd API","title":"Provisioning App: Internal architecture / Development","component":"opendevstack","version":"5.x","name":"architecture","url":"/opendevstack/5.x/provisioning-app/architecture.html","titles":[{"text":"How to develop and run it locally","hash":"_how_to_develop_and_run_it_locally","id":1},{"text":"How to deploy to OpenShift","hash":"_how_to_deploy_to_openshift","id":2},{"text":"Frontend Code","hash":"_frontend_code","id":3},{"text":"Backend Code","hash":"_backend_code","id":4},{"text":"Authentication Implementation","hash":"_authentication_implementation","id":5},{"text":"Consuming REST APIs in Java","hash":"_consuming_rest_apis_in_java","id":6},{"text":"Consuming REST APIs via curl","hash":"_consuming_rest_apis_via_curl","id":7},{"text":"Pre Flight Checks","hash":"_pre_flight_checks","id":8},{"text":"Response examples:","hash":"_response_examples","id":9},{"text":"Option \"onlyCheckPreconditions=TRUE\":","hash":"_option_onlycheckpreconditionstrue","id":10},{"text":"Link collection","hash":"_link_collection","id":11}]},"223":{"id":223,"text":"Table of Contents Quickstarters Permissions Bitbucket permissions Project/Space types based on templates Custom permissions and group-to-project-role mappings Add Webhook Proxy URL to jira project properties based on project type Error Handling Authentication Configuration Authentication Crowd Configuration Authentication OAUTH2 Configuration Basic Auth authentication Authentication to third party apps via technical users Other configuration FAQ Available quickstarters can be provided in the container via /quickstarters/quickstarters.properties. In the context of OpenShift, this file is supplied by the ConfigMap quickstarters.properties. The quickstarters defined there will be displayed to the users in the UI when they modify an existing project. When the provisioning app is installed for the first time, a default set of quickstarters (from the ods-quickstarters repository) is seeded. As each installation can configure the available quickstarters differently, the quickstarters.properties ConfigMap is not updated automatically when updating ODS. A quickstarter needs to have two mandatory entries: quickstarters.properties jenkinspipeline.quickstarter..desc= jenkinspipeline.quickstarter..repo= For example: quickstarters.properties jenkinspipeline.quickstarter.be-java-springboot.desc=Backend - SpringBoot/Java jenkinspipeline.quickstarter.be-java-springboot.repo=ods-quickstarters This means that in order to provision the quickstarter, the provisioning app will start a Jenkins pipeline based on the Jenkinsfile located in the opendevstack/ods-quickstarters repository, in the folder be-java-springboot. The UI will display the quickstarter as Backend - SpringBoot/Java. Apart from the required properties, there are also optional properties: quickstarters.properties jenkinspipeline.[some-job-name].create-webhook -> whether a default webhook should be created for this repo or not (true by default) jenkinspipeline.[some-job-name].branch -> a branch differing from ods.git-ref property jenkinspipeline.[some-job-name].jenkinsfile -> a path to the Jenkinsfile differing from [some-job-name]/Jenkinsfile When the quickstarter properties are modified, the provisioning app needs to be restarted for the changes to have effect. By default no special permissions are set on either confluence / jira / bitbucket or openshift, only system-wide settings are inherited. However there is a special knob to tighten security (which can be passed with the project input createpermissionset : boolean) - based on three special groups that need to be provided as part of the API call / from the userinterface. admin group: admin rights on the generated projects / spaces / repositories user group: read / write rights on the generated projects / spaces / repositories readonly group: read rights on the generated projects / spaces / repositories Moreover, a specific CD user (technical user for the continuous delivery platform) can optionally be specified. The configuration for the permission sets are configured: JIRA Project is provisioned with its own permissionset defined in src/main/resources/permission-templates/jira.permission.all.txt Confluence Project is provisioned with special permission set defined in src/main/resources/permission-templates/confluence.permission.* Bitbucket Project is provisioned with the permissions detailed in the section Bitbucket permissions. Openshift Project roles linked to the passed groups (READONLY - view, ADMINGROUP - admin, USERS - edit) Furthermore if you need to define default permission for openshift (e.g. to setup membership permission for cluster admins) you can add this to your application properties: jenkinspipeline.create-project.default-project-groups=ADMINGROUP= In case special permissions sets are defined this the default project groups will be appended to the list of permissions sets. Permissions are set both at project and repository levels. Whenever the same user or group is assigned different permissions in the same project or repository, the actual permissions assigned are the higher-level ones. For example, if a group is assigned read-only and R/W permissions in the same project, it will get R/W permissions on it. If a user is assigned both R/W and admin permissions in a repository, it will get admin permissions on it. The mentioned properties in the following subsections have default values specified in the application.properties file. Their values can be overridden in the corresponding config map. Permissions set at project level depend on whether the special permission set has been specified or not. If the special permission set has been specified, these are the permissions set at project level: Type Who? Permission Group ${global.keyuser.role.name} Admin Group admin group Admin Group user group R/W Group readonly group Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that, if a specific CD user has not been specified, it defaults to the value of the bitbucket.technical.user property. If the special permission set has not been specified, these are the default permissions assigned to the project: Type Who? Permission Group ${bitbucket.default.user.group} R/W Group ${idmanager.group.opendevstack-users} Read only User CD user (Default: ${bitbucket.technical.user}) R/W Additionally, whenever a specific CD User is specified on project creation, this user gets read permissions in all repositories specified as readable repos (such as ods-jenkins-shared-library and ods-quickstarters). Note that no admin permissions are assigned to the project when a special permission set has not been specified. The only project-level administrators are the global Bitbucket administrators, in this case. Repositories belonging to a project inherit the project permissions. Some additional permissions are assigned at repository level. The following tables show the permissions specified at repository level. These are the permissions assigned to the repository when a special permission set has been specified: Type Who? Permission User ${bitbucket.technical.user} R/W These are the permissions assigned to the repository when a special permission set has not been specified: Type Who? Permission Group ${bitbucket.default.admin.group} (default: ${bitbucket.default.user.group}) Admin User ${bitbucket.technical.user} R/W If the bitbucket.default.admin.group property is specified with an empty value, no admin permissions are assigned at repository level. The default jira / confluence project' types are defined in src/main/resources/application.properties - and correspondingly in the config maps project.template.key.names=default jira.project.template.key=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type=software confluence.blueprint.key=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint To add a new template - copy, and add your config, based on a new jira.project.template.key.=com.pyxis.greenhopper.jira:gh-scrum-template jira.project.template.type.=software # optional, can stay as is confluence.blueprint.key.=com.atlassian.confluence.plugins.confluence-software-project:sp-space-blueprint and add the new from above to the existing property project.template.key.names # list of templates surfaced to the UI and API project.template.key.names=default, Custom permission configuration makes possible to configure each Project type template with a specific permission-scheme-id on project creation. Any new Jira project of a specific project type will be then set with the same permission-schemed-id. Additionally, mappings of project roles to the special groups (defined above: admin, user and readonly group) have to be configured, so that the special groups are added to the jira project roles of the new project. These capabilities make possible for Jira Admin to define a main permission scheme that will be \"reused\" for every new project. Another big benefit is that release them from the manual task of mapping the special groups to the permission scheme project roles. To configure a project-template-name with a specific permission-schemed-id you need to add these properties to your configuration: jira.project-templates..name=UTest project template jira.project-templates..permission-scheme-id= if the permission-scheme-id is configured you will have to provide group-to-project-role mapping configuration. If a permission-schemd-id is defined, then the following project-to-* properties have to be configured. Otherwise the provisioning app will fail to start. Like the permission-scheme-id the value of these properties has to be in this case an existant project role id in Jira, that you will need to get from your Jira server in advance. jira.project-templates..role-mapping.project-role-for-admin-group= jira.project-templates..role-mapping.project-role-for-user-group= jira.project-templates..role-mapping.project-role-for-readonly-group= Another way to set a permission-scheme-id with the corresponding project-to-role-* mappings is by API call. You can define following properties in the payload of the create project API call: { ... \"specialPermissionSchemeId\": \"\" \"projectRoleForAdminGroup\": \"\", \"projectRoleForUserGroup\": \"\", \"projectRoleForReadonlyGroup\": \"\", ... } A given configuration will be overwritten by these payload properties. You will find more details about the provisioning app REST API in this section: Consuming REST APIs via curl. If no permission-scheme-id with the corresponding project-to-role-* mappings are provided neither by configuration nor in the create project payload, then the default behaviour will be applied, which in this case will create a new permission scheme as explained in the section Permissions. It is possible to configure the Provisioning App to add to jira project the Webhook Proxy URL as project property. Jira provides an REST API for this purpose (Jira Properties API) This functionality can be configured for each project type. To enable this you will need to: Enable this capability for a given project type add the a property like: jira.project.template.add-webhook-proxy-url-as-project-property.=true Define the jira endpoint as template by adding this property: jira.project.template.webhook-proxy-url-endpoint-template.=/api/2/project/%PROJECT_KEY%/properties/WEBHOOK_PROXY.URL These 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Define the jira endpoint payload as template that will be added to the set jira property endpoint call jira.project.template.webhook-proxy-url-payload-template.={\\\"WEBHOOK_PROXY.URL\\\", \\\"%PROPERTY_VALUE%\\\"} For the payload template also these 2 template keys %PROJECT_KEY% and %PROPERTY_VALUE% can be defined and will be replaced will real values. Up to (and including) v1.1.x when provisioning failed, corrupt and inconsistent states where left in the bugtracker system, bitbucket etc. which had do be cleaned up manually based on logs. This is rectified and a the new default behavior is to see every post to the API as atomic unit of work, which in case of failure is tried to be cleaned up (alike functional rollback). This behavior can be turned off by specifying the new property provision.cleanup.incomplete.projects and setting it to false. There are to separate authentication options to authenticated a user for the provisioning app. CROWD (default) OAUTH2 Basic Auth Note that the current OAUTH2 implementation is only used for authentication the user to the provisioning app. To authentication that is used for the REST - API calls of Atlassian Crowd, Jira, Confluence and Bitbucket is done eighter via the logged in uses credentials (user name and password) or via the technical users, that are configured in the used spring boot profile. application.properties provision.auth.provider=crowd (1) spring.profiles.active=crowd (2) 1 configures crowd authentication provider 2 include crowd profile per default. The crowd specific configuration is done in the included profile crowd, see property documentation inside the profile file application-crowd.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment. An example of plain oauth2 configuration is given in spring boot profile application-oauth2.properties. The provided example configuration is appropriate for a locally installed OpenDevStack environment, when the idmanager vagrant box is used. application-oauth2.properties provision.auth.provider=oauth2 (1) idmanager.url=http://192.168.56.32:8080 (2) idmanager.realm=provisioning-app (3) oauth2.user.roles.jsonpointerexpression=/claims/roles (4) (5) spring.security.oauth2.client.registration.keycloak.client-id=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.client-secret=put-your-secret-here spring.security.oauth2.client.registration.keycloak.clientName=ods-provisioning-app spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.keycloak.redirectUri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.registration.keycloak.scope=openid (6) spring.security.oauth2.client.provider.keycloak.authorization-uri=${idmanager.url}/auth/realms/${idmanager.realm}-app/protocol/openid-connect/auth spring.security.oauth2.client.provider.keycloak.token-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/token spring.security.oauth2.client.provider.keycloak.user-info-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/userinfo spring.security.oauth2.client.provider.keycloak.jwk-set-uri=${idmanager.url}/auth/realms/${idmanager.realm}/protocol/openid-connect/certs spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username 1 configures oauth2 authentication provider 2 URL to idmanager. The value defaults to opendevstack idmanager box with keycloak installation 3 Name of realm that is used 4 The application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 5 Defines the OAUTH2 client registration properties, in particular the client name and client secret. See OAUTH2 Spring Boot 2.x Property Mappings for details. 6 Defines the OAUTH2 client.provider properties. These properties correspond to the well-known OAUTH2-URIs. In case of keycloak, this URIs can be read out using the .well-known/openid-configuration-link Alternatively if your identity provider is Azure AD, a configuration example is given in application-azure.properties application-azure.properties provision.auth.provider=oauth2 (1) provision.auth.provider.oauth2.user-info-uri=userInfo (2) (3) # Application ID (also called Client ID) spring.security.oauth2.client.registration.azure.client-id=> spring.security.oauth2.client.registration.azure.client-secret= # It's suggested the logged in user should at least belong to one of the below groups # If not, the logged in user will not be able to access any authorization controller rest APIs azure.activedirectory.user-group.allowed-groups=opendevstack-administrators,opendevstack-users (4) azure.activedirectory.environment=global-v2-graph azure.activedirectory.user-group.key=@odata.type azure.activedirectory.user-group.value=#microsoft.graph.group azure.activedirectory.user-group.object-id-key=id azure.activedirectory.tenant-id= (5) oauth2.user.roles.jsonpointerexpression=/claims/roles (6) oauth2.user.use-email-claim-as-username=true (7) (8) idmanager.url=https://login.microsoftonline.com idmanager.realm=${spring.security.oauth2.client.registration.azure.client-id} idmanager.disable-logout-from-idm=true (9) 1 configures oauth2 authentication provider 2 configure user info uri 3 registers in spring security azure oauth2 client id and secret 4 configure allow groups 5 register azure ad tenant 6 the application reads the user roles from the claim that is inside the oauth2 ID-Token. The property oauth2.user.roles.jsonpointerexpression is a JsonPointer - Expression that defines a path to the roles that are extracted from the id token. Details regarding pointer expression can be found at Jackson-core JsonPointer Documentation 7 configure to use email claim as username 8 configure name of the ProvApp realm 9 instruct ProvApp to not logout from identity management provider This option can be enabled to activate basic auth as additional authentication when using crowd or oauth2 as authentication provider. To enable basic auth this properties needs to be configured: application-azure.properties provision.auth.basic-auth.enabled=true The basic auth authentication needs to connect to an identity manager to authenticate users. Currently only crowd is supported for this purpouse. If you have’ve chosen to use oauth2 as provider you can even enable basic auth to connect to crowd server. For that you will need to add these properties to your configuration: # crowd properties (needed for basic auth) crowd.local.directory=~/dev/temp crowd.application.name= crowd.application.password= crowd.server.url= crowd.cookie.domain= The rest api calles use HTTP basic access authentication to communicate with Jira, Confluence and Bitbucket. The used credentials are read from a pair of properties. For Example, bitbucket.admin_password and bitbucket.admin_user properties are used for Bitbucket, confluence.admin_user and confluence.admin_password are used for Confluence, etc. application-oauth2.properties # configure technical user for bitbucket. Do not authenticate via oauth2, since not implemented. bitbucket.admin_password=bitbucket_admin bitbucket.admin_user=bitbucket_admin # configure technical user for confluence. Do not authenticate via oauth2, since not implemented. confluence.admin_password=confluence_admin confluence.admin_user=confluence_admin # configure technical user for jira. Do not authenticate via oauth2, since not implemented. jira.admin_password=jira_admin jira.admin_user=jira_admin Note: if the pair of properties is not defined for a third party tool, the logged in user’s credentials are used to authenticate against the application. The credentials are read by caling the method getUserName and getUserPassword from IODSAuthnzAdapter]. See also implementation of org.opendevstack.provision.services.BaseServiceAdapter#authenticatedCall() To adapt the provisioning app to your infrastructure following properties will help you to enable/disable some adapters/services. To disable the confluence adapter you can add this property to the application properties: adapters.confluence.enabled=false The Openshift Service can be used to verify that a project key does not exist in the cluster before provisioning a project. If you want to enable it, you can add this property to the application properties: services.openshift.enabled=true If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. If you need to display a disclaimer in the front-end you can add this property to the application properties: provision.ui.disclaimer= this property is not supported yet in the single page front-end. Where is the provision app deployed? the provision application is deployed on openshift, in both prov-dev and prov-test. prov-dev is the development environment in case you want to change / enhance the application, while the production version of the application is deployed in prov-test. The URL to get to the provision application, is defined thru a route. Ít’s https://prov-app-test.. Where do I find the logs, if something went wrong? Within the Openshift pod of the provision app (in projectdev/test, namely in /opt/provision/history/logs a logfile is created per project) Where is the real configuration of the provision application? The base configuration in the the application.properties in the codebase, the setup specific one is in a config map deployed within the prov-dev/test project. What is the default permission schema in Jira? the default permission schema in Jira is named Default Permission Scheme Which role is missing in Jira default permission schema if the project creator cannot access it? The default permission schema named Default Permission Scheme needs the role owner to be added to permission Browser Projects. Otherwise the project creator (role owner) will not be able to access the project.","title":"Provisioning App: Configuration Guide","component":"opendevstack","version":"5.x","name":"configuration","url":"/opendevstack/5.x/provisioning-app/configuration.html","titles":[{"text":"Quickstarters","hash":"_quickstarters","id":1},{"text":"Permissions","hash":"_permissions","id":2},{"text":"Bitbucket permissions","hash":"_bitbucket_permissions","id":3},{"text":"Project level","hash":"_project_level","id":4},{"text":"Repository level","hash":"_repository_level","id":5},{"text":"Project/Space types based on templates","hash":"_projectspace_types_based_on_templates","id":6},{"text":"Custom permissions and group-to-project-role mappings","hash":"_custom_permissions_and_group_to_project_role_mappings","id":7},{"text":"Project type custom permissions scheme id configuration","hash":"_project_type_custom_permissions_scheme_id_configuration","id":8},{"text":"Project type group-to-project-role mappings","hash":"_project_type_group_to_project_role_mappings","id":9},{"text":"Overwriting custom permissions scheme id and group-to-project-role mappings per API call","hash":"_overwriting_custom_permissions_scheme_id_and_group_to_project_role_mappings_per_api_call","id":10},{"text":"Add Webhook Proxy URL to jira project properties based on project type","hash":"_add_webhook_proxy_url_to_jira_project_properties_based_on_project_type","id":11},{"text":"Error Handling","hash":"_error_handling","id":12},{"text":"Authentication Configuration","hash":"_authentication_configuration","id":13},{"text":"Authentication Crowd Configuration","hash":"_authentication_crowd_configuration","id":14},{"text":"Authentication OAUTH2 Configuration","hash":"_authentication_oauth2_configuration","id":15},{"text":"Basic Auth authentication","hash":"_basic_auth_authentication","id":16},{"text":"Authentication to third party apps via technical users","hash":"_authentication_to_third_party_apps_via_technical_users","id":17},{"text":"Other configuration","hash":"_other_configuration","id":18},{"text":"FAQ","hash":"_faq","id":19}]},"224":{"id":224,"text":"This application creates new OpenDevStack projects. It is the central entrypoint to get started with a new project / or provision new components based on quickstarters. It delegates the tasks to create / update resources to several services such as Jira, Confluence, Bitbucket and Jenkins. Any user with admin privileges can create new ODS projects through the provisioning application. A new ODS project typically consists of: a Jira Project (name based on project ) a Confluence Space (name based on project ) a Bitbucket project (name based on project ) two Openshift projects named -dev and -test, which are used to run your application. Further, a Jenkins deployment will be created in the -cd project to allow each ODS project full freedom of build management. This deployment is based on a common Jenkins image provided by the central ODS namespace. Open the web GUI of the provisioning app (ask your ODS administrator for the URL). Select your project, then choose a quickstarter. If no framework fits your needs, choose the docker-plain quickstarter, and adjust the repository afterwards as required. After provisioning the quickstarter, you’ll have a new repository in your Bitbucket project with the boilerplate of the component. This repository has a webhook configured which will start a new Jenkins job each time a new commit is pushed. This means the new component will immediately be built and deployed into your -dev project. Why are three OpenShift projects created when I provision a new project? The -dev and -test namespaces are runtime namespaces. Depending on which branch you merge / commit your code into, images will be built & deployed in one of the two (further information on how this is done - can be found in the Component Pipeline In contrast to this, the -cd namespace hosts a project-specific instance of Jenkins Master and Webhook Proxy. When a build is triggered, builder pods (= deployments of Jenkins agents) are created in this project. This was a cautious design choice to give a project team as much power as possible when it comes to configuration of Jenkins. What permissions are assigned when a new Bitbucket project or repository is created? The assigned permissions are detailed here.","title":"Provisioning Application","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/provisioning-app/index.html","titles":[{"text":"Creating a new project","hash":"_creating_a_new_project","id":1},{"text":"Creating a new component within a project (using a quickstarter)","hash":"_creating_a_new_component_within_a_project_using_a_quickstarter","id":2},{"text":"FAQ","hash":"_faq","id":3}]},"225":{"id":225,"text":"This agent is used to build Go code. The image is built in the global ods project and is named jenkins-agent-golang. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-golang:latest. Go 1.23.0 golangci-lint 1.60.1 Not (yet) Nexus package manager aware and no special HTTP Proxy configuration.","title":"Go Jenkins agent","component":"opendevstack","version":"5.x","name":"golang","url":"/opendevstack/5.x/jenkins-agents/golang.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"226":{"id":226,"text":"This agents are used to deploy (Cloud) resources using terraform code. There are two terraform jenkins agents available: 1. jenkins-agent-terraform (ruby 2.7.5, terraform 1.2.x) - this agent is DEPRECATED and will be removed in the next release. 1. jenkins-agent-terraform-2306 (ruby 3.2.2, terraform 1.4.6, and matching tools) - this is the current active jenkins agent. The images are built in the global ods project and are named jenkins-agent-terraform and jenkins-agent-terraform-2306. It can be referenced in a Jenkinsfile with e.g. ods/jenkins-agent-terraform:latest or ods/jenkins-agent-terraform-2306:latest. support of multiple terraform versions using tfenv integrated test-framework using kitchen-terraform and cinc-auditor n/a","title":"Terraform Jenkins agents","component":"opendevstack","version":"5.x","name":"inf-terraform","url":"/opendevstack/5.x/jenkins-agents/inf-terraform.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"227":{"id":227,"text":"This agent is used to build Java code. The image is built in the global ods project and is named jenkins-agent-jdk. It can be referenced in a Jenkinsfile with ods/jenkins-agent-jdk. Nexus and HTTP proxy configuration for Maven & Gradle This agent provides 3 JDKs: java 11, java 17 (default) and java 21. For backwards compatibility java 11 is still included. Java projects migrating from previous ODS version will require the use of the bash script use-j11.sh to use java 11. A migration to java 17 and java 21 can be done afterwards. To switch the environment to java 11 the script use-j11.sh is provided at the jenkins home folder. To switch the environment to java 17 the script use-j17.sh is provided at the jenkins home folder. To switch the environment to java 21 the script use-j21.sh is provided at the jenkins home folder. Following command shows how the jenkins build script from the springboot quickstarter switches the java version before calling the gradle wrapper: def status = sh(script: \"$HOME/use-j21.sh && ./gradlew clean build --stacktrace --no-daemon && $HOME/use-j17.sh\", returnStatus: true) like this example, you will need to switch back to java 17 after running the gradlew build. This is required because the jdk agent environment still does not support the latest java version. E.g. the sonar scanner is not compatible with the latest java version. Dockerfile.ubi8 installs: - java-21-openjdk-devel - java-17-openjdk-devel - java-11-openjdk-devel n/a","title":"Jdk Jenkins agent","component":"opendevstack","version":"5.x","name":"jdk","url":"/opendevstack/5.x/jenkins-agents/jdk.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Supported Java Versions","hash":"_supported_java_versions","id":3},{"text":"Installed packages","hash":"_installed_packages","id":4},{"text":"Known limitations","hash":"_known_limitations","id":5}]},"228":{"id":228,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs16. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs16. Node.js version 16 reaches end-of-life in 2024-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 16 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs16","url":"/opendevstack/5.x/jenkins-agents/nodejs16.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"229":{"id":229,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs18. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs18. Node.js version 18 reaches end-of-life in 2025-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 18 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs18","url":"/opendevstack/5.x/jenkins-agents/nodejs18.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"230":{"id":230,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs20. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs20. Node.js version 20 reaches end-of-life in 2026-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 20 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs20","url":"/opendevstack/5.x/jenkins-agents/nodejs20.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"231":{"id":231,"text":"This agent is used to build Node.js-based projects, through npm or yarn. The image is built in the global ods project and is named jenkins-agent-nodejs22. It can be referenced in a Jenkinsfile with ods/jenkins-agent-nodejs22. Node.js version 22 reaches end-of-life in 2027-04-30. Support for this version will be removed in releases after this date. Please consider switching to newer versions of this agent as soon as they are available. Nexus configuration HTTP proxy awareness Yarn & Cypress dependencies pre-installed n/a","title":"Node.js 22 - Jenkins agent","component":"opendevstack","version":"5.x","name":"nodejs22","url":"/opendevstack/5.x/jenkins-agents/nodejs22.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"232":{"id":232,"text":"This agent is used to build / execute Python code. The image is built in the global ods project and is named jenkins-agent-python. It can be referenced in a Jenkinsfile with ods/jenkins-agent-python. It supports building on Python versions: 3.12 (default), 3.11, 3.9, 3.8 and 3.6. NOTE: Python 3.6 have reached EOL on 2021-12-23. See Python versions for further information. Python pip virtualenv No special HTTP Proxy configuration.","title":"Python Jenkins agent","component":"opendevstack","version":"5.x","name":"python","url":"/opendevstack/5.x/jenkins-agents/python.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"233":{"id":233,"text":"This agent is used to build / execute Rust code and tools. The image is built in the global ods project and is named jenkins-agent-rust. It can be referenced in a Jenkinsfile with ods/jenkins-agent-rust. Minimum Supported Rust Version (MSRV) 1.79. It can build Rust versions 1.79.x or higher. NOTE: Current Rust edition in use is 2021. See Rust Edition Guide for further information. Rust Axum Cargo Nextest LLVM Coverage Generate No special HTTP Proxy configuration.","title":"Rust Jenkins agent","component":"opendevstack","version":"5.x","name":"rust","url":"/opendevstack/5.x/jenkins-agents/rust.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Known limitations","hash":"_known_limitations","id":3}]},"234":{"id":234,"text":"This agent is used to build Scala code through SBT (Scala build tool). The image is built in the global ods project and is named jenkins-agent-scala. It can be referenced in a Jenkinsfile with ods/jenkins-agent-scala. SBT 1.8.2 HTTP proxy aware Nexus aware This agent provides 1 JDKs: java 11 and java 17 (default). For backwards compatibility java 11 is till included. Java projects migrating from previous ODS version will require the use of the bash script use-j11.sh to use java 11. A migration to java 17 can be done afterwards. To switch the environment to java 11 the script use-j11.sh is provided at the jenkins home folder. To switch the environment to java 17 the script use-j17.sh is provided at the jenkins home folder. Following command shows how the jenkins build script from the scala quickstarter switches the java version before calling the SBT: def status = sh(script: \"$HOME/use-j11.sh && sbt -v clean scalafmtSbtCheck scalafmtCheckAll coverage test coverageReport coverageOff compile:clean copyDockerFiles && $HOME/use-j17.sh\", returnStatus: true) like this example, you will need to switch back to java 17 after running the SBT build. This is required because the scala agent environment still does not support the latest java version. E.g. the sonar scanner is not compatible with the java 11. Dockerfile.ubi8 installs: - java-17-openjdk-devel - java-11-openjdk-devel In case HTTP Proxy config is injected through environment variables (including NO_PROXY), Nexus configuration is disabled because of an SBT bug.","title":"Scala Jenkins agent","component":"opendevstack","version":"5.x","name":"scala","url":"/opendevstack/5.x/jenkins-agents/scala.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Features","hash":"_features","id":2},{"text":"Supported Java Versions","hash":"_supported_java_versions","id":3},{"text":"Installed packages","hash":"_installed_packages","id":4},{"text":"Known limitations","hash":"_known_limitations","id":5}]},"235":{"id":235,"text":"This document describes how you can create your own quickstarter. At the same time, you should be able to find all information required to make changes to an existing quickstarter. Technically speaking, a quickstarter is just a Jenkins pipeline that fills an existing repository with files. How this is done, and what exactly is run in the pipeline is up to the quickstarter author. Typically though, the pipeline makes use of the quickstarter pipeline from the Jenkins shared library, which removes the need to write lots of boilerplate such as running a agent pod, cloning sources, copying files and pushing at the end to the component repository. The rest of the guide assumes that you are using this pipeline. As the Jenkins pipeline runs on a Jenkins agent image, you as the author need to pick either an existing agent image (see \"Jenkins agent Images\" in the navigation on the left), or create your own. The only technical requirement is to have a Jenkinsfile, but depending on the purpose of the quickstarter, a quickstarter should provide the following: A Jenkinsfile in the resulting repository. The best way to do this is by placing a Jenkinsfile.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderJenkinsfile. A sonar-project.properties file in the resulting repository. The best way to do this is by placing a sonar-project.properties.template file into the quickstarter repository, and render it via odsQuickstarterStageRenderSonarProperties. Test setup, e.g. a framework such as JUnit. Test results need to be published in JUnit XML reporting file format. The results need to be stored at build/test-results/test or be configured to a different location. Code Coverage: tests should determine code coverage, and report this to SonarQube. Support for Nexus (pulling dependencies from there) HTTP proxy awareness Documentation. Both for the quickstarter itself (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/quickstarters/pages, following the quickstarter template) and any Jenkins agent image (located at https://github.com/opendevstack/ods-quickstarters/blob/master/docs/modules/jenkins-agents/pages, following the agent image template). It is recommended to set up proper default metadata values in files/metadata.yml. These default values will also be used to label the generated OpenShift resources when provisioning a new component from the quickstarter for the first time. If you write any custom stages in the quickstarter pipeline, you have access to the pipeline context. Usually, quickstarters are triggered through the provisioning app. However, in order to try a new quickstarter, or to try changes to an existing quickstarter which are made in a branch, you can use the quickstart-with-jenkins/run.sh script in the BIX-Digital/ods-contrib repository to provision a quickstarter without registering it with the provisioning app. See its help for usage. It is highly recommended to use the jenkins-agent-base image as a base image. Otherwise it is likely that some features of the shared pipeline don’t work. The jenkins-agent-base image in turn is based on another base image, e.g. provided by RedHat. The easiest way to get started is to look ath other agent images, such as Go and see how that implements its requirements. If you are just building an image for yourself, do the following: Copy the folder from one of the Jenkins agents to your local machine, and adjust as needed. For sure you’ll need to update the Dockerfile. Also, change the names in the ocp-config folder and delete the Tailorfile in there. Note that the BuildConfig points to a repository and a branch. You will need to push your sources to a matching location. Create the OpenShift resources in your *-cd project via Tailor, e.g. tailor -n foo-cd --param REPO_BASE=https://bitbucket.example.com/scm --param ODS_IMAGE_TAG=2.x …​ Start a build in the OpenShift web console. Reference the built image from your Jenkinsfile like this: imageStreamTag: 'foo-cd/jenkins-agent-bar:latest' If you want to contribute your Jenkins agent image to OpenDevStack, make sure to add documentation according to the agent image template.","title":"Authoring Quickstarters","component":"opendevstack","version":"5.x","name":"authoring-quickstarters","url":"/opendevstack/5.x/quickstarters/authoring-quickstarters.html","titles":[{"text":"Creating / Modifying a quickstarter","hash":"_creating_modifying_a_quickstarter","id":1},{"text":"Creating / Modifying a Jenkins agent image","hash":"_creating_modifying_a_jenkins_agent_image","id":2}]},"236":{"id":236,"text":"Use this quickstarter when you want to use nginx server wrapped within OpenResty dynamic web platform. With this quickstarter you can run many different lightweight server implementations like API gateways and HTTP/TCP/UDP reverse proxies. ├── docker - Contains Dockerfile for the build │ ├── lua - Directory for custom Lua modules │ │ └── server-error.lua - Example of server error response module with Lua │ ├── Dockerfile - Definition of your nginx gateway container │ ├── entrypoint.sh - Enables runtime configurations and runs openresty │ └── nginx.conf - The nginx configuration ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager OpenResty ODS Jenkins Shared Library Simply start to configure your nginx.conf to fit your needs. Also, you can develop and/or use different Lua modules. In order to route/proxy to services in the same namespace you do not need to define environment variables for their ports and/or hosts. OpenShift already loads them into the container’s environment by following a convention like _SERVICE_HOST and _SERVICE_PORT. Please, follow the example provided and comments in the nginx.conf file. One can add official Lua modules by using opm. In the following code snipped one can see how to add an official Lua module through docker build stage. Inside your Dockerfile: RUN opm install zmartzone/lua-resty-openidc Then, one can load such module dependency in new modules like: local http = require(\"resty.openidc\") lua-resty-openidc module is already provided with the default Dockerfile. Lua integration in nginx requires following the Directives provided in its architecture. Notice the importance of the execution order of the directives. Most of the directives require being defined inside your server locations. See next some possibilities one can make use of 1 - Managing access with access_by_lua_block With this directive one can integrate with Identity Providers via different auth/z standars, such as simple HTTP Basic Auth, OAuth, OIDC: access_by_lua_block { require(\"your-auth-module\").authenticate() } 2 - Managing content with content_by_lua_block This directive handles content definition. See the provided server-error.lua module example; by loading the right ENV variables in nginx.conf, you can add in your error location block a custom server error handling: location = /50x.html { content_by_lua_block { require(\"server-error\").make_error() } } 3 - Handle incoming requests with rewrite_by_lua_block One can also make use of the rewrite directive, for example, for filtering/rewriting incoming requests coming from your clients: rewrite_by_lua_block { require(\"filter-requests-headers\").run_filter() } 4 - Handle body responses with body_filter_by_lua_block Filter the body responses comming from your Backend services. For example, one could filter any error response, so to assure filtering stack traces from a JSON object response when running on production: body_filter_by_lua_block { require(\"filter-error-response\").filter_stack_traces() } The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: nginx description: \"Enhanced nginx with Lua embeded. nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server. Technologies: OpenResty/nginx 1.25.3.2-0\" supplier: https://openresty.org version: 1.25.3.2-0 type: ods-service role: integration There are two steps: Build the container image. Deploy. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses jenkins-agent-base N/A","title":"Backend - nginx (be-gateway-nginx)","component":"opendevstack","version":"5.x","name":"be-gateway-nginx","url":"/opendevstack/5.x/quickstarters/be-gateway-nginx.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Routing to your services","hash":"_routing_to_your_services","id":5},{"text":"Adding offical Lua modules","hash":"_adding_offical_lua_modules","id":6},{"text":"Using Lua modules","hash":"_using_lua_modules","id":7},{"text":"Metadata","hash":"_metadata","id":8},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"237":{"id":237,"text":"Use this quickstarter when you want to use Go. Go is well suited for CLI tools, network/operational related things and microservices. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── main.go - Example Go file None, except the ODS Jenkins Shared Library Simply start to write Go code, e.g. by extending main.go. No further adjustments should be necessary. Typically, you’d want to use Go modules: go mod init example.com/project/component The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in golang\" supplier: https://example.com version: 1.0.1 type: ods role: backend There are six steps: Check that all files are gofmt’d. Run SonarQube analysis. Run all package tests. Build the binary (placing it into the docker directory). Build the container image. Deploy. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Golang builder agent. N/A","title":"Backend - Go (be-golang)","component":"opendevstack","version":"5.x","name":"be-golang-plain","url":"/opendevstack/5.x/quickstarters/be-golang-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"238":{"id":238,"text":"Use this quickstarter to generate a spring boot based project. It will provide a java 21 project with preconfigured gradle build and CI/CD integration (Jenkinsfile). The quickstarter uses the spring boot project generator service hosted by Spring (https://start.spring.io) to generate the spring boot project. This is implemented in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). When provisioning this quickstarter in the provisioning app a spring boot project based on version 3.3.3 will be generated and pushed to your git repository. The generated project requires java 21 and includes the required gradle build and wrapper artifact based on gradle version 8.10. The generated spring boot project contains following folders: src (java project structure) gradle (gradle wrapper portable distribution) docker (include the Dockerfile used to build the image to be deployed during CI/CD to openshift) The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties settings.gradlew gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= Optionaly you can add nexus_folder_releases= (ie. maven-releases) nexus_folder_snapshot= (ie. maven-snapshots) If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. The build is prepared to upload generated artifacts to a nexus repository via the gradle maven-puplish plugin. If the artifact has a SNAPSHOT-Version, the nexus folder maven-snapshots is used, otherwise it uses the folder maven-releases. This folders are used per default. You can override this default configuraiton by specifing the properties nexus_folder_releases and nexus_folder_releases in gradle.properties. Overriding this configuration can also be achieved by setting the environment variables NEXUS_FOLDER_RELEASES and NEXUS_FOLDER_SNAPSHOTS. Upload to nexus is prepared in Jenkinsfile, but disabled per default. See section How this quickstarter is built thru jenkins below for details. The generated spring boot project is preconfigured with some third party dependencies (i.e. --dependencies=\"web,data-rest,data-jpa,h2,security,devtools\"), which are defined in the quickstarter jenkins build script called Jenkinsfile (open it to understand the internal of the code generation of this quickstarter). Look in method dependencies in the file build.gradle to review the defined dependencies. The project includes a special artifact that enables it to integrate with OpenDevStack CI/CD infrastructure. The Jenkinsfile provides this capability. Basically it is the script that is executed in Jenkins every time a push to your git repository is done. More on this below. After the provisioning the provisioning app will display the url of git repository. This git repository contains the generated project artifacts as describe above in Project Structure. To start working with it you´ll need to clone the git repository in your local development environment. After cloning it use ./gradlew build to verify that the project compiles and test runs. java 21 or later version is required to run gradlew and compile java classes. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Java over Spring Boot\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: spring-boot runtimeVersion: 3.3.3 The Jenkinsfile implements the CI/CD pipeline of your project. The Jenkinsfile is kind of configuration that customizes the core pipeline implemented by jenkins shared library. It is highly recommended that you familiarize with this file and library. It is executed in Jenkins every time a push to your git repository is done. Basically, the tasks implemented by this pipeline are: clone the branch in the Jenkins environment run the java build by calling method stageBuild execute sonarqube analysis (via calling shared library method stageScanForSonarqube) Optionally: deploy to nexus (via calling method stageUploadToNexus). Note that this is disabled per default. To enable, please remove the comment on line stageUploadToNexus in Jenkinsfile build a docker image (via shared library method stageStartOpenshiftBuild) deploy the docker image to openshift (via shared library method stageDeployToOpenshift) The 2nd step executes gradlew build to compile your project and create a distribution as jar file. This file is copied to the docker folder to be included in the docker image when the image is built in step 5. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. The jdk builder agent Jenkins builder agent has installed 3 JDK: java 11, java 17 and java 21. The default version is java 17. This makes the agent backwards compatible. If you are migrating an ODS-based spring boot project to java 21 following instructions provide a some guidance about the typical steps to achieve this: change the agent version as indicated in jdk builder agent upgrade the gradle wrapper to version 8.10 running this gradle command at the root folder of your spring project: gradle wrapper --gradle-version 8.10 --distribution-type bin this command use just gradle instead of the wrapper. commit and push the changes to the remote git project repository. Following files are expected to be included in the change: ./gradlew (or gradlew.bat depending on your environment) ./gradle/wrapper/gradle-wrapper.jar ./gradle/wrapper/gradle-wrapper.properties verify that the jenkins build pipeline run successful. Fix any error if is not the case. change your local runtime to java 21 and compile your project with the gradle wrapper. update in your build.gradle file the source compatibility to sourceCompatibility = JavaVersion.VERSION_21 and compile again. update the project Jenkinfile by adding in the stage Build and Unit Test a call to the use-j21.sh before the gradle wrapper. This will set the runtime to `java 21. It would look like this: def status = sh(script: \"use-j21.sh && ./gradlew clean build --stacktrace --no-daemon\", returnStatus: true) commit and push the changes to the remote git project repository. verify that the jenkins build pipeline run successful. Fix any error if is not the case. NA","title":"Backend Java Spring Boot Quickstarter","component":"opendevstack","version":"5.x","name":"be-java-springboot","url":"/opendevstack/5.x/quickstarters/be-java-springboot.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Project Structure","hash":"_project_structure","id":3},{"text":"Gradle Support","hash":"_gradle_support","id":4},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":5},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":6},{"text":"Uploading artifacts via gradle","hash":"_uploading_artifacts_via_gradle","id":7},{"text":"Dependencies and Frameworks used","hash":"_dependencies_and_frameworks_used","id":8},{"text":"ODS Integration (Jenkinsfile)","hash":"_ods_integration_jenkinsfile","id":9},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":10},{"text":"Metadata","hash":"_metadata","id":11},{"text":"How this quickstarter is built thru jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":12},{"text":"Builder agent used","hash":"_builder_agent_used","id":13},{"text":"Migration to Java 21","hash":"_migration_to_java_21","id":14},{"text":"Known limitations","hash":"_known_limitations","id":15}]},"239":{"id":239,"text":"The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a simple API-server example written in Python and using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── run.sh - This bash script solves issue with permissions for a container user ├── src │ └── main.py - This file is the main entry point in the project. ├── tests │ ├── __init__.py │ └── main_test.py - Unit testing src/main.py ├── .coveragerc - Coverage configuration file ├── metadata.yml - Component metadata ├── mypy.ini - mypy configuration file ├── release-manager.yml - Configuration file for the Release Manager ├── requirements.txt - This file contains a list of required Python modules to run your application ├── tests_requirements.txt - required Python modules for the Test Suite (includes requirements.txt) and IDE integration └── sonar-project.properties - This file contains SonarQube configuration settings Python 3.12 gunicorn flask pytest mypy flake8 The project is production ready when deployed in OpenShift thanks to gunicorn. It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.12, ensure your system’s python executable is also in version 3.12 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Python over Flask\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: flask runtimeVersion: 3.0.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: pip install -r tests_requirements.txt Lint - Runs mypy and flake8 for increasing code quality: mypy src flake8 --max-line-length=120 src Test - Runs pytest and generates xUnit and code coverage reports: PYTHONPATH=src python -m pytest --junitxml=tests.xml -o junit_family=xunit2 --cov-report term-missing --cov-report xml --cov=src -o testpaths=tests Build - Builds the application: copies src folder into docker/dist folder. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. NOTE: The ODS Jenkins Python Agent supports Python versions 3.12, 3.11, 3.9 and 3.8. See next chapter for further information. Build and run environment defaults to python3.12, but python3.11, python3.9 and python3.8 versions are also supported. If you need other versions support in your project, change: in the provided Jenkinsfile, the mentions of python3.12 binary to, for example, python3.9 binary, and switch the FROM statement in your Dockerfile to the python version required, for example, registry.access.redhat.com/ubi8/python-39. Let us know if you find any, thanks!","title":"Backend Python Flask Quickstarter (be-python-flask)","component":"opendevstack","version":"5.x","name":"be-python-flask","url":"/opendevstack/5.x/quickstarters/be-python-flask.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Multiple Python versions support","hash":"_multiple_python_versions_support","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"240":{"id":240,"text":"The project supports generation of Rust programming language based projects, with the Axum web framework by default, and quick installation and integration within OpenShift Jenkins CICD pipelines within the [OpenDevStack](https://www.opendevstack.org/) context. For Database/Postgres integration it is recommended to use SQLx. Check the Axum with SQLx example. Enjoy a full async, safe and high performant setup! This is a Rust project with a common Rust project folder and files structure, with its main.rs file for the final binary to be built, and that makes use of the lib.rs file, which exposes the crates (AKA modules or packages) of the project (where the business logic happens). Similar to Python project structures. The quickstarter comes with a simple API-server example written in Rust and using the Axum web framework. The package allows to easily build a Rust project, using different Rust crates (packages). It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. NOTE The project can be also extended to build other types of solutions with, for example, WASM or IoT. ├── 📂 .config - The local Rust project config folder │ └── 📄 nextest.toml - The local Nextest config file (required for Jenkins CICD) ├── 📂 chart - The Helm chart folder │ ├── 📂 templates - The resource files to define in your project (i.e.: deployment.yml, service.yml,...) │ │ ├── 📂 tests - Helm tests folder │ │ │ └── 📄 test-connection.yaml - Helm test connection to app service after a new release │ │ ├── 📄 _helpers.tpl - Helm helpers template │ │ ├── 📄 deployment.yaml - The k8s Deployment template for the app to release │ │ ├── 📄 NOTES.txt - The release notes processed on each release │ │ └── 📄 service.yaml - The k8s Service template for the app to release │ ├── 📄 .helmignore - The Helm ignore file │ ├── 📄 Chart.yaml - The Helm Chart main config file │ └── 📄 values.yaml - The values to process on your Helm chart ├── 📂 docker - The docker context to build │ └── 📄 Dockerfile - The docker file to deploy and run ├── 🤖 Jenkinsfile - This file contains Jenkins build configuration settings ├── 📂 src │ ├── 📂 api │ │ ├── 📂 routes │ │ │ ├── 🦀 mod.rs - The routes module file │ │ │ └── 🦀 status.rs │ │ ├── 🦀 mod.rs - The api module file │ │ └── 🦀 router.rs - The router API routes file │ ├── 📂 config │ │ ├── 🦀 mod.rs - The config module file │ │ └── 🦀 settings.rs - The settings file │ ├── 📂 models │ │ ├── 🦀 mod.rs - The models module file │ │ └── 🦀 status.rs - The status model example file │ ├── 🦀 lib.rs - The component's library exposing this project's crates to the main.rs │ └── 🦀 main.rs - The component's binary compilation ├── 📂 target - The target folder where all builds (debug, release, ...) are stored (do not commit to git!) ├── 📂 tests - Integration tests folder for all exposed component's crates within the lib.rs │ ├── 🦀 common.rs - Common util implementations and functions │ └── 🦀 status_test.rs - Testing the status endpoint example ├── 📄 .editorconfig - To share with your team IDEs some files formatting defaults ├── 📄 .gitignore - The Git ignore file, with some Rust defaults ├── 📄 .pre-commit-config.yaml - The pre-commit tool config file, prepared for a Rust project. ├── 📄 Cargo.lock - The Rust dependency hash tree of this project ├── 📄 Cargo.toml - The Rust project config file ├── 📄 deny.toml - Cargo Deny TOML configuration based on defaults ├── 📄 metadata.yml - Component metadata ├── 📚 README.md - The README file ├── 📄 release-manager.yml - Configuration file for the Release Manager ├── 📄 rustfmt.toml - The Rust formatter configuration file (for cargo fmt) └── 📄 sonar-project.properties - This file contains SonarQube configuration settings Rust 1.81.x Axum 0.7.x Nextest 0.9.x The project is production ready when deployed in OpenShift. Rust community and official resources are great to get to it, see learn Rust. To get Rust ready on your local environment you just require installing rustup (see install Rust) # Get the Rustup CLI and already install target computer toolchain and latest stable Rust version curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # If you are new to Rust (also check the rustlings TUI) rustup doc --book # Run Unit, Integration and Documentation tests in isolated processes on each test cargo install cargo-nextest # install nextest! cargo nextest run # Cargo format source code cargo fmt # Cargo run locally cargo run # Cargo run Rust linters cargo clippy # Cargo generate documentation cargo doc [--document-private-items] --open One can also extend the cargo features by installing cargo extensions like: # Live reload locally cargo install cargo-watch # https://github.com/watchexec/cargo-watch # Then you can live reload by: cargo watch -x run # Audit Cargo.lock against the advisory DB. The [RustSec Advisory Database](https://github.com/rustsec/rustsec) is a repository of security advisories filed against Rust crates published via crates.io. cargo install cargo-audit # Audit you dependencies on Licenses, Bans, Advisories and Sources, with [cargo-deny](https://github.com/EmbarkStudios/cargo-deny) cargo install cargo-deny # ... NOTE For an extended list of awesome cargo extensions and Rust tools check here and here. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Rust with Axum web framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: rust runtimeVersion: 1.81.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Cargo Check - Checks we can compile: cargo check --all-targets Cargo Format - Checks code is properly formatted: cargo fmt --all -- --check Cargo Clippy - Collection of lints to catch common mistakes and improve your Rust code (output is also used on SonarQube reports): cargo clippy --all-features Cargo Deny - Collection of lints to catch dependency graph issues related to licenses, bans, advisories and sources: cargo deny --all-features check Cargo Test - Runs nextest (instead of cargo test, see above why) with xUnit test report generation (see .config/nextest.toml) and code coverage reports with LLVM coverage tool: cargo nextest run --profile ci cargo llvm-cov nextest --lcov Build - Builds the release target binary and moves it to the docker folder: cargo build --release include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Rust Jenkins builder agent. NOTE: The ODS Jenkins Rust Agent supports Rust versions 1.75.x and above. See the docker spec and openshift templates here. The following main Rust technologies are in use when running this boilerplate: Axum: Web application framework that focuses on ergonomics and modularity. Tokio: Runtime for writing reliable, asynchronous, and slim applications. Tower: Library of modular and reusable components for building robust networking clients and servers. Hyper: A fast and correct HTTP implementation for Rust. First of all, please, let us know if you find any limitation or issue to comment on, thanks! Most of the crates out there, that require cryptographic related features, come with openssl crate as a default dependency feature, but one can check the crate’s docs in regards available features and disable openssl and/or default-features and enable provided alternatives, like rustls`. See some examples of known crates that can be configured to skip requiring OpenSSL C library: With the sqlx crate, one can avoid openssl dependency by enabling the dependency feature tls-rustls which makes use of the crate rustls, like: [dependencies] sqlx = { version = \"0.8\", features = [ \"runtime-tokio\", \"tls-rustls\", \"postgres\", \"uuid\", \"json\", \"chrono\", \"macros\", \"migrate\" ] } See SQLx’s TLS features list support, or all SQLx feature flags, for further learning. With the reqwest crate, one can avoid openssl dependency by enabling the dependency feature rustls-tls, which makes use of the crate rustls and disabling default features, like: [dependencies] reqwest = { version = \"0.12\", default-features = false, features = [\"rustls-tls\"] } See reqwest’s features list for further learning. In some cases one might not be able to skip requiring OpenSSL nor LibreSSL C libraries (see issue), but requires compiling them. To have a lean compilation and shipping experience with Rust, ODS Jenkins Rust agent provides already the dependencies to build OpenSSL from source and statically link them, hence avoiding any mismatch with existing/multiple OS libraries or none (at build or runtime), by enabling statically linking of the dependency within the binary. The only missing piece required is to enable the vendored feature in the crate in your Cargo.toml, see example: [dependencies] openssl = { version = \"0.10\", features = [\"vendored\"] } By doing so, cargo will locally build OpenSSL and statically link the openssl dependencies into the binarie(s) generated, hence avoiding any OS existence nor dependency of the openssl library. In most of cases, one does not require OpenSSL, indeed it is recommended to use more modern alternatives like: ring rustls","title":"Backend Rust Axum Quickstarter (be-rust-axum)","component":"opendevstack","version":"5.x","name":"be-rust-axum","url":"/opendevstack/5.x/quickstarters/be-rust-axum.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Technologies in use","hash":"_technologies_in_use","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9},{"text":"Building with OpenSSL crate or using alternatives","hash":"_building_with_openssl_crate_or_using_alternatives","id":10},{"text":"Recommended first approach","hash":"_recommended_first_approach","id":11},{"text":"SQLx crate without openssl dependency","hash":"_sqlx_crate_without_openssl_dependency","id":12},{"text":"Reqwest crate without openssl dependency","hash":"_reqwest_crate_without_openssl_dependency","id":13},{"text":"Using openssl crate","hash":"_using_openssl_crate","id":14},{"text":"Alternatives to openssl crate","hash":"_alternatives_to_openssl_crate","id":15}]},"241":{"id":241,"text":"This is a Play Framework 2.8.0 quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. Use it if you want to build an reactive Web Application / REST API based on the Scala Language. An example Play Web Application is generated with a Controller and some tests. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── app │ ├── controllers │ │ └── HomeController.scala │ └── views │ ├── index.scala.html │ └── main.scala.html ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ ├── messages │ └── routes ├── docker │ └── Dockerfile ├── project │ ├── build.properties │ ├── plugins.sbt ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── main.js │ └── stylesheets │ └── main.css ├── sonar-project.properties ├── test │ └── controllers │ └── HomeControllerSpec.scala └── .scalafmt.conf This project is generated by SBT using SBTs template generation via the new command. The template used is an adapted version of the official Play Scala Seed Template. It will generate a Play Scala project using version 2.8.2 of Play with Scala version 2.13.10. It uses the logstash-logback-encoder to output logmessages in logstash format. It uses Scalafmt to check/format the source files consistently. Start the SBT shell with sbt in the project root directory. In the SBT shell run test for testing Or run for running locally in development mode with continous compiling. The application will be accessible under http://localhost:8080 The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in Scala over the Play framework\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: play runtimeVersion: 2.8.2 The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages stageBuild - checks source files formatting, runs the tests and builds and copies the artifacts for creating the docker image to the docker directory. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses the Scala Jenkins agent. NA","title":"Backend Scala Playframework Quickstarter (be-scala-play)","component":"opendevstack","version":"5.x","name":"be-scala-play","url":"/opendevstack/5.x/quickstarters/be-scala-play.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"242":{"id":242,"text":"This is a Node.js (v22) quickstarter with express using Typescript. If you are doing non-blocking operation and does not have heavy algorithm/Job which consumes lots of CPU power, this could be an ideal fit. It contains a basic setup for Docker, Jenkins, SonarQube and OpenShift. The package json is generated by simply using npm init -y, while the tsconfig is generated using tsc --init --skipLibCheck --outDir \"./dist\". The dependencies mentioned below are added to plain package.json file. On top of that, test, build and start script commands are customized to get your node/express application up and running with typescript. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── package-lock.json - Commit this file as well when you update your dependencies ├── package.json - This file contains all the npm dependencies and build commands for the project. ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - SonarQube Configuration ├── src │ ├── sum.ts - Sample function │ ├── index.ts - Entrypoint, This runs first ├── __test__ │ ├── sum.spec.ts - Sample test ├── tsconfig.json - TypeScript Configuration file └── tslint.json - TypeScript Linter Configuration Express (^4.19.2) Jest (^29.7.0) for Unit Testing Typescript (^5.5.4) On top of the mentioned frameworks above, we use libraries: Jest Junit (^16.0.0) @types/node (^22.4.1) When you push your code, your runtime and test code will be compiled using node v10. After deployment the compiled code also runs in node v10. If you developed your code and tests using a different node version locally, this might cause some problems. This is why we made the tsconfig.json file to be compatible with node v10. So bear in mind that any changes to compiler options might result in compilation and runtime errors. Here are our related changes to tsconfig.json file below: \"compilerOptions\": { \"lib\": [\"es2018\"], \"module\": \"commonjs\", \"target\": \"es2018\" } npm install forms the project root to install all the dependencies npm run build transpiles the typescript code to /dist folder npm run start starts the node server npm run test runs tests located under /dist folder, prints the jest output under /build folder and reports test coverage. The report located under /coverage_output folder is then picked by Sonarqube. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"Some microservice implemented in TypeScript over Express\" supplier: https://example.com version: 1.0.1 type: ods role: backend runtime: node runtimeVersion: 22 The build pipeline is defined in the Jenkinsfile in the project root. The mains stages of the pipeline are, Build : npm run build command is executed to build the application and then the build is copied to the docker/dist folder. Unit Testing : npm run test command is executed for running unit tests and to generate coverage report. The results can be seen form the Jenkins console output. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.JS 22 builder agent for Jenkins. N/A","title":"Backend Node (be-node-express)","component":"opendevstack","version":"5.x","name":"be-typescript-express","url":"/opendevstack/5.x/quickstarters/be-typescript-express.html","titles":[{"text":"Purpose of this quickstarter (use this when you want to …​)","hash":"_purpose_of_this_quickstarter_use_this_when_you_want_to","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Libraries","hash":"_libraries","id":4},{"text":"Node version","hash":"_node_version","id":5},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":6},{"text":"Metadata","hash":"_metadata","id":7},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":8},{"text":"Builder agent used","hash":"_builder_agent_used","id":9},{"text":"Known limitations","hash":"_known_limitations","id":10}]},"243":{"id":243,"text":"Use this quickstarter when you want to start from a plain Dockerfile only, without any framework on top. A good usecase here is a Dockerfile you found on GitHub which you want to run with OpenDevStack features, or that you need to \"OpenShiftify\", by setting an (non-root) execution user, etc. ├── Jenkinsfile - Contains Jenkins build configuration ├── .pre-commit-config.yaml ├── README.md ├── docker - Contains Dockerfile for the build │ └── Dockerfile ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - SonarQube Configuration None, except for the ODS jenkins shared library. Amend the generated Dockerfile as needed. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: software-name description: \"Some software packaged in a docker container\" supplier: https://example.com version: 3.2 type: ods-service role: Whatever is in the /docker folder will be passed to oc start build as the docker context. You can add other files to that context as needed: def stageBuild(def context) { stage('Build') { // copy any other artifacts, if needed // sh \"cp -r build docker/dist\" // the docker context passed in /docker } } In case you want to run unit tests, you can add a corresponding statement to stageUnitTest: def stageUnitTest(def context) { stage('Unit Test') { // add your unit tests here, if needed } } Assuming your component contains source code you want to have delivered by the Release Manager, the execution of tests and the reporting of their results is mandatory. For this, your component will have to…​ define name, description, supplier, and version metadata for your component in files/release-manager.yml place the test results in the xUnit XML format in a path known to context.testResults (defaults to build/test-results/test) provide these test results to the Jenkins JUnit plugin via its junit step function. Feel free to look out for examples in our existing quickstarters, such as be-java-springboot. include::partials$secret-scanning-with-gitleaks.adoc none N/A","title":"Plain docker image (docker-plain)","component":"opendevstack","version":"5.x","name":"docker-plain","url":"/opendevstack/5.x/quickstarters/docker-plain.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"244":{"id":244,"text":"Provision a shared Jupyter Lab within OpenShift for rapid prototyping of data science applications using OpenShift OAuth. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker │ ├── Dockerfile │ ├── jupyter_lab_config.json │ ├── requirements.txt │ └── run.sh ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.11 JupyterLab The quickstarter sets up two pods in OpenShift. The ds-jupyter-lab instance is routed through the OpenShift OAuth proxy instance. The directory /opt/app-root/src/work is created where code can be organized using installed git. Please consider mounting a persistent volume claim for this path. New python requirements are specified using the requirements.txt. One can setup specific and independent IPython kernels based on specific Python virtual environments: Open a new terminal session in your Jupyter Lab, then: cd python -m venv . /bin/activate pip install ipykernel pip --upgrade python -m ipykernel install --user --name= jupyter kernelspec list # this is for validating installation Now on a notebook you can select that new kernel by clicking on the name you see on the top right where you see the dot status. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: jupyterlab description: \"JupyterLab is a web-based interactive development environment for Jupyter notebooks, code, and data.\" supplier: https://jupyter.org/ version: 3.0.14 type: ods-service The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partials$secret-scanning-with-gitleaks.adoc jenkins-agent-base Consider if sufficient computing resources can be provided by the OpenShift cluster. You might require installing NodeJS if requiring specific JupyterLab extensions (nodejs >=12.0.0).","title":"Data Science Jupyter Lab","component":"opendevstack","version":"5.x","name":"ds-jupyter-lab","url":"/opendevstack/5.x/quickstarters/ds-jupyter-lab.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Setting up independent environments/kernels","hash":"_setting_up_independent_environmentskernels","id":5},{"text":"Metadata","hash":"_metadata","id":6},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"245":{"id":245,"text":"Provisions a R Shiny application within OpenShift using OpenShift OAuth. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── docker - This folder contains Docker configuration settings and main R Shiny app │ ├── Dockerfile │ └── app.R ├── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager R Shiny The quickstarter sets up two pods in OpenShift. The ds-rshiny application is routed through the OpenShift OAuth proxy instance. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: shiny description: \"Shiny is an R package that makes it easy to build interactive web apps straight from R.\" supplier: https://www.rstudio.com/ version: 1.6.0 type: ods-service runtime: r runtimeVersion: 4.1.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: Start OpenShift build Deploy image to OpenShift include::partials$secret-scanning-with-gitleaks.adoc jenkins-agent-base N/A","title":"Data Science R Shiny Application","component":"opendevstack","version":"5.x","name":"ds-rshiny","url":"/opendevstack/5.x/quickstarters/ds-rshiny.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"246":{"id":246,"text":"Provisions a streamlit based dashboard with authentication. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── docker_streamlit │ └── Dockerfile ├── docker_oauth │ └── Dockerfile - Dockerfile for the oauth, please don't change this for proper promotion ├── src - Example code structure based on individual python modules │ ├── calculation │ │ │── __init__.py │ │ └── sample.py │ ├── plots │ │ ├── __init__.py │ │ ├── config.py │ │ └── histogram.py │ └── main.py ├── tests │ └── calculation │ └── sample_test.py │── .gitignore │── requirements.txt - requirements for running the application │── test_requirements.txt - adds additional requirements for the test frameworks │── metadata.yml - Component metadata └── release-manager.yml - Configuration file for the Release Manager Python 3.12 streamlit pandas plotly The quickstarter sets up in OpenShift a pod with two containers. The main ds-streamlit container is behind and protected by the OpenShift OAuth proxy container (i.e.: it is a sidecar container). It is strongly recommended when you are developing a Python project to use separated environments. For this purpose usually one can use Python’s venv core package (check how to use it in the next steps). since the version of Python is 3.12, ensure your system’s python executable is also in version 3.12 # Create virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) python -m venv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r requirements.txt # Start your application PYTHONPATH=src python src/main.py name: description: \"Some dashboard based on Streamlit\" supplier: https://example.com version: 1.0.1 type: ods role: dashboard runtime: streamlit runtimeVersion: 1.38.0 The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages: Prepare Test Suite - Prepares the virtual environment for testing and linting: Lint - Runs mypy and flake8 for increasing code quality: In order to be sure that your code passes the linting stage execute or add it as a pre-commit hook to your git. black src Test - Runs pytest and generates xUnit and code coverage reports: Build - Builds the application: copies src folder into docker_streamlit/dist folder. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Python builder agent Jenkins builder agent. Let us know if you find any, thanks!","title":"Data Science Streamlit","component":"opendevstack","version":"5.x","name":"ds-streamlit","url":"/opendevstack/5.x/quickstarters/ds-streamlit.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"247":{"id":247,"text":"Cypress end-to-end testing quickstarter project This is a Cypress end-to-end testing project quickstarter with basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── fixtures │ └── example.json ├── plugins │ ├── index.ts │ ├── screenshot.ts │ └── screenshot.types.ts ├── reporters │ └── custom-reporter.js ├── support │ ├── commands.ts │ ├── e2e.ts │ ├── generic-login.ts │ ├── msalv2-login_obsolete.ts │ └── test-evidence.ts ├── tests │ ├── acceptance │ │ └── acceptance.spec.cy.ts │ ├── installation │ │ └── installation.spec.cy.ts │ └── integration │ └── integration.spec.cy.ts ├── cypress-acceptance.config.ts ├── cypress-installation.config.ts ├── cypress-integration.config.ts ├── cypress.config.ts ├── cypress.env.json.template ├── Jenkinsfile ├── .pre-commit-config.yaml ├── metadata.yml - Component metadata ├── package.json ├── README.md ├── release-manager.yml - Configuration file for the Release Manager └── tsconfig.json Cypress TypeScript Check the README.md file at root level for further instructions after the quickstarter has been provisioned. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile there is the following stage: stageTest Load Node.js dependencies by running npm install and executing the e2e tests by running npm run e2e. Please note: TSLint has been deprecated in favor of ESLint. Therefore the support for TSLint has been removed from this quickstarter. Please consider adding ESLint support (see also https://www.npmjs.com/package/eslint#installation-and-usage) or a formatter like Prettier (see also https://prettier.io/docs/en/install.html). While npm install is gathering the dependencies it is also performing a post-installation process which is downloading Cypress' binaries. It is possible to change this behavior, e.g. for getting those binaries from Nexus or a local cache. See https://docs.cypress.io/guides/getting-started/installing-cypress#Advanced for more details. A more advanced solution could be the use of a custom builder agent, where Cypress is already embedded. The related Dockerfile could look like this: # The following FROM tag is informational. It is overwritten by OpenShift. FROM ods/jenkins-agent-nodejs22:4.x ARG cypressVersion=13.13.1 ARG cypressHash=... USER root # Adds cypress@VERSION binaries to /home/jenkins/.cache/Cypress/VERSION/Cypress # This allows to disable post-installation of Cypress binaries and gather those binaries from a cache folder instead. The cache # folder holds the binaries for the respective versions of Cypress. # Setting the following environment variable in the Jenkinsfile allows to disable post-installation of cypress@...: # CYPRESS_INSTALL_BINARY=0 # The custom cache folder can be configured in Jenkinsfile by the following environment variable setting: # CYPRESS_CACHE_FOLDER=/home/jenkins/.cache/Cypress ADD https://download.cypress.io/desktop/${cypressVersion}?platform=linux&arch=x64 /home/jenkins/cypress/cypress-linux.zip RUN md5sum /home/jenkins/cypress/cypress-linux.zip && \\ echo \"${cypressHash} /home/jenkins/cypress/cypress-linux.zip\" | md5sum -c && \\ mkdir -p /home/jenkins/.cache/Cypress/${cypressVersion} && \\ unzip -q /home/jenkins/cypress/cypress-linux.zip -d /home/jenkins/.cache/Cypress/${cypressVersion} && \\ rm /home/jenkins/cypress/cypress-linux.zip # fix access rights RUN chgrp -R 0 $HOME && \\ chmod -R g=u $HOME && \\ chmod ug=rx /home/jenkins/.cache/Cypress/${cypressVersion}/Cypress/Cypress USER 1001 To use Cypress Cloud within the Cypress QuickSarter, follow these steps: Create a project in Cypress Cloud. Access Cypress Cloud by following this link (https://cloud.cypress.io/), and create a project. This project will be used to store your Cypress tests and results. Change the project ID as indicated in Cypress Cloud. After creating the project, you will need to change the project ID in the four config files, to the one indicated in Cypress Cloud. This ID is used to identify your project and ensure that your tests are associated with the correct project. Set the Cypress Record Key as an environment variable in Openshift. To enable recording of your tests in Cypress Cloud, you will need to set the Cypress Record Key as an environment variable named CYPRESS_RECORD_KEY in Openshift. This key is provided by Cypress and is used to authenticate your tests and results. By setting it in Openshift, we ensure that the record functionality will only be used in official runs and not for local development. Modify the Jenkinsfile for using the record script. In the Jenkinsfile, change the exeuction line: def status = sh(script: 'npm run e2e', returnStatus: true) for the following block of code, which will run the record script only when in master or in a release branch: if (context.gitBranch == 'master' || context.gitBranch.startsWith('release/')) { def status = sh(script: 'npm run e2e:jenkins:record', returnStatus: true) } else { def status = sh(script: 'npm run e2e', returnStatus: true) } Only use this functionality in releases, not development. It is important to note that Cypress Cloud is intended for use in releases, not development. This ensures that your tests are run against stable and reliable code, and that the Dashboard does not get overflooded with non-relevant tests. For the same reason, the Jenkinsfile is configured to only pass the record parameter when running in the master branch, or in a release. You can find more information about using the Cypress Cloud in the official documentation for Cypress https://docs.cypress.io/guides/cloud/introduction. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. NA","title":"End-to-end tests with Cypress (e2e-cypress)","component":"opendevstack","version":"5.x","name":"e2e-cypress","url":"/opendevstack/5.x/quickstarters/e2e-cypress.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Cypress without post-installation","hash":"_cypress_without_post_installation","id":6},{"text":"Cypress Cloud","hash":"_cypress_cloud","id":7},{"text":"Builder agent used","hash":"_builder_agent_used","id":8},{"text":"Known limitations","hash":"_known_limitations","id":9}]},"248":{"id":248,"text":"End-to-end tests for ETLs quickstarter project This is a python based quicktarter intended to develop end-to-end tests for data pipelines. In order to do that it uses two testing technologies: 1. Great Expectations, meant for data transformation testing data within relational tables. e.g.: You could test the schema of a database, the number of rows, that a specific column has no null values, etc 2. Pytest together with Boto it allows for testing etl triggers, notification system, content of S3 buckets, etc ├── Jenkinsfile - This file contains Jenkins stages. ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── tests - This folder contains the root for test-kitchen │ ├── acceptance/great_expectations - This folder contains the Great Expecations tests to test │ └── acceptance/pytest - This folder contains the pytest tests to test Great-expectations Pytest Check the README.md file at root level for further instructions after the quickstarter has been provisioned. This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"End-to-end tests with Great Expectations and Pytest (e2e-etl-python)","component":"opendevstack","version":"5.x","name":"e2e-etl-python","url":"/opendevstack/5.x/quickstarters/e2e-etl-python.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Builder agent used","hash":"_builder_agent_used","id":5},{"text":"Known limitations","hash":"_known_limitations","id":6}]},"249":{"id":249,"text":"spock, geb and unirest e2e testing quickstarter project This is a spock, geb and unirest e2e testing project quickstarter with basic setup for Jenkins, SonarQube and Gradle. . ├── Jenkinsfile ├── .pre-commit-config.yaml ├── README.md ├── sonar-project.properties ├── src │ ├── test │ │ └── acceptance │ │ │ └── groovy │ │ │ │ └── DemoAcceptanceSpec.groovy │ │ │ └── java │ │ │ └── DemoAcceptanceTest.java │ │ └── installation │ │ │ └── groovy │ │ │ │ └── DemoInstallationSpec.groovy │ │ │ └── java │ │ │ └── DemoInstallationTest.java │ │ └── integration │ │ │ └── groovy │ │ │ │ └── DemoIntegrationSpec.groovy │ │ │ └── java │ │ | └── DemoIntegrationTest.java │ │ └── resources │ │ └── application.properties │ │ └── GebConfig.groovy │ │ └── SpecHelper.groovy ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── build.gradle ├── gradlew └── gradlew.bat The generated project includes a gradlew wrapper which is a portable distribution of gradle. It allows you to easily build the project without any further tool installation other than java. You´ll find in the project following gradle artifacts: build.gradle (build definition) gradlew.bat gradlew gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle.properties gradle.properties is missing. This is on purpose, because you need to define it on your own by providing your nexus configuration. You´ll need to create gradle.properties yourself and add following properties: nexus_url= nexus_user= nexus_pw= If you do not want to use Nexus at all, just define the following property: no_nexus=true Run gradlew -v to verify the installed version of gradle wrapper. This project is generated by Gradle spock geb unirest Run command gradlew test in project directory to execute the end-to-end tests via spock/geb against the Google Home page and demo jUnit 5 tests. You will see the results inside a new folder 'build' in project directory. . └── build └── test-results ├── acceptance-groovy │ └── TEST-DemoAcceptance.xml ├── acceptance-java │ └── TEST-DemoAcceptanceTest.xml ├── installation-groovy │ └── TEST-DemoInstallation.xml ├── installation-java │ └── TEST-DemoInstallationTest.xml ├── integration-groovy │ └── TEST-DemoIntegration.xml └── integration-java └── TEST-DemoIntegrationTest.xml You can see how a Java Junit 5 test are developed showing the Demo*Test.java files. You can see how a Groovy Spock/Geb test are developed showing the Demo*Spec.groovy files. The url to test with Geb is configured in the property config.application.url inside application.properties Inside GebConfig.groovy you could change the default navigator (CHROME) The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile.template, there is the following stage: stageTest - Run the programed e2e test with this order: installation-java installation-groovy integration-java integration-groovy acceptance-java acceptance-groovy All the results are stashed and published through Jenkins jUnit publisher. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses the jdk Jenkins builder agent. NA","title":"End-to-end tests with Spock, Geb and Unirest (e2e-spock-geb)","component":"opendevstack","version":"5.x","name":"e2e-spock-geb","url":"/opendevstack/5.x/quickstarters/e2e-spock-geb.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Gradle Support","hash":"_gradle_support","id":3},{"text":"Gradle Artifacts","hash":"_gradle_artifacts","id":4},{"text":"Nexus configuration in gradle.properties","hash":"_nexus_configuration_in_gradle_properties","id":5},{"text":"Frameworks used","hash":"_frameworks_used","id":6},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":7},{"text":"Customization - how do you start to configure your test","hash":"_customization_how_do_you_start_to_configure_your_test","id":8},{"text":"How this quickstarter is built through jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":9},{"text":"Builder agent used","hash":"_builder_agent_used","id":10},{"text":"Known limitations","hash":"_known_limitations","id":11}]},"250":{"id":250,"text":"Angular quickstarter project User this is a Angular project quickstarter if you want to build a frontend. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift. . ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── README.md ├── angular.json - This file contains Angular project configuration settings ├── browserslist - This file is used by the build system to adjust CSS and JS output to support the specified browsers ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── karma.conf.js ├── package-lock.json - It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates. ├── package.json - This file contains scripts to run and node packages dependencies for project ├── metadata.yml - Component metadata ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json This project is generated by Angular CLI Angular CLI Angular TypeScript Run command npm install in project directory to install npm packages. Run ng serve --open command for dev server. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: description: \"My Angular-based front end\" supplier: https://example.com version: 1.0.1 type: ods role: frontend runtime: angular-cli runtimeVersion: 18.2.1 The build pipeline is defined in the Jenkinsfile in the project root. The main stages of the pipeline are: stageBuild - Builds the application by running npm install, npm run build command and copies output folder dist into docker/dist folder. stageUnitTest - Runs unit test cases by executing command npm run test. This will also create test coverage analysis data which will then be transfered to SonarQube during odsComponentStageScanWithSonar odsComponentStageScanWithSonar - Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and src/environments/** are excluded from the analysis, since they usually don’t contain logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. Please note: By default the applciation is always build as full production build including all sorts of optimizations. In addition source maps will be added except for builds that are triggered from master. This can be changed by configuring (additional) build configurations within angular.json and by using them via stageBuild or package.json. Please note: The support for TSLint has been removed from this quickstarter. Also Angular is not shipping a linter by default anymore. Please consider adding ESLint support or a formatter like Prettier. For adding ESLint simply type ng add @angular-eslint/schematics. For setting up Prettier please see https://prettier.io/docs/en/install.html. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. NA","title":"Frontend Angular (fe-angular)","component":"opendevstack","version":"5.x","name":"fe-angular","url":"/opendevstack/5.x/quickstarters/fe-angular.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known limitations","hash":"_known_limitations","id":8}]},"251":{"id":251,"text":"Ionic quickstarter project This quickstarter generates an Ionic 7.2.0 project, you can use it when you want to develop a cross platform mobile app (iOS, android and PWA) in one codebase using Web technologies like CSS, HTML and JavaScript/TypeScript. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift, so you have your CI/CD process out of the box. The files are generated using Ionic CLI. . ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── nginx.vh.default.conf.nginx ├── e2e │ ├── test.e2e-specs.ts │ └── tsconfig.json ├── src │ ├── app │ │ ├── home │ │ │ ├── home-routing.module.ts │ │ │ ├── home.module.ts │ │ │ ├── home.page.html │ │ │ ├── home.page.scss │ │ │ ├── home.page.spec.ts │ │ │ └── home.page.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ └── app.module.ts │ ├── assets │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── theme │ │ └── variables.scss │ ├── global.scss │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── test.ts │ └── zone-flags.ts ├── angular.json - This file contains Angular project configuration settings ├── capacitor.config.xml - This file contains config settings for your mobile app, like package name and native preferences ├── ionic.config.json - This file contains Ionic project configuration ├── Jenkinsfile - This file contains Jenkins build configuration settings ├── .pre-commit-config.yaml ├── karma.conf.js ├── metadata.yml - Component metadata ├── package.json - This file contains scripts to run and node packages dependencies for project ├── README.md ├── release-manager.yml - Configuration file for the Release Manager ├── sonar-project.properties - This file contains SonarQube configuration settings ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json Ionic CLI Ionic Framework Angular TypeScript As pre-requisite you’ll need to have installed: node npm which is bundled with the node installation git Ionic CLI globally in your local environment by running: npm install -g @ionic/cli Once you have you developer environment set up you can simply: Clone your generated git repository and cd to your folder Run command npm install in project directory to install npm dependencies. Run ionic serve command to start the dev server, it will open your browser at http://localhost:8100/ To develop an iOS application, you’ll need to setup your developer environment as suggested in this guide. For android support configure your environment like this guide. The following are typical metadata values that can be used for components based on this quickstarter: Note that the OpenShift resources will be labeled based on this metadata. name: Ionic component: frontend instance: description: \"Ionic Framework is the free, open source mobile UI toolkit for developing high-quality cross-platform apps for native iOS, Android, and the web—all from a single codebase. Technologies: Ionic 7.2.0\" supplier: https://ionicframework.com type: ods version: 7.2.0 The Jenkinsfile contains the configuration that customizes the core pipeline implemented by jenkins shared library. When the code in your git repository is updated the Jenkinsfile comes into action with the following main stages for this quickstarter: Build Installs Ionic CLI and the dependencies of your project with npm install and generates the build by running ionic build. If the merged git branch is master, it creates the production build with ionic build --prod. Finally, it copies the output folder ./www into ./docker/dist. Unit Test Runs unit test cases by executing npm run test command. If any test fails, the build is marked as failed. This will also create test coverage analysis data which will then be transfered to SonarQube. Lint Profiler that ensures code best practices by running npm run lint command, if linting is not passing, the build is marked as failed also. SonarQube Analysis Triggers a code quality analysis by transfering code and test coverage analysis data to SonarQube. By default files like .spec.ts, .modules.ts and ./src/environments/** are excluded from the analysis, since they usually don’t contain application logic. Please revisit sonar-project.properties to configure analysis inclusions and exclusions according to your project’s needs. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses Node.js 22 builder agent for Jenkins. Ionic Pro builds needs to be configured separately as described here","title":"Frontend Ionic (fe-ionic)","component":"opendevstack","version":"5.x","name":"fe-ionic","url":"/opendevstack/5.x/quickstarters/fe-ionic.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"Metadata","hash":"_metadata","id":5},{"text":"How this quickstarter is built thru Jenkins","hash":"_how_this_quickstarter_is_built_thru_jenkins","id":6},{"text":"Builder agent used","hash":"_builder_agent_used","id":7},{"text":"Known Limitation","hash":"_known_limitation","id":8}]},"252":{"id":252,"text":"Table of Contents Overview Available, official quickstarters Backend Quickstarter Frontend Quickstarter Data Science Quickstarter E2E Test Quickstarter Infrastructure Terraform Quickstarter ODS Contribution Quickstarter Authoring quickstarters Quickstarters are basically templates that help to start out with a component quickly. A quickstarter provides a specific technology, potentially with a framework setup already, such as Java with Springboot in the case of the be-java-springboot quickstarter. Compared to starting out from scratch, using a quickstarter typically helps by: setting up a repository in Bitbucket with webhooks to trigger Jenkins builds shipping a Jenkinsfile with a pipeline that builds and deploys the component (delegating most of the work to the shared library) providing a basic test setup with xUnit reports and code coverage integrating with SonarQube out-of-the-box (including code coverage report) setting up OpenShift resources to build and run the component creating a boilerplate application with one or more sample endpoints Quickstarters are used from the Provisioning App, which allows to add a component to an existing project by running a quickstarter from the configured list of available quickstarters. This list can contain quickstarters from the official repository, ods-quickstarters, or from some other repository such as internally hosted ones in your Bitbucket instance. Backend - Gateway/Nginx Backend - Go Backend - Java/SpringBoot Backend - TypeScript/Express Backend - Python/Flask Backend - Rust/Axum Backend - Scala/Play Frontend - Angular Mobile - Ionic Data Science - Jupyter Lab Data Science - R-Shiny Data Science Streamlit app E2E test - Cypress E2E test - Spock / Geb E2E test - ETL Python AWS deployments utilizing terraform tooling Azure deployments utilizing terraform tooling ODS Fork - Document Generation Service ODS Fork - Provisioning Application Next to those, there is a \"blank\" quickstarter (Docker/Plain) allowing to start from scratch, while still providing all the OCP resources / Jenkins / SonarQube conveniences. As mentioned above, it is possible to supply your own quickstarters. Pleasee see the authoring quickstarters guide on how to make completely new quickstarters or how to adapt existing quickstarters to your needs.","title":"OpenDevStack Quickstarters","component":"opendevstack","version":"5.x","name":"index","url":"/opendevstack/5.x/quickstarters/index.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Available, official quickstarters","hash":"_available_official_quickstarters","id":2},{"text":"Backend Quickstarter","hash":"_backend_quickstarter","id":3},{"text":"Frontend Quickstarter","hash":"_frontend_quickstarter","id":4},{"text":"Data Science Quickstarter","hash":"_data_science_quickstarter","id":5},{"text":"E2E Test Quickstarter","hash":"_e2e_test_quickstarter","id":6},{"text":"Infrastructure Terraform Quickstarter","hash":"_infrastructure_terraform_quickstarter","id":7},{"text":"ODS Contribution Quickstarter","hash":"_ods_contribution_quickstarter","id":8},{"text":"Authoring quickstarters","hash":"_authoring_quickstarters","id":9}]},"253":{"id":253,"text":"The project supports generation of AWS deployments utilizing terraform tooling. installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform resource which deploys a S3 bucket using AWS CloudFormation. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.json - This file describes parameters for the development AWS environment. │ ├── test.json - This file describes parameters for the test AWS environment. │ └── prod.json - This file describes parameters for the production AWS environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform AWS Quickstarter (inf-terraform-aws)","component":"opendevstack","version":"5.x","name":"inf-terraform-aws","url":"/opendevstack/5.x/quickstarters/inf-terraform-aws.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"254":{"id":254,"text":"The project supports generation of Azure deployments utilizing terraform tooling, installation and integration of it with OpenShift CD pipelines. The quickstarter comes with a sample terraform which deploys a resource group and a storage account via an ARM template. This is a showcase to elaborate the combination of both technologies. The quickstarter includes kitchen-terraform with Chef InSpec / cinc-auditor for testing. ├── Jenkinsfile - This file contains Jenkins stages. ├── .pre-commit-config.yaml ├── README.md ├── environments │ ├── dev.tfbackend.config - This file describes terraform backend parameters in the dev Azure subscription. │ ├── test.tfbackend.config - This file describes terraform backend parameters in the test Azure subscription. │ ├── prod.tfbackend.config - This file describes terraform backend parameters in the production Azure subscription. │ ├── dev.yml - This file describes credential parameters for the development environment. Values are names of secrets held in Jenkins. │ ├── test.yml - This file describes credential parameters for the test environment. Values are names of secrets held in Jenkins. │ ├── prod.yml - This file describes credential parameters for the producation environment. Values are names of secrets held in Jenkins. │ ├── dev.json - This file describes parameters for the development environment. │ ├── test.json - This file describes parameters for the test environment. │ └── prod.json - This file describes parameters for the production environment. ├── test - This folder contains the root for test-kitchen │ ├── fixtures/default - This folder contains the test case to deploy. │ └── integration/default/controls/ - This folder contains the test cases to test. terraform kitchen-terraform Ruby Chef-InSpec cinc-auditor Inject preferred tags into common-tags.tf, add/remove resources needed to main.tf. The Jenkinsfile is provisioned with this quickstarter to ease CI/CD process. In Jenkinsfile, there are various stages. include::partials$secret-scanning-with-gitleaks.adoc This quickstarter uses terraform Jenkins agent. Let us know if you find any, thanks!","title":"Infrastructure Terraform Azure Quickstarter (inf-terraform-azure)","component":"opendevstack","version":"5.x","name":"inf-terraform-azure","url":"/opendevstack/5.x/quickstarters/inf-terraform-azure.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / architecture is generated?","hash":"_what_files_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"255":{"id":255,"text":"The quickstarters include a skeleton metadata file metadata.yml. This file provides information about the component, but some metadata entries are also used to label the OpenShift resources created for the component. The following is a table with the supported metadata entries and the labels for which they are used: Entry key Meaning Example Label name The name of the software deployed in this component mongodb app.kubernetes.io/name description Description of the software deployed in this component MongoDB is a general-purpose document-based distributed database. supplier Supplier of the software deployed in this component https://www.mongodb.com/ version Version of the software deployed in this component 4.0.8 app.kubernetes.io/version type Type of OpenDevStack component ods-service app.opendevstack.org/type role Role this component plays in the architecture database app.kubernetes.io/component partOf Name of a higher-level application this component is part of my-online-shop app.kubernetes.io/part-of runtime The runtime this software runs on spring-boot app.openshift.io/runtime runtimeVersion The version of the runtime this software runs on 1.4.4.RELEASE app.openshift.io/runtime-version Detailed description of the supported metadata entries. It is strongly recommended to follow the guidelines for the entries that are used to label OpenShift resources. Moreover, OpenShift label values must meet the following restrictions: must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The values given in the metadata file will be sanitised to adhere to those restrictions, but it is recommended to use compliant values that need no sanitation. This is the software deployed in this component. There may be other instances of the same software in other components. For components of type ods, which are pieces of software developed as part of the project, this is recommended to be set to the component ID. For components of type ods-service, which are instances of some existing software, this is recommended to be set to a well-known id of the software being deployed. Suitable values for this label can be retrieved from Maven artifactId, Gradle project.name, docker image name, Helm {{ template \"name\" . }}… Examples: user-service, mongodb. This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the description of the software deployed in this component. Examples: \"User-management microservice\" or \"MongoDB is a general-purpose document-based distributed database\". The supplier of the software being deployed. Possible a web-page link. Example: https://www.mongodb.com/ This is the version of the software identified by the name entry. Example: 4.0.8 This metadata entry will be used as the value of the label app.kubernetes.io/version. The type of OpenDevStack component. Valid types are ods, ods-service, ods-test and ods-infra. When using the release manager, this value should match the type parameter for this component in the release manager metadata file. Example: ods-service This metadata entry will be used as the value of the label app.kubernetes.io/name. This is the role this component plays in the architecture. Example: database Any value can be set, but the following values are recommended: Value Meaning frontend Serves the UI or part of the UI for an application. backend Usually an application code that is running on a runtime or framework. database Data persistence. integration Integration middleware such as API gateways or single-sign-on software. cache Stores information from other components for performance purposes. queue Message queue, asynchronous communication component. Whenever one of these values is appropriate, it is recommended to use it. This metadata entry will be used as the value of the label app.kubernetes.io/component. The name of a higher level application this component is part of. This is used to group components as part of a higher-level application, when suitable. Example: you are building an online shop, and this component is part of it. You can set partOf: my-online-shop This metadata entry will be used as the value of the label app.kubernetes.io/part-of. The runtime to be used to bootstrap the component. There may be more than one runtime, so the most meaningful or specific one should be set here. A typical example is a Spring-Boot application. Both Spring Boot and the JRE are suitable runtimes, but the first one is chosen, as the JRE is implied by Spring Boot, but not the other way around. Other possible runtimes are nodejs, angularjs, etc. Suitable values can be taken from the runtime Maven artifactId, Gradle project.name, docker image name… Example: spring-boot This metadata entry will be used as the value of the label app.openshift.io/runtime. The version of the runtime. Suitable values can be taken from the runtime Maven version, Gradle project.version, docker image version tag… This label does not make sense, if runtime is not also specified. Example: 1.4.4.RELEASE This metadata entry will be used as the value of the label app.openshift.io/runtime-version.","title":"Component metadata","component":"opendevstack","version":"5.x","name":"metadata","url":"/opendevstack/5.x/quickstarters/metadata.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Detailed description","hash":"_detailed_description","id":2},{"text":"name","hash":"_name","id":3},{"text":"description","hash":"_description","id":4},{"text":"supplier","hash":"_supplier","id":5},{"text":"version","hash":"_version","id":6},{"text":"type","hash":"_type","id":7},{"text":"role","hash":"_role","id":8},{"text":"partOf","hash":"_partof","id":9},{"text":"runtime","hash":"_runtime","id":10},{"text":"runtimeVersion","hash":"_runtimeversion","id":11}]},"256":{"id":256,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-document-generation-svc None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc see https://github.com/opendevstack/ods-document-generation-svc N/A","title":"Contribution ODS Document Generation Service (ods-document-gen-svc)","component":"opendevstack","version":"5.x","name":"ods-document-gen-svc","url":"/opendevstack/5.x/quickstarters/ods-document-gen-svc.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"257":{"id":257,"text":"The purpose of this quickstarter is to create a fork from github/opendevstack/ods-document-generation-svc, so people can easily contribute. It will create a fork and push that into the newly created repository. none - clone from https://github.com/opendevstack/ods-provisioning-app None, except the ODS Jenkins Shared Library see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app see https://github.com/opendevstack/ods-provisioning-app N/A","title":"Contribution ODS Provisioning Application (ods-provisioning-app)","component":"opendevstack","version":"5.x","name":"ods-provisioning-app","url":"/opendevstack/5.x/quickstarters/ods-provisioning-app.html","titles":[{"text":"Purpose of this quickstarter","hash":"_purpose_of_this_quickstarter","id":1},{"text":"What files / which architecture is generated?","hash":"_what_files_which_architecture_is_generated","id":2},{"text":"Frameworks used","hash":"_frameworks_used","id":3},{"text":"Usage - how do you start after you provisioned this quickstarter","hash":"_usage_how_do_you_start_after_you_provisioned_this_quickstarter","id":4},{"text":"How this quickstarter is built through Jenkins","hash":"_how_this_quickstarter_is_built_through_jenkins","id":5},{"text":"Builder agent used","hash":"_builder_agent_used","id":6},{"text":"Known limitations","hash":"_known_limitations","id":7}]},"258":{"id":258,"text":"The release manager supports the orchestration of multiple repositories into a live application. . ├── docs # Fall-back document chapter templates for (LeVA) compliance reports. ├── Jenkinsfile # The release manager pipeline. ├── .pre-commit-config.yaml ├── README.md └── metadata.yml # Configuration of the release manager pipeline and its repositories. The release manager automatically resolves dependencies between repositories to be orchestrated so that they can be delivered in the correct order. Currently, repositories that want to be orchestrated need to be added to the repositories list inside metadata.yml: id: PHOENIX name: Project Phoenix repositories: - id: A - id: B name: my-repo-B - id: C For all repositories mentioned above (A, B, C) the library will resolve the default branch configured in each. If a named repository wants to announce a dependency on another repo, the dependency needs to be listed in that repository’s release-manager.yml, simply by referring to its repo.id as defined in metadata.yml: dependencies: - A The library supports the following repository types: ods, ods-service, and ods-test. Setting a repository type is required so the orchestrator can make correct assumptions based on the nature of the component at hand: id: PHOENIX name: Project Phoenix repositories: - id: A type: ods - id: B name: my-repo-B type: ods - id: C type: ods This type designates ODS components designed for code development. Such repositories are based on quickstarters whose names start with be-, ds-, or fe-, for backend, data science, and frontend, respectively. This is the default type. This type designates ODS components designed for running some service. Examples include repositories based on the be-gateway-nginx quickstarter. This type designates ODS components designed for running automated tests against a live application. Such repositories are based on quickstarters whose names start with e2e-. The release manager will attempt to resolve the repository URL based on the component’s origin remote URL and one of the following: 1) If the name parameter is provided, and not empty, the last path part of the URL is resolved to ${repo-name}.git. 2) If no name parameter is provided, the last path part of the URL is resolved to ${project-id}-${repo-id}.git (which is the repository name pattern used with OpenDevStack). Here ${project-id} refers to the lowercase value of the top-level id attribute in metadata.yml. id: PHOENIX name: Project Phoenix repositories: - id: B name: my-repo-B Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository B will resolve to https://github.com/my-org/my-repo-B.git, based on the value in repositories[0].name. id: PHOENIX name: Project Phoenix repositories: - id: C Assuming your release manager component’s origin at https://github.com/my-org/my-pipeline.git in this example, the Git URL for repository C will resolve to https://github.com/my-org/phoenix-C.git, based on the values in id and repositories[0].name. The default branch configured for the repository will be considered. Instead of merely resolving repositories into a strictly sequential execution model, the release manager automatically understands which repositories form independent groups and can run in parallel for best time-to-feedback and time-to-delivery. The release manager automatically generates Lean Validation (LeVA) compliance reports based on data in your Jira project, as well as data generated along the automated build, deploy, test, and release process. Note: when you configure a Jira service in metadata.yml, the release manager expects your Jira project (identified by id) to follow a specific structure. If your Jira project has not been set up by OpenDevStack lately, your structure will most likely be different. While we plan to support custom Jira setups in the future, you may disable the dependency on the Jira service entirely, as shown in the following example: services: bitbucket: credentials: id: my-bitbucket-credentials # jira: # credentials: # id: my-jira-credentials nexus: repository: name: leva-documentation In this case, the release manager will fall back to the document chapter templates located in the docs folder. Therein, you can provide chapter data to be loaded into the supported compliance documents. If you want your target environment to be created from an existing source environment such as dev or test on the fly, you need to provide the environment and sourceEnvironmentToClone parameters to your pipeline, respectively. Their values will be combined with your project ID in the form ${project-id}-${environment} to create the project (namespace) name in your OpenShift cluster. include::partials$secret-scanning-with-gitleaks.adoc","title":"Release Manager","component":"opendevstack","version":"5.x","name":"release-manager","url":"/opendevstack/5.x/quickstarters/release-manager.html","titles":[{"text":"File Structure","hash":"_file_structure","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Automated Resolution of Dependencies","hash":"_automated_resolution_of_dependencies","id":3},{"text":"Repository Type: ods","hash":"_repository_type_ods","id":4},{"text":"Repository Type: ods-service","hash":"_repository_type_ods_service","id":5},{"text":"Repository Type: ods-test","hash":"_repository_type_ods_test","id":6},{"text":"Automated Resolution of Repository Git URL","hash":"_automated_resolution_of_repository_git_url","id":7},{"text":"Example: Resolve Git URL for Repository 'B'","hash":"_example_resolve_git_url_for_repository_b","id":8},{"text":"Example: Resolve Git URL for Repository 'C'","hash":"_example_resolve_git_url_for_repository_c","id":9},{"text":"Automated Resolution of Repository Branch","hash":"_automated_resolution_of_repository_branch","id":10},{"text":"Automated Parallelization of Repositories","hash":"_automated_parallelization_of_repositories","id":11},{"text":"Automated Generation of Compliance Documents","hash":"_automated_generation_of_compliance_documents","id":12},{"text":"Automated Cloning of Environments","hash":"_automated_cloning_of_environments","id":13}]}},"components":{},"componentVersions":{"opendevstack/5.x":{"displayVersion":"5.x Preview","title":"OpenDevStack","version":"5.x","name":"opendevstack","prerelease":"Preview","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/5.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/5.x/jenkins-shared-library/index.html","urlType":"internal","items":[{"content":"Component Pipeline","url":"/opendevstack/5.x/jenkins-shared-library/component-pipeline.html","urlType":"internal"},{"content":"Orchestration Pipeline","url":"/opendevstack/5.x/jenkins-shared-library/orchestration-pipeline.html","urlType":"internal"},{"content":"Quickstarter Pipeline","url":"/opendevstack/5.x/jenkins-shared-library/quickstarter-pipeline.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/5.x/quickstarters/index.html","urlType":"internal","items":[{"content":"Docker Plain","url":"/opendevstack/5.x/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Gateway/Nginx","url":"/opendevstack/5.x/quickstarters/be-gateway-nginx.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/5.x/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java/Spring Boot","url":"/opendevstack/5.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE TypeScript/Express","url":"/opendevstack/5.x/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python/Flask","url":"/opendevstack/5.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Rust/Axum","url":"/opendevstack/5.x/quickstarters/be-rust-axum.html","urlType":"internal"},{"content":"BE Scala/Play","url":"/opendevstack/5.x/quickstarters/be-scala-play.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/5.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/5.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"Data Science Jupyter Lab","url":"/opendevstack/5.x/quickstarters/ds-jupyter-lab.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/5.x/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Data Science Streamlit app","url":"/opendevstack/5.x/quickstarters/ds-streamlit.html","urlType":"internal"},{"content":"Cypress E2E testing","url":"/opendevstack/5.x/quickstarters/e2e-cypress.html","urlType":"internal"},{"content":"ETL Python E2E testing","url":"/opendevstack/5.x/quickstarters/e2e-etl-python.html","urlType":"internal"},{"content":"Spock, Geb and Unirest E2E testing","url":"/opendevstack/5.x/quickstarters/e2e-spock-geb.html","urlType":"internal"},{"content":"INF Terraform AWS","url":"/opendevstack/5.x/quickstarters/inf-terraform-aws.html","urlType":"internal"},{"content":"INF Terraform AZURE","url":"/opendevstack/5.x/quickstarters/inf-terraform-azure.html","urlType":"internal"},{"content":"Release Manager","url":"/opendevstack/5.x/quickstarters/release-manager.html","urlType":"internal"},{"content":"Jenkins agent Images","items":[{"content":"Base Image","url":"/opendevstack/5.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Go","url":"/opendevstack/5.x/jenkins-agents/golang.html","urlType":"internal"},{"content":"terraform","url":"/opendevstack/5.x/jenkins-agents/inf-terraform.html","urlType":"internal"},{"content":"jdk","url":"/opendevstack/5.x/jenkins-agents/jdk.html","urlType":"internal"},{"content":"Node.js 16","url":"/opendevstack/5.x/jenkins-agents/nodejs16.html","urlType":"internal"},{"content":"Node.js 18","url":"/opendevstack/5.x/jenkins-agents/nodejs18.html","urlType":"internal"},{"content":"Node.js 20","url":"/opendevstack/5.x/jenkins-agents/nodejs20.html","urlType":"internal"},{"content":"Node.js 22","url":"/opendevstack/5.x/jenkins-agents/nodejs22.html","urlType":"internal"},{"content":"Python","url":"/opendevstack/5.x/jenkins-agents/python.html","urlType":"internal"},{"content":"Rust","url":"/opendevstack/5.x/jenkins-agents/rust.html","urlType":"internal"},{"content":"Scala","url":"/opendevstack/5.x/jenkins-agents/scala.html","urlType":"internal"}]},{"content":"Authoring Quickstarters","url":"/opendevstack/5.x/quickstarters/authoring-quickstarters.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/5.x/provisioning-app/index.html","urlType":"internal"}],"root":true,"order":2},{"items":[{"content":"Jenkins","url":"/opendevstack/5.x/jenkins/index.html","urlType":"internal","items":[{"content":"Jenkins Master","url":"/opendevstack/5.x/jenkins/master.html","urlType":"internal"},{"content":"Jenkins Agent Base","url":"/opendevstack/5.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Webhook Proxy","url":"/opendevstack/5.x/jenkins/webhook-proxy.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"SonarQube","url":"/opendevstack/5.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":4},{"items":[{"content":"Update Guides","items":[{"content":"Migrate to 4.x","url":"/opendevstack/5.x/update-guides/4x.html","urlType":"internal"},{"content":"Migrate to 3.x","url":"/opendevstack/5.x/update-guides/3x.html","urlType":"internal"},{"content":"Migrate to 2.x","url":"/opendevstack/5.x/update-guides/2x.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"Administration","items":[{"content":"Installation","url":"/opendevstack/5.x/administration/installation.html","urlType":"internal"},{"content":"Upgrade","items":[{"content":"Helm migration","url":"/opendevstack/5.x/administration/helm-migration.html","urlType":"internal"},{"content":"2.x to 3.x","url":"/opendevstack/5.x/administration/update-2-to-3.html","urlType":"internal"},{"content":"older","url":"/opendevstack/5.x/administration/update-older.html","urlType":"internal"}]},{"content":"Provisioning App","url":"/opendevstack/5.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Keycloak","url":"/opendevstack/5.x/administration/keycloak.html","urlType":"internal"},{"content":"SonarQube","url":"/opendevstack/5.x/sonarqube/administration.html","urlType":"internal"},{"content":"Nexus","url":"/opendevstack/5.x/nexus/administration.html","urlType":"internal"},{"content":"Jenkins","url":"/opendevstack/5.x/jenkins/administration.html","urlType":"internal"},{"content":"Image Lifecycles","url":"/opendevstack/5.x/administration/image-lifecycle.html","urlType":"internal"}]}],"root":true,"order":6},{"items":[{"content":"Contributing to ODS","items":[{"content":"Development","url":"/opendevstack/5.x/contributing/development.html","urlType":"internal"},{"content":"Documentation","url":"/opendevstack/5.x/contributing/documentation.html","urlType":"internal"},{"content":"Provisioning App","url":"/opendevstack/5.x/provisioning-app/architecture.html","urlType":"internal"}]}],"root":true,"order":7}]},"opendevstack/4.x":{"displayVersion":"4.x","title":"OpenDevStack","version":"4.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/latest/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/latest/jenkins-shared-library/index.html","urlType":"internal","items":[{"content":"Component Pipeline","url":"/opendevstack/latest/jenkins-shared-library/component-pipeline.html","urlType":"internal"},{"content":"Orchestration Pipeline","url":"/opendevstack/latest/jenkins-shared-library/orchestration-pipeline.html","urlType":"internal"},{"content":"Quickstarter Pipeline","url":"/opendevstack/latest/jenkins-shared-library/quickstarter-pipeline.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/latest/quickstarters/index.html","urlType":"internal","items":[{"content":"Docker Plain","url":"/opendevstack/latest/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Gateway/Nginx","url":"/opendevstack/latest/quickstarters/be-gateway-nginx.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/latest/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java/Spring Boot","url":"/opendevstack/latest/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE TypeScript/Express","url":"/opendevstack/latest/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python/Flask","url":"/opendevstack/latest/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Rust/Axum","url":"/opendevstack/latest/quickstarters/be-rust-axum.html","urlType":"internal"},{"content":"BE Scala/Play","url":"/opendevstack/latest/quickstarters/be-scala-play.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/latest/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/latest/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"Data Science Jupyter Lab","url":"/opendevstack/latest/quickstarters/ds-jupyter-lab.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/latest/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Data Science Streamlit app","url":"/opendevstack/latest/quickstarters/ds-streamlit.html","urlType":"internal"},{"content":"Cypress E2E testing","url":"/opendevstack/latest/quickstarters/e2e-cypress.html","urlType":"internal"},{"content":"ETL Python E2E testing","url":"/opendevstack/latest/quickstarters/e2e-etl-python.html","urlType":"internal"},{"content":"Spock, Geb and Unirest E2E testing","url":"/opendevstack/latest/quickstarters/e2e-spock-geb.html","urlType":"internal"},{"content":"INF Terraform AWS","url":"/opendevstack/latest/quickstarters/inf-terraform-aws.html","urlType":"internal"},{"content":"INF Terraform AZURE","url":"/opendevstack/latest/quickstarters/inf-terraform-azure.html","urlType":"internal"},{"content":"Release Manager","url":"/opendevstack/latest/quickstarters/release-manager.html","urlType":"internal"},{"content":"Jenkins agent Images","items":[{"content":"Base Image","url":"/opendevstack/latest/jenkins/agent-base.html","urlType":"internal"},{"content":"Go","url":"/opendevstack/latest/jenkins-agents/golang.html","urlType":"internal"},{"content":"terraform","url":"/opendevstack/latest/jenkins-agents/inf-terraform.html","urlType":"internal"},{"content":"jdk","url":"/opendevstack/latest/jenkins-agents/jdk.html","urlType":"internal"},{"content":"Node.js 16","url":"/opendevstack/latest/jenkins-agents/nodejs16.html","urlType":"internal"},{"content":"Node.js 18","url":"/opendevstack/latest/jenkins-agents/nodejs18.html","urlType":"internal"},{"content":"Node.js 20","url":"/opendevstack/latest/jenkins-agents/nodejs20.html","urlType":"internal"},{"content":"Node.js 22","url":"/opendevstack/latest/jenkins-agents/nodejs22.html","urlType":"internal"},{"content":"Python","url":"/opendevstack/latest/jenkins-agents/python.html","urlType":"internal"},{"content":"Rust","url":"/opendevstack/latest/jenkins-agents/rust.html","urlType":"internal"},{"content":"Scala","url":"/opendevstack/latest/jenkins-agents/scala.html","urlType":"internal"}]},{"content":"Authoring Quickstarters","url":"/opendevstack/latest/quickstarters/authoring-quickstarters.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/latest/provisioning-app/index.html","urlType":"internal"}],"root":true,"order":2},{"items":[{"content":"Jenkins","url":"/opendevstack/latest/jenkins/index.html","urlType":"internal","items":[{"content":"Jenkins Master","url":"/opendevstack/latest/jenkins/master.html","urlType":"internal"},{"content":"Jenkins Agent Base","url":"/opendevstack/latest/jenkins/agent-base.html","urlType":"internal"},{"content":"Webhook Proxy","url":"/opendevstack/latest/jenkins/webhook-proxy.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"SonarQube","url":"/opendevstack/latest/sonarqube/index.html","urlType":"internal"}],"root":true,"order":4},{"items":[{"content":"Update Guides","items":[{"content":"Migrate to 4.x","url":"/opendevstack/latest/update-guides/4x.html","urlType":"internal"},{"content":"Migrate to 3.x","url":"/opendevstack/latest/update-guides/3x.html","urlType":"internal"},{"content":"Migrate to 2.x","url":"/opendevstack/latest/update-guides/2x.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"Administration","items":[{"content":"Installation","url":"/opendevstack/latest/administration/installation.html","urlType":"internal"},{"content":"Upgrade","items":[{"content":"Helm migration","url":"/opendevstack/latest/administration/helm-migration.html","urlType":"internal"},{"content":"2.x to 3.x","url":"/opendevstack/latest/administration/update-2-to-3.html","urlType":"internal"},{"content":"older","url":"/opendevstack/latest/administration/update-older.html","urlType":"internal"}]},{"content":"Provisioning App","url":"/opendevstack/latest/provisioning-app/configuration.html","urlType":"internal"},{"content":"Keycloak","url":"/opendevstack/latest/administration/keycloak.html","urlType":"internal"},{"content":"SonarQube","url":"/opendevstack/latest/sonarqube/administration.html","urlType":"internal"},{"content":"Nexus","url":"/opendevstack/latest/nexus/administration.html","urlType":"internal"},{"content":"Jenkins","url":"/opendevstack/latest/jenkins/administration.html","urlType":"internal"},{"content":"Image Lifecycles","url":"/opendevstack/latest/administration/image-lifecycle.html","urlType":"internal"}]}],"root":true,"order":6},{"items":[{"content":"Contributing to ODS","items":[{"content":"Development","url":"/opendevstack/latest/contributing/development.html","urlType":"internal"},{"content":"Documentation","url":"/opendevstack/latest/contributing/documentation.html","urlType":"internal"},{"content":"Provisioning App","url":"/opendevstack/latest/provisioning-app/architecture.html","urlType":"internal"}]}],"root":true,"order":7}]},"opendevstack/3.x":{"displayVersion":"3.x","title":"OpenDevStack","version":"3.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/3.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/3.x/jenkins-shared-library/index.html","urlType":"internal","items":[{"content":"Component Pipeline","url":"/opendevstack/3.x/jenkins-shared-library/component-pipeline.html","urlType":"internal"},{"content":"Orchestration Pipeline","url":"/opendevstack/3.x/jenkins-shared-library/orchestration-pipeline.html","urlType":"internal"},{"content":"Quickstarter Pipeline","url":"/opendevstack/3.x/jenkins-shared-library/quickstarter-pipeline.html","urlType":"internal"}]}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/3.x/quickstarters/index.html","urlType":"internal","items":[{"content":"Docker Plain","url":"/opendevstack/3.x/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Gateway/Nginx","url":"/opendevstack/3.x/quickstarters/be-gateway-nginx.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/3.x/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java/Spring Boot","url":"/opendevstack/3.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE TypeScript/Express","url":"/opendevstack/3.x/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python/Flask","url":"/opendevstack/3.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Scala/Play","url":"/opendevstack/3.x/quickstarters/be-scala-play.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/3.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/3.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"Data Science Machine Learning Service","url":"/opendevstack/3.x/quickstarters/ds-ml-service.html","urlType":"internal"},{"content":"Data Science Jupyter Notebook","url":"/opendevstack/3.x/quickstarters/ds-jupyter-notebook.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/3.x/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Cypress E2E testing","url":"/opendevstack/3.x/quickstarters/e2e-cypress.html","urlType":"internal"},{"content":"Spock, Geb and Unirest E2E testing","url":"/opendevstack/3.x/quickstarters/e2e-spock-geb.html","urlType":"internal"},{"content":"Release Manager","url":"/opendevstack/3.x/quickstarters/release-manager.html","urlType":"internal"},{"content":"Jenkins agent Images","items":[{"content":"Base Image","url":"/opendevstack/3.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Go","url":"/opendevstack/3.x/jenkins-agents/golang.html","urlType":"internal"},{"content":"Maven","url":"/opendevstack/3.x/jenkins-agents/maven.html","urlType":"internal"},{"content":"Nodejs10 Angular","url":"/opendevstack/3.x/jenkins-agents/nodejs10-angular.html","urlType":"internal"},{"content":"Python","url":"/opendevstack/3.x/jenkins-agents/python.html","urlType":"internal"},{"content":"Scala","url":"/opendevstack/3.x/jenkins-agents/scala.html","urlType":"internal"}]},{"content":"Authoring Quickstarters","url":"/opendevstack/3.x/quickstarters/authoring-quickstarters.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/3.x/provisioning-app/index.html","urlType":"internal"}],"root":true,"order":2},{"items":[{"content":"Jenkins","url":"/opendevstack/3.x/jenkins/index.html","urlType":"internal","items":[{"content":"Jenkins Master","url":"/opendevstack/3.x/jenkins/master.html","urlType":"internal"},{"content":"Jenkins Agent Base","url":"/opendevstack/3.x/jenkins/agent-base.html","urlType":"internal"},{"content":"Webhook Proxy","url":"/opendevstack/3.x/jenkins/webhook-proxy.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"SonarQube","url":"/opendevstack/3.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":4},{"items":[{"content":"Update Guides","items":[{"content":"Migrate to 3.x","url":"/opendevstack/3.x/update-guides/3x.html","urlType":"internal"},{"content":"Migrate to 2.x","url":"/opendevstack/3.x/update-guides/2x.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"Administration","items":[{"content":"Installation","url":"/opendevstack/3.x/administration/installation.html","urlType":"internal"},{"content":"Upgrade","items":[{"content":"2.x to 3.x","url":"/opendevstack/3.x/administration/update-2-to-3.html","urlType":"internal"},{"content":"older","url":"/opendevstack/3.x/administration/update-older.html","urlType":"internal"}]},{"content":"Provisioning App","url":"/opendevstack/3.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Keycloak","url":"/opendevstack/3.x/administration/keycloak.html","urlType":"internal"},{"content":"SonarQube","url":"/opendevstack/3.x/sonarqube/administration.html","urlType":"internal"},{"content":"Jenkins","url":"/opendevstack/3.x/jenkins/administration.html","urlType":"internal"}]}],"root":true,"order":6},{"items":[{"content":"Contributing to ODS","items":[{"content":"Development","url":"/opendevstack/3.x/contributing/development.html","urlType":"internal"},{"content":"Documentation","url":"/opendevstack/3.x/contributing/documentation.html","urlType":"internal"},{"content":"Provisioning App","url":"/opendevstack/3.x/provisioning-app/architecture.html","urlType":"internal"}]}],"root":true,"order":7}]},"opendevstack/2.x":{"displayVersion":"2.x","title":"OpenDevStack","version":"2.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/2.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/2.x/jenkins-shared-library/index.html","urlType":"internal"}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/2.x/quickstarters/index.html","urlType":"internal","items":[{"content":"BE Docker Plain","url":"/opendevstack/2.x/quickstarters/docker-plain.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/2.x/quickstarters/be-golang-plain.html","urlType":"internal"},{"content":"BE Java / Spring Boot","url":"/opendevstack/2.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE Node Express","url":"/opendevstack/2.x/quickstarters/be-typescript-express.html","urlType":"internal"},{"content":"BE Python Flask","url":"/opendevstack/2.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Scala Akka","url":"/opendevstack/2.x/quickstarters/be-scala-akka.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/2.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/2.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"FE React","url":"/opendevstack/2.x/quickstarters/fe-react.html","urlType":"internal"},{"content":"FE Vue","url":"/opendevstack/2.x/quickstarters/fe-vue.html","urlType":"internal"},{"content":"Data Science Machine Learning Service","url":"/opendevstack/2.x/quickstarters/ds-ml-service.html","urlType":"internal"},{"content":"Data Science Jupyter Notebook","url":"/opendevstack/2.x/quickstarters/ds-jupyter-notebook.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/2.x/quickstarters/ds-rshiny.html","urlType":"internal"},{"content":"Airflow","url":"/opendevstack/2.x/quickstarters/airflow-cluster.html","urlType":"internal"},{"content":"Cypress E2E testing Quickstarters","url":"/opendevstack/2.x/quickstarters/e2e-cypress.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/2.x/provisioning-app/index.html","urlType":"internal","items":[{"content":"Configuration Guide","url":"/opendevstack/2.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Internal Architecture","url":"/opendevstack/2.x/provisioning-app/architecture.html","urlType":"internal"},{"content":"FAQ","url":"/opendevstack/2.x/provisioning-app/faq.html","urlType":"internal"},{"content":"Upgrade Notes","url":"/opendevstack/2.x/provisioning-app/upgrade_notes.html","urlType":"internal"}]}],"root":true,"order":2},{"items":[{"content":"Local Installation","url":"/opendevstack/2.x/local-installation.html","urlType":"internal","items":[{"content":"System and Environment Requirements","url":"/opendevstack/2.x/sysenv-requirements.html","urlType":"internal"},{"content":"Infrastructure Setup","url":"/opendevstack/2.x/infrastructure-setup.html","urlType":"internal"},{"content":"Troubleshooting","url":"/opendevstack/2.x/troubleshooting.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"Jenkins","url":"/opendevstack/2.x/jenkins/index.html","urlType":"internal","items":[{"content":"Webhook Proxy","url":"/opendevstack/2.x/jenkins/webhook-proxy.html","urlType":"internal"},{"content":"Jenkins Slave Base Image","url":"/opendevstack/2.x/jenkins/slave-base.html","urlType":"internal"}]}],"root":true,"order":4},{"items":[{"content":"SonarQube","url":"/opendevstack/2.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":5}]},"opendevstack/1.x":{"displayVersion":"1.x","title":"OpenDevStack","version":"1.x","name":"opendevstack","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"OpenDevStack","site-url":"https://www.opendevstack.org/ods-documentation"},"sourcemap":false},"url":"/opendevstack/1.x/getting-started/index.html","navigation":[{"items":[{"content":"Jenkins Shared Library","url":"/opendevstack/1.x/jenkins-shared-library/index.html","urlType":"internal"}],"root":true,"order":0},{"items":[{"content":"Quickstarters","url":"/opendevstack/1.x/quickstarters/index.html","urlType":"internal","items":[{"content":"BE Docker Plain","url":"/opendevstack/1.x/quickstarters/be-docker-plain.html","urlType":"internal"},{"content":"BE Golang","url":"/opendevstack/1.x/quickstarters/be-golang.html","urlType":"internal"},{"content":"BE Java / Spring Boot","url":"/opendevstack/1.x/quickstarters/be-java-springboot.html","urlType":"internal"},{"content":"BE Node Express","url":"/opendevstack/1.x/quickstarters/be-node-express.html","urlType":"internal"},{"content":"BE Python Flask","url":"/opendevstack/1.x/quickstarters/be-python-flask.html","urlType":"internal"},{"content":"BE Scala Akka","url":"/opendevstack/1.x/quickstarters/be-scala-akka.html","urlType":"internal"},{"content":"FE Angular","url":"/opendevstack/1.x/quickstarters/fe-angular.html","urlType":"internal"},{"content":"FE Ionic","url":"/opendevstack/1.x/quickstarters/fe-ionic.html","urlType":"internal"},{"content":"FE React","url":"/opendevstack/1.x/quickstarters/fe-react.html","urlType":"internal"},{"content":"FE Vue","url":"/opendevstack/1.x/quickstarters/fe-vue.html","urlType":"internal"},{"content":"Data Science Machine Learning Service","url":"/opendevstack/1.x/quickstarters/ds-ml-service.html","urlType":"internal"},{"content":"Data Science Jupyter Notebook","url":"/opendevstack/1.x/quickstarters/ds-jupyter-notebook.html","urlType":"internal"},{"content":"Data Science RShiny app","url":"/opendevstack/1.x/quickstarters/ds-rshiny-app.html","urlType":"internal"},{"content":"Airflow","url":"/opendevstack/1.x/quickstarters/airflow.html","urlType":"internal"},{"content":"Cypress E2E testing Quickstarters","url":"/opendevstack/1.x/quickstarters/e2e-cypress.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Provisioning App","url":"/opendevstack/1.x/provisioning-app/index.html","urlType":"internal","items":[{"content":"Configuration Guide","url":"/opendevstack/1.x/provisioning-app/configuration.html","urlType":"internal"},{"content":"Internal Architecture","url":"/opendevstack/1.x/provisioning-app/architecture.html","urlType":"internal"},{"content":"FAQ","url":"/opendevstack/1.x/provisioning-app/faq.html","urlType":"internal"},{"content":"Upgrade Notes","url":"/opendevstack/1.x/provisioning-app/upgrade_notes.html","urlType":"internal"}]}],"root":true,"order":2},{"items":[{"content":"Local Installation","url":"/opendevstack/1.x/local-installation.html","urlType":"internal","items":[{"content":"System and Environment Requirements","url":"/opendevstack/1.x/sysenv-requirements.html","urlType":"internal"},{"content":"Infrastructure Setup","url":"/opendevstack/1.x/infrastructure-setup.html","urlType":"internal"},{"content":"Troubleshooting","url":"/opendevstack/1.x/troubleshooting.html","urlType":"internal"}]}],"root":true,"order":3},{"items":[{"content":"Jenkins","url":"/opendevstack/1.x/jenkins/index.html","urlType":"internal","items":[{"content":"Webhook Proxy","url":"/opendevstack/1.x/jenkins/webhook-proxy.html","urlType":"internal"},{"content":"Jenkins Slave Base Image","url":"/opendevstack/1.x/jenkins/slave-base.html","urlType":"internal"}]}],"root":true,"order":4},{"items":[{"content":"Shared Images","items":[{"content":"OpenResty Base image + WAF","url":"/opendevstack/1.x/shared-images/openresty-nginx.html","urlType":"internal"},{"content":"Crowd Authproxy","url":"/opendevstack/1.x/shared-images/nginx-authproxy-crowd.html","urlType":"internal"}]}],"root":true,"order":5},{"items":[{"content":"SonarQube","url":"/opendevstack/1.x/sonarqube/index.html","urlType":"internal"}],"root":true,"order":6}]}}}}) \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 20a26008..623711bf 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -2,1034 +2,1034 @@ https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/helm-migration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/image-lifecycle.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/infrastructure-setup.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/installation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/keycloak.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/update-2-to-3.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/administration/update-older.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/contributing/development.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/contributing/documentation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/getting-started/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/golang.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/inf-terraform.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/jdk.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/nodejs16.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/nodejs18.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/nodejs20.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/nodejs22.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/python.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/rust.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-agents/scala.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-shared-library/component-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-shared-library/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-shared-library/labelling.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-shared-library/orchestration-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins-shared-library/quickstarter-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins/agent-base.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins/master.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/jenkins/webhook-proxy.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/nexus/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/nexus/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/ods-core/sysenv-requirements.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/ods-core/troubleshooting.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/provisioning-app/architecture.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/provisioning-app/configuration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/provisioning-app/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/authoring-quickstarters.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/be-gateway-nginx.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/be-golang-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/be-java-springboot.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/be-python-flask.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/be-rust-axum.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/be-scala-play.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/be-typescript-express.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/docker-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/ds-jupyter-lab.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/ds-rshiny.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/ds-streamlit.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/e2e-cypress.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/e2e-etl-python.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/e2e-spock-geb.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/fe-angular.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/fe-ionic.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/inf-terraform-aws.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/inf-terraform-azure.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/metadata.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/ods-document-gen-svc.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/ods-provisioning-app.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/quickstarters/release-manager.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/sonarqube/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/sonarqube/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/update-guides/2x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/update-guides/3x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/5.x/update-guides/4x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/administration/helm-migration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/administration/image-lifecycle.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/administration/infrastructure-setup.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/administration/installation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/administration/keycloak.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/administration/update-2-to-3.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/administration/update-older.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/contributing/development.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/contributing/documentation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/getting-started/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/golang.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/inf-terraform.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/jdk.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/nodejs16.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/nodejs18.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/nodejs20.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/nodejs22.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/python.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/rust.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-agents/scala.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/component-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/labelling.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/orchestration-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins-shared-library/quickstarter-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins/agent-base.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins/master.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/jenkins/webhook-proxy.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/nexus/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/nexus/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/ods-core/sysenv-requirements.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/ods-core/troubleshooting.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/provisioning-app/architecture.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/provisioning-app/configuration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/provisioning-app/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/authoring-quickstarters.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-gateway-nginx.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-golang-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-java-springboot.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-python-flask.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-rust-axum.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-scala-play.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/be-typescript-express.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/docker-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/ds-jupyter-lab.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/ds-rshiny.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/ds-streamlit.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/e2e-cypress.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/e2e-etl-python.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/e2e-spock-geb.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/fe-angular.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/fe-ionic.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/inf-terraform-aws.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/inf-terraform-azure.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/metadata.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/ods-document-gen-svc.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/ods-provisioning-app.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/quickstarters/release-manager.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/sonarqube/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/sonarqube/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/update-guides/2x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/update-guides/3x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/latest/update-guides/4x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/administration/infrastructure-setup.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/administration/installation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/administration/keycloak.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/administration/update-2-to-3.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/administration/update-older.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/contributing/development.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/contributing/documentation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/getting-started/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-agents/golang.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-agents/maven.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-agents/nodejs10-angular.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-agents/python.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-agents/scala.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-shared-library/component-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-shared-library/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-shared-library/orchestration-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins-shared-library/quickstarter-pipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins/agent-base.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins/master.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/jenkins/webhook-proxy.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/nexus/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/ods-core/sysenv-requirements.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/ods-core/troubleshooting.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/provisioning-app/architecture.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/provisioning-app/configuration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/provisioning-app/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/authoring-quickstarters.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/be-gateway-nginx.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/be-golang-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/be-java-springboot.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/be-python-flask.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/be-scala-play.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/be-typescript-express.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/docker-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/ds-jupyter-notebook.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/ds-ml-service.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/ds-rshiny.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/e2e-cypress.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/e2e-spock-geb.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/fe-angular.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/fe-ionic.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/ods-document-gen-svc.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/ods-provisioning-app.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/quickstarters/release-manager.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/sonarqube/administration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/sonarqube/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/update-guides/2x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/3.x/update-guides/3x.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/getting-started/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/infrastructure-setup.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins-shared-library/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins-shared-library/odsPipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins-shared-library/stageScanForSnyk.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins-shared-library/stageScanForSonarQube.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins-shared-library/stageStartOpenshiftBuild.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins/slave-base.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/jenkins/webhook-proxy.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/local-installation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/nexus/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/provisioning-app/architecture.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/provisioning-app/configuration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/provisioning-app/faq.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/provisioning-app/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/provisioning-app/upgrade_notes.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/airflow-cluster.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/be-golang-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/be-java-springboot.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/be-python-flask.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/be-scala-akka.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/be-typescript-express.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/docker-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/ds-jupyter-notebook.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/ds-ml-service.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/ds-rshiny.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/e2e-cypress.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/fe-angular.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/fe-ionic.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/fe-react.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/fe-vue.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/quickstarters/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/sonarqube/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/sysenv-requirements.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/2.x/troubleshooting.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/getting-started/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/infrastructure-setup.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins-shared-library/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins-shared-library/odsPipeline.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins-shared-library/stageScanForSnyk.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins-shared-library/stageScanForSonarQube.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins-shared-library/stageStartOpenshiftBuild.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins/slave-base.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/jenkins/webhook-proxy.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/local-installation.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/nexus/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/provisioning-app/architecture.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/provisioning-app/configuration.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/provisioning-app/faq.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/provisioning-app/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/provisioning-app/upgrade_notes.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/airflow.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/be-docker-plain.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/be-golang.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/be-java-springboot.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/be-node-express.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/be-python-flask.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/be-scala-akka.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/ds-jupyter-notebook.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/ds-ml-service.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/ds-rshiny-app.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/e2e-cypress.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/fe-angular.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/fe-ionic.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/fe-react.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/fe-vue.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/quickstarters/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/shared-images/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/shared-images/nginx-authproxy-crowd.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/shared-images/openresty-nginx.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/sonarqube/index.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/sysenv-requirements.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z https://www.opendevstack.org/ods-documentation/opendevstack/1.x/troubleshooting.html -2024-10-13T02:35:13.049Z +2024-10-14T02:34:13.021Z