WHO Clinical Care in Crisis Implementation Guide for Children
0.1.0 - ci-build

WHO Clinical Care in Crisis Implementation Guide for Children - Local Development build (v0.1.0). See the Directory of published versions

: subscapularSkinfoldForAge - XML Representation

Active as of 2023-10-04

Raw xml | Download



<Library xmlns="http://hl7.org/fhir">
  <id value="subscapularSkinfoldForAge"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><h2>Related Artifacts</h2><table class="grid"><tr><td>depends-on</td><td><a href="Library-anthrobase.html">anthrobase</a></td></tr><tr><td>depends-on</td><td><code>http://fhir.org/guides/who/anc-cds/Library/FHIRHelpers</code></td></tr></table><h2>Parameters</h2><table class="grid"><tr><td>zscore</td><td>in</td><td/><td/><td>decimal</td></tr><tr><td>Age</td><td>in</td><td/><td/><td>decimal</td></tr><tr><td>sex</td><td>in</td><td/><td/><td>decimal</td></tr><tr><td>generatesubscapularSkinfoldFromAge</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>generateZScoresubscapularSkinfoldForAge</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>ZscoresubscapularSkinfoldForAgetables_s</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>ZscoresubscapularSkinfoldForAgetables_m</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>ZscoresubscapularSkinfoldForAgetables_l</td><td>out</td><td/><td/><td>decimal</td></tr></table><h2>Data Requirements</h2><table class="grid"><tr><td colspan="2"><b>Type</b>: <a href="http://hl7.org/fhir/R4/patient.html">Patient</a> (<a href="http://hl7.org/fhir/R4/patient.html">Patient</a>)</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class="language-sql">
library subscapularSkinfoldForAge version '1.0.4'
using FHIR version '4.0.1'
include anthrobase version '1.0.4' called base
include FHIRHelpers version '4.0.1' called FHIRHelpers

// Antrho library for subscapularSkinfoldForAge  Z-Score from the ssanthro files
codesystem &quot;administrative-gender&quot;: 'http://hl7.org/fhir/administrative-gender'
//code &quot;Female&quot; : 'female' from &quot;administrative-gender&quot;  display 'Female'


define subscapularSkinfoldForAgeFemale:
{
	{y:91.0,l:-0.2019,s:0.18428,m:7.7874},
	{y:98.0,l:-0.2159,s:0.18428,m:7.7259},
	{y:105.0,l:-0.229,s:0.18429,m:7.6679},
	{y:112.0,l:-0.2414,s:0.18429,m:7.6129},
	{y:119.0,l:-0.2532,s:0.1843,m:7.5605},
	{y:126.0,l:-0.2644,s:0.1843,m:7.5103},
	{y:133.0,l:-0.2751,s:0.18429,m:7.462},
	{y:140.0,l:-0.2853,s:0.18429,m:7.4155},
	{y:147.0,l:-0.2951,s:0.18429,m:7.3707},
	{y:154.0,l:-0.3044,s:0.18428,m:7.3273},
	{y:161.0,l:-0.3135,s:0.18427,m:7.2853},
	{y:168.0,l:-0.3222,s:0.18427,m:7.2446},
	{y:175.0,l:-0.3306,s:0.18426,m:7.2052},
	{y:182.0,l:-0.3387,s:0.18426,m:7.167},
	{y:197.0,l:-0.3553,s:0.18424,m:7.0892},
	{y:227.0,l:-0.3854,s:0.18418,m:6.9493},
	{y:257.0,l:-0.4123,s:0.18406,m:6.8285},
	{y:287.0,l:-0.4366,s:0.18393,m:6.7244},
	{y:317.0,l:-0.4589,s:0.18384,m:6.6344},
	{y:347.0,l:-0.4795,s:0.18381,m:6.5563},
	{y:377.0,l:-0.4985,s:0.18386,m:6.4883},
	{y:407.0,l:-0.5164,s:0.184,m:6.4292},
	{y:437.0,l:-0.5331,s:0.18425,m:6.3775},
	{y:467.0,l:-0.5489,s:0.18459,m:6.3324},
	{y:497.0,l:-0.5639,s:0.18503,m:6.2929},
	{y:527.0,l:-0.5781,s:0.18556,m:6.2585},
	{y:557.0,l:-0.5916,s:0.18617,m:6.2287},
	{y:587.0,l:-0.6045,s:0.18687,m:6.2031},
	{y:617.0,l:-0.6169,s:0.18763,m:6.1811},
	{y:647.0,l:-0.6288,s:0.18845,m:6.1623},
	{y:677.0,l:-0.6402,s:0.18934,m:6.1462},
	{y:707.0,l:-0.6512,s:0.19027,m:6.1325},
	{y:737.0,l:-0.6618,s:0.19126,m:6.1209},
	{y:767.0,l:-0.672,s:0.19228,m:6.111},
	{y:797.0,l:-0.6819,s:0.19335,m:6.1027},
	{y:827.0,l:-0.6915,s:0.19445,m:6.0956},
	{y:857.0,l:-0.7008,s:0.19558,m:6.0896},
	{y:887.0,l:-0.7099,s:0.19674,m:6.0844},
	{y:917.0,l:-0.7186,s:0.19792,m:6.08},
	{y:947.0,l:-0.7272,s:0.19912,m:6.0762},
	{y:977.0,l:-0.7355,s:0.20033,m:6.073},
	{y:1007.0,l:-0.7436,s:0.20155,m:6.0703},
	{y:1037.0,l:-0.7514,s:0.20279,m:6.0681},
	{y:1067.0,l:-0.7591,s:0.20402,m:6.0664},
	{y:1097.0,l:-0.7667,s:0.20526,m:6.0651},
	{y:1127.0,l:-0.774,s:0.20651,m:6.0642},
	{y:1157.0,l:-0.7812,s:0.20775,m:6.0637},
	{y:1187.0,l:-0.7882,s:0.20899,m:6.0633},
	{y:1217.0,l:-0.7951,s:0.21022,m:6.0632},
	{y:1247.0,l:-0.8018,s:0.21145,m:6.0632},
	{y:1277.0,l:-0.8084,s:0.21267,m:6.0634},
	{y:1307.0,l:-0.8149,s:0.21389,m:6.0637},
	{y:1337.0,l:-0.8212,s:0.21509,m:6.0641},
	{y:1367.0,l:-0.8274,s:0.21628,m:6.0646},
	{y:1397.0,l:-0.8335,s:0.21746,m:6.0653},
	{y:1427.0,l:-0.8395,s:0.21862,m:6.066},
	{y:1457.0,l:-0.8454,s:0.21978,m:6.0668},
	{y:1487.0,l:-0.8512,s:0.22092,m:6.0678},
	{y:1517.0,l:-0.8569,s:0.22204,m:6.0688},
	{y:1547.0,l:-0.8624,s:0.22316,m:6.07},
	{y:1577.0,l:-0.8679,s:0.22426,m:6.0714},
	{y:1607.0,l:-0.8734,s:0.22534,m:6.0728},
	{y:1637.0,l:-0.8787,s:0.22641,m:6.0744},
	{y:1667.0,l:-0.8839,s:0.22746,m:6.0761},
	{y:1697.0,l:-0.8891,s:0.2285,m:6.0779},
	{y:1727.0,l:-0.8942,s:0.22953,m:6.0798},
	{y:1757.0,l:-0.8992,s:0.23053,m:6.0818},
	{y:1787.0,l:-0.9041,s:0.23153,m:6.0838},
	{y:1817.0,l:-0.909,s:0.23251,m:6.0859},
	{y:1847.0,l:-0.9138,s:0.23347,m:6.088}
}

define subscapularSkinfoldForAgeMale:
{
	{y:91.0,l:-0.303,s:0.17019,m:7.692},
	{y:98.0,l:-0.3089,s:0.17038,m:7.6458},
	{y:105.0,l:-0.3146,s:0.17055,m:7.6006},
	{y:112.0,l:-0.3202,s:0.17073,m:7.5566},
	{y:119.0,l:-0.3257,s:0.1709,m:7.5135},
	{y:126.0,l:-0.3311,s:0.17107,m:7.4713},
	{y:133.0,l:-0.3363,s:0.17123,m:7.43},
	{y:140.0,l:-0.3415,s:0.17139,m:7.3894},
	{y:147.0,l:-0.3466,s:0.17155,m:7.3497},
	{y:154.0,l:-0.3516,s:0.17171,m:7.3107},
	{y:161.0,l:-0.3565,s:0.17186,m:7.2724},
	{y:168.0,l:-0.3613,s:0.17201,m:7.2349},
	{y:175.0,l:-0.3661,s:0.17216,m:7.1981},
	{y:182.0,l:-0.3708,s:0.17231,m:7.162},
	{y:197.0,l:-0.3806,s:0.17261,m:7.087},
	{y:227.0,l:-0.3996,s:0.1732,m:6.9469},
	{y:257.0,l:-0.4177,s:0.17377,m:6.8195},
	{y:287.0,l:-0.4351,s:0.17431,m:6.7042},
	{y:317.0,l:-0.4519,s:0.17483,m:6.6006},
	{y:347.0,l:-0.4681,s:0.17534,m:6.5077},
	{y:377.0,l:-0.4839,s:0.17583,m:6.4249},
	{y:407.0,l:-0.4992,s:0.17631,m:6.3512},
	{y:437.0,l:-0.5141,s:0.17677,m:6.2856},
	{y:467.0,l:-0.5286,s:0.17723,m:6.2273},
	{y:497.0,l:-0.5429,s:0.17767,m:6.1755},
	{y:527.0,l:-0.5568,s:0.1781,m:6.1294},
	{y:557.0,l:-0.5704,s:0.17853,m:6.0882},
	{y:587.0,l:-0.5839,s:0.17895,m:6.0515},
	{y:617.0,l:-0.597,s:0.17936,m:6.0189},
	{y:647.0,l:-0.61,s:0.17976,m:5.9901},
	{y:677.0,l:-0.6227,s:0.18016,m:5.9646},
	{y:707.0,l:-0.6352,s:0.18055,m:5.942},
	{y:737.0,l:-0.6476,s:0.18093,m:5.9216},
	{y:767.0,l:-0.6598,s:0.18131,m:5.9031},
	{y:797.0,l:-0.6718,s:0.18169,m:5.8861},
	{y:827.0,l:-0.6836,s:0.18206,m:5.8702},
	{y:857.0,l:-0.6953,s:0.18242,m:5.8553},
	{y:887.0,l:-0.7069,s:0.18278,m:5.841},
	{y:917.0,l:-0.7183,s:0.18314,m:5.8272},
	{y:947.0,l:-0.7296,s:0.18349,m:5.8135},
	{y:977.0,l:-0.7408,s:0.18384,m:5.7997},
	{y:1007.0,l:-0.7519,s:0.18419,m:5.7858},
	{y:1037.0,l:-0.7628,s:0.18453,m:5.7717},
	{y:1067.0,l:-0.7736,s:0.18486,m:5.7572},
	{y:1097.0,l:-0.7844,s:0.1852,m:5.7424},
	{y:1127.0,l:-0.795,s:0.18553,m:5.7274},
	{y:1157.0,l:-0.8055,s:0.18586,m:5.7123},
	{y:1187.0,l:-0.8159,s:0.18618,m:5.6971},
	{y:1217.0,l:-0.8263,s:0.18651,m:5.6818},
	{y:1247.0,l:-0.8365,s:0.18683,m:5.6663},
	{y:1277.0,l:-0.8467,s:0.18714,m:5.6507},
	{y:1307.0,l:-0.8567,s:0.18746,m:5.6348},
	{y:1337.0,l:-0.8667,s:0.18777,m:5.6186},
	{y:1367.0,l:-0.8767,s:0.18808,m:5.6021},
	{y:1397.0,l:-0.8865,s:0.18838,m:5.5852},
	{y:1427.0,l:-0.8963,s:0.18869,m:5.568},
	{y:1457.0,l:-0.906,s:0.18899,m:5.5505},
	{y:1487.0,l:-0.9156,s:0.18929,m:5.5329},
	{y:1517.0,l:-0.9252,s:0.18959,m:5.5153},
	{y:1547.0,l:-0.9347,s:0.18989,m:5.4978},
	{y:1577.0,l:-0.9441,s:0.19018,m:5.4807},
	{y:1607.0,l:-0.9535,s:0.19047,m:5.4639},
	{y:1637.0,l:-0.9628,s:0.19076,m:5.4478},
	{y:1667.0,l:-0.972,s:0.19105,m:5.4323},
	{y:1697.0,l:-0.9812,s:0.19134,m:5.4176},
	{y:1727.0,l:-0.9903,s:0.19162,m:5.4036},
	{y:1757.0,l:-0.9994,s:0.19191,m:5.3904},
	{y:1787.0,l:-1.0085,s:0.19219,m:5.378},
	{y:1817.0,l:-1.0174,s:0.19247,m:5.3662},
	{y:1847.0,l:-1.0263,s:0.19275,m:5.3552}
}




define function ZscoresubscapularSkinfoldForAgetables(sex String, age Decimal):
	if sex = 'female' then  
        First(subscapularSkinfoldForAgeFemale c where c.y = base.AgeToMini(age) )
	else 
        First(subscapularSkinfoldForAgeMale c where  c.y = base.AgeToMini(age))
            
define function generateZScoresubscapularSkinfoldForAge(sex System.String, age System.Decimal, weight  System.Decimal)  : 
	 generateZScoresubscapularSkinfoldForAgedet(ZscoresubscapularSkinfoldForAgetables(sex,age), weight )

define function generateZScoresubscapularSkinfoldForAgedet(row Tuple {y System.Decimal,l System.Decimal,s System.Decimal,m System.Decimal}, weight  System.Decimal):
    if row is not null then 
        base.computeZScore(
            weight,
            row.m , 
            row.l ,
            row.s 
        )
    else null


define function generatesubscapularSkinfoldFromAge(sex System.String, age System.Decimal, zscore  System.Decimal) : 
	 generatesubscapularSkinfoldFromAgedet(ZscoresubscapularSkinfoldForAgetables(sex,age),zscore  )

define function generatesubscapularSkinfoldFromAgedet(row Tuple {y System.Decimal,l System.Decimal,s System.Decimal,m System.Decimal},zscore  System.Decimal) : 
    if row is not null then 
        base.computeReverseZScore(
            zscore,
            row.m , 
            row.l ,
            row.s 
        )
    else null    

    
</code></pre></div>
  </text>
  <url
       value="https://fhir.dk.swisstph-mis.ch/matchbox/fhir/Library/subscapularSkinfoldForAge"/>
  <version value="0.1.0"/>
  <name value="subscapularSkinfoldForAge"/>
  <status value="active"/>
  <type>
    <coding>
      <system value="http://hl7.org/fhir/ValueSet/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2023-10-04T12:32:21+00:00"/>
  <publisher value="WHO"/>
  <contact>
    <name value="WHO"/>
    <telecom>
      <system value="url"/>
      <value value="http://who.int"/>
    </telecom>
  </contact>
  <relatedArtifact>
    <type value="depends-on"/>
    <resource
              value="https://fhir.dk.swisstph-mis.ch/matchbox/fhir/Library/anthrobase"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <resource value="http://fhir.org/guides/who/anc-cds/Library/FHIRHelpers"/>
  </relatedArtifact>
  <parameter>
    <name value="zscore"/>
    <use value="in"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="Age"/>
    <use value="in"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="sex"/>
    <use value="in"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="generatesubscapularSkinfoldFromAge"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="generateZScoresubscapularSkinfoldForAge"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="ZscoresubscapularSkinfoldForAgetables_s"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="ZscoresubscapularSkinfoldForAgetables_m"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="ZscoresubscapularSkinfoldForAgetables_l"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <dataRequirement>
    <type value="Patient"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
  </dataRequirement>
  <content id="ig-loader-subscapularSkinfoldForAge.cql">
    <contentType value="text/cql"/>
    <data
          value="CmxpYnJhcnkgc3Vic2NhcHVsYXJTa2luZm9sZEZvckFnZSB2ZXJzaW9uICcxLjAuNCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBhbnRocm9iYXNlIHZlcnNpb24gJzEuMC40JyBjYWxsZWQgYmFzZQppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKCi8vIEFudHJobyBsaWJyYXJ5IGZvciBzdWJzY2FwdWxhclNraW5mb2xkRm9yQWdlICBaLVNjb3JlIGZyb20gdGhlIHNzYW50aHJvIGZpbGVzCmNvZGVzeXN0ZW0gImFkbWluaXN0cmF0aXZlLWdlbmRlciI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL2FkbWluaXN0cmF0aXZlLWdlbmRlcicKLy9jb2RlICJGZW1hbGUiIDogJ2ZlbWFsZScgZnJvbSAiYWRtaW5pc3RyYXRpdmUtZ2VuZGVyIiAgZGlzcGxheSAnRmVtYWxlJwoKCmRlZmluZSBzdWJzY2FwdWxhclNraW5mb2xkRm9yQWdlRmVtYWxlOgp7Cgl7eTo5MS4wLGw6LTAuMjAxOSxzOjAuMTg0MjgsbTo3Ljc4NzR9LAoJe3k6OTguMCxsOi0wLjIxNTksczowLjE4NDI4LG06Ny43MjU5fSwKCXt5OjEwNS4wLGw6LTAuMjI5LHM6MC4xODQyOSxtOjcuNjY3OX0sCgl7eToxMTIuMCxsOi0wLjI0MTQsczowLjE4NDI5LG06Ny42MTI5fSwKCXt5OjExOS4wLGw6LTAuMjUzMixzOjAuMTg0MyxtOjcuNTYwNX0sCgl7eToxMjYuMCxsOi0wLjI2NDQsczowLjE4NDMsbTo3LjUxMDN9LAoJe3k6MTMzLjAsbDotMC4yNzUxLHM6MC4xODQyOSxtOjcuNDYyfSwKCXt5OjE0MC4wLGw6LTAuMjg1MyxzOjAuMTg0MjksbTo3LjQxNTV9LAoJe3k6MTQ3LjAsbDotMC4yOTUxLHM6MC4xODQyOSxtOjcuMzcwN30sCgl7eToxNTQuMCxsOi0wLjMwNDQsczowLjE4NDI4LG06Ny4zMjczfSwKCXt5OjE2MS4wLGw6LTAuMzEzNSxzOjAuMTg0MjcsbTo3LjI4NTN9LAoJe3k6MTY4LjAsbDotMC4zMjIyLHM6MC4xODQyNyxtOjcuMjQ0Nn0sCgl7eToxNzUuMCxsOi0wLjMzMDYsczowLjE4NDI2LG06Ny4yMDUyfSwKCXt5OjE4Mi4wLGw6LTAuMzM4NyxzOjAuMTg0MjYsbTo3LjE2N30sCgl7eToxOTcuMCxsOi0wLjM1NTMsczowLjE4NDI0LG06Ny4wODkyfSwKCXt5OjIyNy4wLGw6LTAuMzg1NCxzOjAuMTg0MTgsbTo2Ljk0OTN9LAoJe3k6MjU3LjAsbDotMC40MTIzLHM6MC4xODQwNixtOjYuODI4NX0sCgl7eToyODcuMCxsOi0wLjQzNjYsczowLjE4MzkzLG06Ni43MjQ0fSwKCXt5OjMxNy4wLGw6LTAuNDU4OSxzOjAuMTgzODQsbTo2LjYzNDR9LAoJe3k6MzQ3LjAsbDotMC40Nzk1LHM6MC4xODM4MSxtOjYuNTU2M30sCgl7eTozNzcuMCxsOi0wLjQ5ODUsczowLjE4Mzg2LG06Ni40ODgzfSwKCXt5OjQwNy4wLGw6LTAuNTE2NCxzOjAuMTg0LG06Ni40MjkyfSwKCXt5OjQzNy4wLGw6LTAuNTMzMSxzOjAuMTg0MjUsbTo2LjM3NzV9LAoJe3k6NDY3LjAsbDotMC41NDg5LHM6MC4xODQ1OSxtOjYuMzMyNH0sCgl7eTo0OTcuMCxsOi0wLjU2MzksczowLjE4NTAzLG06Ni4yOTI5fSwKCXt5OjUyNy4wLGw6LTAuNTc4MSxzOjAuMTg1NTYsbTo2LjI1ODV9LAoJe3k6NTU3LjAsbDotMC41OTE2LHM6MC4xODYxNyxtOjYuMjI4N30sCgl7eTo1ODcuMCxsOi0wLjYwNDUsczowLjE4Njg3LG06Ni4yMDMxfSwKCXt5OjYxNy4wLGw6LTAuNjE2OSxzOjAuMTg3NjMsbTo2LjE4MTF9LAoJe3k6NjQ3LjAsbDotMC42Mjg4LHM6MC4xODg0NSxtOjYuMTYyM30sCgl7eTo2NzcuMCxsOi0wLjY0MDIsczowLjE4OTM0LG06Ni4xNDYyfSwKCXt5OjcwNy4wLGw6LTAuNjUxMixzOjAuMTkwMjcsbTo2LjEzMjV9LAoJe3k6NzM3LjAsbDotMC42NjE4LHM6MC4xOTEyNixtOjYuMTIwOX0sCgl7eTo3NjcuMCxsOi0wLjY3MixzOjAuMTkyMjgsbTo2LjExMX0sCgl7eTo3OTcuMCxsOi0wLjY4MTksczowLjE5MzM1LG06Ni4xMDI3fSwKCXt5OjgyNy4wLGw6LTAuNjkxNSxzOjAuMTk0NDUsbTo2LjA5NTZ9LAoJe3k6ODU3LjAsbDotMC43MDA4LHM6MC4xOTU1OCxtOjYuMDg5Nn0sCgl7eTo4ODcuMCxsOi0wLjcwOTksczowLjE5Njc0LG06Ni4wODQ0fSwKCXt5OjkxNy4wLGw6LTAuNzE4NixzOjAuMTk3OTIsbTo2LjA4fSwKCXt5Ojk0Ny4wLGw6LTAuNzI3MixzOjAuMTk5MTIsbTo2LjA3NjJ9LAoJe3k6OTc3LjAsbDotMC43MzU1LHM6MC4yMDAzMyxtOjYuMDczfSwKCXt5OjEwMDcuMCxsOi0wLjc0MzYsczowLjIwMTU1LG06Ni4wNzAzfSwKCXt5OjEwMzcuMCxsOi0wLjc1MTQsczowLjIwMjc5LG06Ni4wNjgxfSwKCXt5OjEwNjcuMCxsOi0wLjc1OTEsczowLjIwNDAyLG06Ni4wNjY0fSwKCXt5OjEwOTcuMCxsOi0wLjc2NjcsczowLjIwNTI2LG06Ni4wNjUxfSwKCXt5OjExMjcuMCxsOi0wLjc3NCxzOjAuMjA2NTEsbTo2LjA2NDJ9LAoJe3k6MTE1Ny4wLGw6LTAuNzgxMixzOjAuMjA3NzUsbTo2LjA2Mzd9LAoJe3k6MTE4Ny4wLGw6LTAuNzg4MixzOjAuMjA4OTksbTo2LjA2MzN9LAoJe3k6MTIxNy4wLGw6LTAuNzk1MSxzOjAuMjEwMjIsbTo2LjA2MzJ9LAoJe3k6MTI0Ny4wLGw6LTAuODAxOCxzOjAuMjExNDUsbTo2LjA2MzJ9LAoJe3k6MTI3Ny4wLGw6LTAuODA4NCxzOjAuMjEyNjcsbTo2LjA2MzR9LAoJe3k6MTMwNy4wLGw6LTAuODE0OSxzOjAuMjEzODksbTo2LjA2Mzd9LAoJe3k6MTMzNy4wLGw6LTAuODIxMixzOjAuMjE1MDksbTo2LjA2NDF9LAoJe3k6MTM2Ny4wLGw6LTAuODI3NCxzOjAuMjE2MjgsbTo2LjA2NDZ9LAoJe3k6MTM5Ny4wLGw6LTAuODMzNSxzOjAuMjE3NDYsbTo2LjA2NTN9LAoJe3k6MTQyNy4wLGw6LTAuODM5NSxzOjAuMjE4NjIsbTo2LjA2Nn0sCgl7eToxNDU3LjAsbDotMC44NDU0LHM6MC4yMTk3OCxtOjYuMDY2OH0sCgl7eToxNDg3LjAsbDotMC44NTEyLHM6MC4yMjA5MixtOjYuMDY3OH0sCgl7eToxNTE3LjAsbDotMC44NTY5LHM6MC4yMjIwNCxtOjYuMDY4OH0sCgl7eToxNTQ3LjAsbDotMC44NjI0LHM6MC4yMjMxNixtOjYuMDd9LAoJe3k6MTU3Ny4wLGw6LTAuODY3OSxzOjAuMjI0MjYsbTo2LjA3MTR9LAoJe3k6MTYwNy4wLGw6LTAuODczNCxzOjAuMjI1MzQsbTo2LjA3Mjh9LAoJe3k6MTYzNy4wLGw6LTAuODc4NyxzOjAuMjI2NDEsbTo2LjA3NDR9LAoJe3k6MTY2Ny4wLGw6LTAuODgzOSxzOjAuMjI3NDYsbTo2LjA3NjF9LAoJe3k6MTY5Ny4wLGw6LTAuODg5MSxzOjAuMjI4NSxtOjYuMDc3OX0sCgl7eToxNzI3LjAsbDotMC44OTQyLHM6MC4yMjk1MyxtOjYuMDc5OH0sCgl7eToxNzU3LjAsbDotMC44OTkyLHM6MC4yMzA1MyxtOjYuMDgxOH0sCgl7eToxNzg3LjAsbDotMC45MDQxLHM6MC4yMzE1MyxtOjYuMDgzOH0sCgl7eToxODE3LjAsbDotMC45MDksczowLjIzMjUxLG06Ni4wODU5fSwKCXt5OjE4NDcuMCxsOi0wLjkxMzgsczowLjIzMzQ3LG06Ni4wODh9Cn0KCmRlZmluZSBzdWJzY2FwdWxhclNraW5mb2xkRm9yQWdlTWFsZToKewoJe3k6OTEuMCxsOi0wLjMwMyxzOjAuMTcwMTksbTo3LjY5Mn0sCgl7eTo5OC4wLGw6LTAuMzA4OSxzOjAuMTcwMzgsbTo3LjY0NTh9LAoJe3k6MTA1LjAsbDotMC4zMTQ2LHM6MC4xNzA1NSxtOjcuNjAwNn0sCgl7eToxMTIuMCxsOi0wLjMyMDIsczowLjE3MDczLG06Ny41NTY2fSwKCXt5OjExOS4wLGw6LTAuMzI1NyxzOjAuMTcwOSxtOjcuNTEzNX0sCgl7eToxMjYuMCxsOi0wLjMzMTEsczowLjE3MTA3LG06Ny40NzEzfSwKCXt5OjEzMy4wLGw6LTAuMzM2MyxzOjAuMTcxMjMsbTo3LjQzfSwKCXt5OjE0MC4wLGw6LTAuMzQxNSxzOjAuMTcxMzksbTo3LjM4OTR9LAoJe3k6MTQ3LjAsbDotMC4zNDY2LHM6MC4xNzE1NSxtOjcuMzQ5N30sCgl7eToxNTQuMCxsOi0wLjM1MTYsczowLjE3MTcxLG06Ny4zMTA3fSwKCXt5OjE2MS4wLGw6LTAuMzU2NSxzOjAuMTcxODYsbTo3LjI3MjR9LAoJe3k6MTY4LjAsbDotMC4zNjEzLHM6MC4xNzIwMSxtOjcuMjM0OX0sCgl7eToxNzUuMCxsOi0wLjM2NjEsczowLjE3MjE2LG06Ny4xOTgxfSwKCXt5OjE4Mi4wLGw6LTAuMzcwOCxzOjAuMTcyMzEsbTo3LjE2Mn0sCgl7eToxOTcuMCxsOi0wLjM4MDYsczowLjE3MjYxLG06Ny4wODd9LAoJe3k6MjI3LjAsbDotMC4zOTk2LHM6MC4xNzMyLG06Ni45NDY5fSwKCXt5OjI1Ny4wLGw6LTAuNDE3NyxzOjAuMTczNzcsbTo2LjgxOTV9LAoJe3k6Mjg3LjAsbDotMC40MzUxLHM6MC4xNzQzMSxtOjYuNzA0Mn0sCgl7eTozMTcuMCxsOi0wLjQ1MTksczowLjE3NDgzLG06Ni42MDA2fSwKCXt5OjM0Ny4wLGw6LTAuNDY4MSxzOjAuMTc1MzQsbTo2LjUwNzd9LAoJe3k6Mzc3LjAsbDotMC40ODM5LHM6MC4xNzU4MyxtOjYuNDI0OX0sCgl7eTo0MDcuMCxsOi0wLjQ5OTIsczowLjE3NjMxLG06Ni4zNTEyfSwKCXt5OjQzNy4wLGw6LTAuNTE0MSxzOjAuMTc2NzcsbTo2LjI4NTZ9LAoJe3k6NDY3LjAsbDotMC41Mjg2LHM6MC4xNzcyMyxtOjYuMjI3M30sCgl7eTo0OTcuMCxsOi0wLjU0MjksczowLjE3NzY3LG06Ni4xNzU1fSwKCXt5OjUyNy4wLGw6LTAuNTU2OCxzOjAuMTc4MSxtOjYuMTI5NH0sCgl7eTo1NTcuMCxsOi0wLjU3MDQsczowLjE3ODUzLG06Ni4wODgyfSwKCXt5OjU4Ny4wLGw6LTAuNTgzOSxzOjAuMTc4OTUsbTo2LjA1MTV9LAoJe3k6NjE3LjAsbDotMC41OTcsczowLjE3OTM2LG06Ni4wMTg5fSwKCXt5OjY0Ny4wLGw6LTAuNjEsczowLjE3OTc2LG06NS45OTAxfSwKCXt5OjY3Ny4wLGw6LTAuNjIyNyxzOjAuMTgwMTYsbTo1Ljk2NDZ9LAoJe3k6NzA3LjAsbDotMC42MzUyLHM6MC4xODA1NSxtOjUuOTQyfSwKCXt5OjczNy4wLGw6LTAuNjQ3NixzOjAuMTgwOTMsbTo1LjkyMTZ9LAoJe3k6NzY3LjAsbDotMC42NTk4LHM6MC4xODEzMSxtOjUuOTAzMX0sCgl7eTo3OTcuMCxsOi0wLjY3MTgsczowLjE4MTY5LG06NS44ODYxfSwKCXt5OjgyNy4wLGw6LTAuNjgzNixzOjAuMTgyMDYsbTo1Ljg3MDJ9LAoJe3k6ODU3LjAsbDotMC42OTUzLHM6MC4xODI0MixtOjUuODU1M30sCgl7eTo4ODcuMCxsOi0wLjcwNjksczowLjE4Mjc4LG06NS44NDF9LAoJe3k6OTE3LjAsbDotMC43MTgzLHM6MC4xODMxNCxtOjUuODI3Mn0sCgl7eTo5NDcuMCxsOi0wLjcyOTYsczowLjE4MzQ5LG06NS44MTM1fSwKCXt5Ojk3Ny4wLGw6LTAuNzQwOCxzOjAuMTgzODQsbTo1Ljc5OTd9LAoJe3k6MTAwNy4wLGw6LTAuNzUxOSxzOjAuMTg0MTksbTo1Ljc4NTh9LAoJe3k6MTAzNy4wLGw6LTAuNzYyOCxzOjAuMTg0NTMsbTo1Ljc3MTd9LAoJe3k6MTA2Ny4wLGw6LTAuNzczNixzOjAuMTg0ODYsbTo1Ljc1NzJ9LAoJe3k6MTA5Ny4wLGw6LTAuNzg0NCxzOjAuMTg1MixtOjUuNzQyNH0sCgl7eToxMTI3LjAsbDotMC43OTUsczowLjE4NTUzLG06NS43Mjc0fSwKCXt5OjExNTcuMCxsOi0wLjgwNTUsczowLjE4NTg2LG06NS43MTIzfSwKCXt5OjExODcuMCxsOi0wLjgxNTksczowLjE4NjE4LG06NS42OTcxfSwKCXt5OjEyMTcuMCxsOi0wLjgyNjMsczowLjE4NjUxLG06NS42ODE4fSwKCXt5OjEyNDcuMCxsOi0wLjgzNjUsczowLjE4NjgzLG06NS42NjYzfSwKCXt5OjEyNzcuMCxsOi0wLjg0NjcsczowLjE4NzE0LG06NS42NTA3fSwKCXt5OjEzMDcuMCxsOi0wLjg1NjcsczowLjE4NzQ2LG06NS42MzQ4fSwKCXt5OjEzMzcuMCxsOi0wLjg2NjcsczowLjE4Nzc3LG06NS42MTg2fSwKCXt5OjEzNjcuMCxsOi0wLjg3NjcsczowLjE4ODA4LG06NS42MDIxfSwKCXt5OjEzOTcuMCxsOi0wLjg4NjUsczowLjE4ODM4LG06NS41ODUyfSwKCXt5OjE0MjcuMCxsOi0wLjg5NjMsczowLjE4ODY5LG06NS41Njh9LAoJe3k6MTQ1Ny4wLGw6LTAuOTA2LHM6MC4xODg5OSxtOjUuNTUwNX0sCgl7eToxNDg3LjAsbDotMC45MTU2LHM6MC4xODkyOSxtOjUuNTMyOX0sCgl7eToxNTE3LjAsbDotMC45MjUyLHM6MC4xODk1OSxtOjUuNTE1M30sCgl7eToxNTQ3LjAsbDotMC45MzQ3LHM6MC4xODk4OSxtOjUuNDk3OH0sCgl7eToxNTc3LjAsbDotMC45NDQxLHM6MC4xOTAxOCxtOjUuNDgwN30sCgl7eToxNjA3LjAsbDotMC45NTM1LHM6MC4xOTA0NyxtOjUuNDYzOX0sCgl7eToxNjM3LjAsbDotMC45NjI4LHM6MC4xOTA3NixtOjUuNDQ3OH0sCgl7eToxNjY3LjAsbDotMC45NzIsczowLjE5MTA1LG06NS40MzIzfSwKCXt5OjE2OTcuMCxsOi0wLjk4MTIsczowLjE5MTM0LG06NS40MTc2fSwKCXt5OjE3MjcuMCxsOi0wLjk5MDMsczowLjE5MTYyLG06NS40MDM2fSwKCXt5OjE3NTcuMCxsOi0wLjk5OTQsczowLjE5MTkxLG06NS4zOTA0fSwKCXt5OjE3ODcuMCxsOi0xLjAwODUsczowLjE5MjE5LG06NS4zNzh9LAoJe3k6MTgxNy4wLGw6LTEuMDE3NCxzOjAuMTkyNDcsbTo1LjM2NjJ9LAoJe3k6MTg0Ny4wLGw6LTEuMDI2MyxzOjAuMTkyNzUsbTo1LjM1NTJ9Cn0KCgoKCmRlZmluZSBmdW5jdGlvbiBac2NvcmVzdWJzY2FwdWxhclNraW5mb2xkRm9yQWdldGFibGVzKHNleCBTdHJpbmcsIGFnZSBEZWNpbWFsKToKCWlmIHNleCA9ICdmZW1hbGUnIHRoZW4gIAogICAgICAgIEZpcnN0KHN1YnNjYXB1bGFyU2tpbmZvbGRGb3JBZ2VGZW1hbGUgYyB3aGVyZSBjLnkgPSBiYXNlLkFnZVRvTWluaShhZ2UpICkKCWVsc2UgCiAgICAgICAgRmlyc3Qoc3Vic2NhcHVsYXJTa2luZm9sZEZvckFnZU1hbGUgYyB3aGVyZSAgYy55ID0gYmFzZS5BZ2VUb01pbmkoYWdlKSkKICAgICAgICAgICAgCmRlZmluZSBmdW5jdGlvbiBnZW5lcmF0ZVpTY29yZXN1YnNjYXB1bGFyU2tpbmZvbGRGb3JBZ2Uoc2V4IFN5c3RlbS5TdHJpbmcsIGFnZSBTeXN0ZW0uRGVjaW1hbCwgd2VpZ2h0ICBTeXN0ZW0uRGVjaW1hbCkgIDogCgkgZ2VuZXJhdGVaU2NvcmVzdWJzY2FwdWxhclNraW5mb2xkRm9yQWdlZGV0KFpzY29yZXN1YnNjYXB1bGFyU2tpbmZvbGRGb3JBZ2V0YWJsZXMoc2V4LGFnZSksIHdlaWdodCApCgpkZWZpbmUgZnVuY3Rpb24gZ2VuZXJhdGVaU2NvcmVzdWJzY2FwdWxhclNraW5mb2xkRm9yQWdlZGV0KHJvdyBUdXBsZSB7eSBTeXN0ZW0uRGVjaW1hbCxsIFN5c3RlbS5EZWNpbWFsLHMgU3lzdGVtLkRlY2ltYWwsbSBTeXN0ZW0uRGVjaW1hbH0sIHdlaWdodCAgU3lzdGVtLkRlY2ltYWwpOgogICAgaWYgcm93IGlzIG5vdCBudWxsIHRoZW4gCiAgICAgICAgYmFzZS5jb21wdXRlWlNjb3JlKAogICAgICAgICAgICB3ZWlnaHQsCiAgICAgICAgICAgIHJvdy5tICwgCiAgICAgICAgICAgIHJvdy5sICwKICAgICAgICAgICAgcm93LnMgCiAgICAgICAgKQogICAgZWxzZSBudWxsCgoKZGVmaW5lIGZ1bmN0aW9uIGdlbmVyYXRlc3Vic2NhcHVsYXJTa2luZm9sZEZyb21BZ2Uoc2V4IFN5c3RlbS5TdHJpbmcsIGFnZSBTeXN0ZW0uRGVjaW1hbCwgenNjb3JlICBTeXN0ZW0uRGVjaW1hbCkgOiAKCSBnZW5lcmF0ZXN1YnNjYXB1bGFyU2tpbmZvbGRGcm9tQWdlZGV0KFpzY29yZXN1YnNjYXB1bGFyU2tpbmZvbGRGb3JBZ2V0YWJsZXMoc2V4LGFnZSksenNjb3JlICApCgpkZWZpbmUgZnVuY3Rpb24gZ2VuZXJhdGVzdWJzY2FwdWxhclNraW5mb2xkRnJvbUFnZWRldChyb3cgVHVwbGUge3kgU3lzdGVtLkRlY2ltYWwsbCBTeXN0ZW0uRGVjaW1hbCxzIFN5c3RlbS5EZWNpbWFsLG0gU3lzdGVtLkRlY2ltYWx9LHpzY29yZSAgU3lzdGVtLkRlY2ltYWwpIDogCiAgICBpZiByb3cgaXMgbm90IG51bGwgdGhlbiAKICAgICAgICBiYXNlLmNvbXB1dGVSZXZlcnNlWlNjb3JlKAogICAgICAgICAgICB6c2NvcmUsCiAgICAgICAgICAgIHJvdy5tICwgCiAgICAgICAgICAgIHJvdy5sICwKICAgICAgICAgICAgcm93LnMgCiAgICAgICAgKQogICAgZWxzZSBudWxsICAgIAoKICAgIAo="/>
  </content>
</Library>